在SMTP上STARTTLS sendmail握手失败并重试

我想优雅地处理sendmail STARTTLS握手失败。 在外发邮件上,最好是在没有STARTTLS的情况下立即重试。 在入站邮件,理想情况下,引起握手失败的网站将被列入白名单,以便将来不使用STARTTLS,但我意识到这可能不切实际。

作为这种专用环境的替代方法,默认不使用STARTTLS的方法,只指定将为入站和/或出站邮件提供STARTTLS的特定站点/域可能就足够了。 任何build议感激。 谢谢。

对不起,坏消息是AFAIK,sendmail并没有提供这样的粒度。 对于出站邮件,默认情况下,这意味着一个简单的三步机会主义格式:

  1. 检查远程下游MTA是否支持STARTTLS
  2. 如果远端支持,则继续协商STARTTLS连接。
  3. 如果远程端不支持STARTTLS ,请继续清除SMTP通信。

不幸的是,没有一个“回退”逻辑 – 如果远程方广告TLS支持,sendmail假定它可以/应该使用它。 因此,如果在步骤2中发生问题,消息队列和sendmail稍后再试。

如果你想禁用STARTTLS逻辑,你需要利用try_tls规则集( 在这里描述)。