我在将邮件转发到通过 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=S
CLIENT_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