我有一台家庭服务器,并将系统驱动器更新为 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.crt
和exim.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 已将默认设置更改为要求验证。
假设远程服务器使用自生成的证书则无法验证?