我在 Debian 上运行 Postfix 作为小型 LAN 的 MX,并试图让SMTPS通过端口 587 与 mobile.charter.net 一起工作。我按照谷歌的一些链接进行了设置,并在serverfault上发布了类似的帖子问题。我尝试发送几封电子邮件,但在邮件日志中收到有关“初始服务器问候”的错误:
Nov 17 03:39:14 edgemx postfix/smtp[30355]: 9B39AA4: to=<[email protected]>, relay=mobile.charter.net[47.43.18.12]:587, delay=473, delays=173/0.03/300/0, dsn=4.4.2, status=deferred (conversation with mobile.charter.net[47.43.18.12] timed out while receiving the initial server greeting)
我在发送时在端口 587 上运行了tcpdump,但我没有看到 Postfix 和 Charter 之间发生证书传输。大概有三个 SYN 数据包,仅此而已。如果我在客户端模式下使用openssl进行连接,tcpdump流量会有很大不同,我可以看到发生证书传输。
openssl s_client -connect mobile.charter.net:587
有谁知道怎么回事?什么是 openssl 做 Postfix 不是?main.cf中的相关 SASL/SSL 编辑如下。
主文件
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/relayhost_passwd
smtp_sasl_security_options = noanonymous
smtp_use_tls = yes
smtp_tls_security_level = encrypt
relayhost = [mobile.charter.net]:587
smtp_tls_mandatory_ciphers = high
relayhost_passwd 文件(postmap'd 已经)
[mobile.charter.net]:587 [email protected]:sUp3rS3kr1t
您尝试访问的远程邮件服务器配置错误。
在端口 587 上,邮件服务器应该以纯文本形式回复,并期望发件人发送 STARTTLS 命令以开始 TLS 协商。
该邮件服务器不这样做。相反,它会立即进行 TLS 协商(隐式 TLS)。这是端口 465 的预期行为(它的行为完全相同,对于该端口是正确的)。
您可以通过设置解决此损坏的行为
smtp_tls_wrappermode
:还可以考虑将端口从 587 更改为 465(您仍然需要添加上述设置),因为当邮件服务器管理员修复他们的错误配置时,您的传递将再次中断。