已更新 EXIM4,由于验证失败,现在不使用 TLS

已更新 EXIM4,由于验证失败,现在不使用 TLS

我有一台家庭服务器,并将系统驱动器更新为 SSD,因为 /home 和 /var 之前位于 USB 和 HDD 的组合中。由于 USB 位于 Debian 的先前版本中,因此我进行了全新安装,这也将 EXIM 升级到 4.95 版本,之前我使用的是 4.94.2 版本。

尽管智能主机配置相同,但要使用我的 ISP 的 SMTP 服务器,它不再使用 TLS 并出现验证错误。

/var/log/exim4/主日志:

2022-04-12 03:30:25 1ne6I7-000AHw-MF TLS session: (certificate verification failed): delivering unencrypted to H=<DOMAIN> [<IP>] (not in hosts_require_tls)

邮件仍以未加密形式接收,但现在我的 ISP 将来自 cron 作业的邮件标记为垃圾邮件。唯一的变化是邮件的标题Received从 变成了。因此,大概就是这个差异引起了额外的注意。with esmtpsa (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2)with esmtp (Exim 4.95)

我一直使用与上次安装相同的自签名密钥和证书(带有 2013 年的时间戳)。我还尝试生成一对新密钥和证书,但同样没有效果。

在网上搜索建议后,有人建议使用 letsencrypt 配置以便验证。我已经用过这个了,但它在 EXIM 中导致了同样的行为。

这是我的配置

/etc/exim4/update-exim4.conf.conf:

dc_eximconfig_configtype='smarthost'
dc_other_hostnames='<LOCAL DOMAIN>'
dc_local_interfaces='127.0.0.1 ; ::1'
dc_readhost=''
dc_relay_domains=''
dc_minimaldns='false'
dc_relay_nets=''
dc_smarthost='<ISP DOMAIN>:587'
CFILEMODE='644'
dc_use_split_config='true'
dc_hide_mailname='false'
dc_mailname_in_oh='true'
dc_localdelivery='maildir_home'

/etc/exim4/etc/exim4/conf.d/main/00_local_settings:

MAIN_TLS_ENABLE = yes
MAIN_TLS_CERTIFICATE = /etc/letsencrypt/live/<LOCAL DOMAIN>/fullchain.pem
MAIN_TLS_PRIVATEKEY = /etc/letsencrypt/live/<LOCAL DOMAIN>/privkey.pem

/etc/letsencrypt/archive/<本地域>/*15.*

-rw-r--r-- 1 root Debian-exim 1870 Mar 28 00:48 /etc/letsencrypt/archive/<LOCAL DOMAIN>/cert15.pem
-rw-r--r-- 1 root Debian-exim 3749 Mar 28 00:48 /etc/letsencrypt/archive/<LOCAL DOMAIN>/chain15.pem
-rw-r--r-- 1 root Debian-exim 5619 Mar 28 00:48 /etc/letsencrypt/archive/<LOCAL DOMAIN>/fullchain15.pem
-rw------- 1 root Debian-exim 1708 Mar 28 00:48 /etc/letsencrypt/archive/<LOCAL DOMAIN>/privkey15.pem

我还有/etc/exim4/passwd.client包含我的 SMTP 登录详细信息的文件,显然它可以发送邮件。

是一个指向我家 IP 地址的域名。

00_local_settings 中 letsencrypt 密钥的条目指向其指向当前版本的符号链接。在这些版本上,我更改了组所有权,以便 EXIM 可以看到私钥,但保留权限不变。

我之前的工作配置是相同的,但是使用了自签名exim.crtexim.key文件/etc/exim4,因此我的 00_local_settings 文件中没有后两行。

我也尝试过将 letsencrypt 文件复制到其中/etc/exim4并命名它们exim.cert,并exim.key使用相同的权限 640,且 00_local_settings 中没有任何内容,但这并没有改变任何东西。

特别令人恼火的是,作为最终测试,我只是删除了没有配置的密钥,看看会发生什么。我得到了同样的错误,所以我无法判断我使用的密钥是否存在问题,或者根本看不到它们。

答案1

我继续研究,并找到了某种答案。我不清楚正在验证谁的证书,我假设是我的证书,但后来意识到它可能是远程 SMTP 服务器的证书。

添加以下条目以/etc/exim4/etc/exim4/conf.d/main/00_local_settings禁用验证,允许使用 TLS。

REMOTE_SMTP_SMARTHOST_TLS_VERIFY_HOSTS = !*

这可以在消息头中确认,现在显示它已被接收with esmtpsa (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.95)

我认为这是之前发生的情况,并且自从我最初配置以来,Debian 或 Exim 已将默认设置更改为要求验证。

假设远程服务器使用自生成的证书则无法验证?

相关内容