使用 postfix 拒绝非 SSL/TLS 连接

hun*_*ter 1 postfix

我知道的配置设置smtpd_tls_security_level其中加密需要输入的smtpd的连接通过SSL / TLS来完成,而可能仅仅是安全连接的偏好。

我想知道的是:

  • 在严格加密的情况下(即smtpd_tls_security_level = encrypt),并且进行传入连接的服务器不支持 SSL/TLS,是否有办法通过电子邮件向被拒绝的电子邮件的发件人发送电子邮件以告知失败的原因?
  • smtpd_tls_security_level = may的情况下,是否有一种方法可以识别传入连接的类型(即 SSL/TLS 或纯文本)。如果可以将此信息发送到用于电子邮件管道的处理程序脚本,那将特别有用

注释...我正在使用:

  • Centos
  • 后缀
  • Plesk(可能不相关)
  • 电子邮件管道

HBr*_*ijn 5

是的,您的 Postfix 将拒绝传入连接并生成 SMTP 错误,这将导致该错误消息返回给原始发件人。通常,SMTP 错误是纯文本,限制了非技术发件人可以理解/学习的程度。
注意手册中,坚决不鼓励使用该选项:

您可以强制使用 TLS,以便 Postfix SMTP 服务器通过设置smtpd_tls_security_level = encrypt. 根据 RFC 2487,这不得应用于公开引用的 Postfix SMTP 服务器。此选项默认关闭,应该很少使用。

轶事证据似乎表明它确实有助于抵御垃圾邮件,但我还没有看到有多少常见域仍然不支持 TLS 以及因此有多少真实邮件将被拒绝的数字。

我手头没有 Postfix 部署,但我希望您的 SMTP 标头已经提供有关传入连接是否像 sendmail 那样通过 SSL/TLS 的信息,例如

Received: from mail.example.org (mail.example.org[192.168.0.1])
    by example.com (8.14.4/8.14.4) with ESMTP id s96Md0B2019727
    (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=FAIL)
    for <address@example.com>; Tue, 7 Oct 2014 00:39:06 +0200
Run Code Online (Sandbox Code Playgroud)

编辑: 在 Postfix 中记录该信息需要smtpd_tls_received_header = yesmain.cf配置文件中进行设置,并会产生类似的标题:

Received: from host.example.com (host.example.com [192.168.0.2])
    (using TLSv1 with cipher cipher-name
    (actual-key-size/raw-key-size bits))
    (No client certificate requested)
Run Code Online (Sandbox Code Playgroud)

只有您自己的邮件基础设施(端点)的标头信息才应被视为可信,其他标头可以在传输过程中修改。