我已经使用 Postfixmail.myserver.com
超过 15 年,成功接收和发送邮件。使用 Let's Encrypt 时,所有证书都完全有效。我可以用它们来openssl s_client -connect mail.myserver.com:25 -starttls smtp
验证 STARTTLS 和端口 465 上的 SSL 的类似测试,以验证它们是否正常。
我这样说是为了证明这不是一个新的设置,除了这个单一实例之外,一切似乎都设置正确且运行顺利。
考虑到所有这些,我发现自己无法接收来自特定供应商(我的医疗服务提供商!)的电子邮件。查看 postfix 日志,我看到如下行:
postfix/smtpd[2016]: connect from mail1.static.mydoctor.com[xxx.xx.xx.xxx]
postfix/smtpd[2016]: SSL_accept error from mail1.static.mydoctor.com[xxx.xx.xx.xxx]: 0
postfix/smtpd[2016]: warning: TLS library problem: 2016:error:14094412:SSL routines:ssl3_read_bytes:sslv3 alert bad certificate:s3_pkt.c:1493:SSL alert number 42:
postfix/smtpd[2016]: lost connection after STARTTLS from mail1.static.mydoctor.com[xxx.xx.xx.xxx]
postfix/smtpd[2016]: disconnect from mail1.static.mydoctor.com[xxx.xx.xx.xxx]
这告诉我mail1.static.mydoctor.com
邮件服务器正在尝试通过 STARTTLS 连接到我,mail.myserver.com
但提供的证书有问题,所以我的 postfix 拒绝连接。如果我的解释不正确,请告诉我!
我确实需要接收这些特定的电子邮件,即使发件人做错了。在这种情况下,什么样的解决方法可能有效?有没有办法放松证书检查以允许坏证书?或者也许将特定远程服务器列入白名单,以便接受它发送的任何内容?还有别的吗?
答案1
... sslv3 alert bad certificate:s3_pkt.c:1493:SSL alert number 42:
这告诉我 mail1.static.mydoctor.com 邮件服务器正在尝试通过 STARTTLS 连接到我的 mail.myserver.com,但提供了一个错误的证书,所以我的 postfix 拒绝该连接。
这是错误的解释。日志中的“警告证书错误”表示您的服务器已收到来自发送方 MTA 的此警告,因为发送方 MTA 无法验证您的证书。也就是说,这不是发送方提供了错误的证书,而是您的服务器提供了发送方不会接受的证书。
不清楚发件人 MTA 无法验证您的证书的原因。这可能是您这边的设置问题,也可能是发件人的设置问题。