sendmail 作为客户端时不发出 STARTTLS

sendmail 作为客户端时不发出 STARTTLS

我在将邮件转发到通过 mimecast 路由的服务器时遇到问题。连接被拒绝,并显示以下消息:

553 This route requires encryption (TLS) - https://community.mimecast.com/docs/DOC-1369#553

这让我想到,配置了证书并在充当服务器时通告 STARTTLS 的 sendmail 未在正确的时间发送 STARTTLS(或者根本没有发送)。这是传输失败的踪迹:

>>220 zzz.mimecast.com ESMTP; Thu, 16 Jun 2022 11:55:55 +0200
>>> EHLO rigel-170.orion.it
250-zzz.mimecast.com Hello [212.115.64.170]
250-AUTH PLAIN LOGIN
250-STARTTLS
250 HELP
>>> MAIL From:<[email protected]>
250 Sender OK [R9SDNpJCMqeqqffSnRQQeg.de46]
>>> RCPT To:<[email protected]>
553 This route requires encryption (TLS) - https://community.mimecast.com/docs/DOC-1369#553 [R9SDNpJCMqeqqffSnRQQeg.de46]
>>> DATA
503 Illegal command sequence - https://community.mimecast.com/docs/DOC-1369#503 [R9SDNpJCMqeqqffSnRQQeg.de46]

我要补充一点,同一台服务器作为 smtps 服务器运行时没有任何问题(表明证书方面没有问题),并且提交邮件程序定期发送 STARTTLS(我可以在日志中看到 STARTTLS=client。)但是,这是我在那里见过的唯一的 =client(表明 sendmail 在充当其他服务器的客户端时实际上并没有发送 STARTTLS)

我尝试了 SRV_Features、Try_TLS、TLS_Clt、TLS_Srv 和 TLS_Rcpt 的几种组合,但都无济于事。到目前为止,我在访问映射中留下的唯一 TLS 指令是:

Try_TLS: Yes

我还在 sendmail.mc 中配置了客户端证书

我不知道下一步该尝试什么。

编辑

我刚刚发现了以下情况(使问题更加复杂)。

我配置了(由于黑名单问题)与默认主机名/地址不同的主机名/地址(地址和主机名均已在 DNS 中正确注册)。我使用以下代码进行配置:

CLIENT_OPTIONS(`M=S,Addr=a.b.c.d')dnl
define(`confDOMAIN_NAME', `fubar.it')dnl

如果注释掉这两行,starttls 就会按预期发出(通过跟踪 SMTP 会话可以看到)。这似乎没有任何意义。

编辑2:根据评论,罪魁祸首是M=SCLIENT_OPTIONS 行中的位(很久以前从某个地方撕下来的)。“S”表示“关闭 STARTTLS”,将其更改为M=s即可。作为参考,这些是 sm 14.4 中守护进程/客户端选项中标志的含义:

 ON  OFF     Meaning
 a   A       Offer the AUTH SMTP extension
 b   B       Offer use of the SMTP VERB command
 d   D       Offer the DSN SMTP extension
 e   E       Offer the ETRN SMTP extension
 l   L       Require the client to authenticate with AUTH
 p   P       Offer the PIPELINING SMTP extension
 s   S       Offer the STARTTLS SMTP extension
 v   V       Verify a client certificate
 x   X       Offer use of the SMTP EXPN ...

此致,

答案1

据我了解,S标志会CLIENT_OPTIONS关闭STARTTLS支持。

CLIENT_OPTIONS(`M=S,Addr=a.b.c.d')dnl

相关内容