我想妥善处理 sendmail STARTTLS 握手失败。对于外发邮件,如果发生失败,最好立即重试而不使用 STARTTLS。对于入站邮件,理想情况下,导致握手失败的站点将被列入白名单,以便将来不使用 STARTTLS,尽管我意识到这可能不切实际。
作为此专业环境中的替代方案,默认不使用 STARTTLS,并仅指定将为入站和/或出站邮件提供 STARTTLS 的特定站点/域的方法目前可能就足够了。欢迎提出任何建议。谢谢。
答案1
很抱歉给大家带来坏消息,但据我所知,sendmail 不提供这种级别的粒度。对于出站邮件,默认情况下这意味着一个简单的三步机会格式:
- 检查远程下游 MTA 是否公布支持
STARTTLS
。 - 如果远端确实宣布支持,则继续协商
STARTTLS
连接。 - 如果远端确实不是宣传对 的支持
STARTTLS
,以明文形式继续 SMTP 通信。
不幸的是,没有“后退”逻辑——如果远程方宣传 TLS 支持,sendmail 会假定它可以/应该使用它。因此,如果在步骤 2 中出现问题,则消息会排队,sendmail 稍后会再次尝试。
如果你想禁用该 STARTTLS 逻辑,你需要利用try_tls
规则集(已描述这里)。