让 postfix 将 SMTP/SSL/TLS 中继到 Charter/Spectrum

让 postfix 将 SMTP/SSL/TLS 中继到 Charter/Spectrum

我在 Debian 上运行 Postfix 作为小型局域网的 MX,并尝试让 SMTPS 与mobile.chart.net通过端口 587。我按照谷歌上的几个链接进行设置,并附上一篇关于服务器故障有类似的问题。我尝试发送了几封电子邮件,但收到此错误“初始服务器问候”在邮件日志中:

 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)

我跑了一个tcpdump在发送时在端口 587 上,我没有看到 Postfix 和 Charter 之间发生证书传输。有三个 SYN 数据包,仅此而已。如果我使用openssl在客户端模式下进行连接,tcpdump流量有很大不同,我可以看到证书转移的发生。

openssl s_client -connect mobile.charter.net:587

有人知道发生了什么吗?OpenSSL 做了什么,而 Postfix 没有?相关的 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 处理)

[mobile.charter.net]:587      [email protected]:sUp3rS3kr1t

答案1

您尝试访问的远程邮件服务器配置错误。

在端口 587 上,邮件服务器应以纯文本形式答复,并期望发送者发送 STARTTLS 命令来开始 TLS 协商。

此邮件服务器不会执行此操作。相反,它会立即进行 TLS 协商(隐式 TLS)。这是端口 465 的预期行为(它在该端口上的行为完全相同,这对于该端口来说是正确的)。

您可以通过设置来解决此问题smtp_tls_wrappermode

smtp_tls_wrappermode = yes

还要考虑将端口从 587 更改为 465(您仍然需要添加上述设置),因为当邮件服务器管理员修复其错误配置时,您的邮件传递会再次中断。

相关内容