使用 postfix 拒绝非 SSL/TLS 连接

使用 postfix 拒绝非 SSL/TLS 连接

我知道配置设置 smtpd_tls_security_level在哪里加密要求通过 SSL/TLS 进行传入 smtpd 连接,并且可能仅仅是对安全连接的一种偏好。

我想知道的是:

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

注意...我正在使用:

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

答案1

是的,您的 Postfix 将拒绝传入连接并生成 SMTP 错误,这会导致该错误消息返回给原始发件人。通常,SMTP 错误是纯文本,限制了非技术发件人对它们的理解/学习程度。
注意:手册坚决不提倡这种做法:

您可以通过设置 强制使用 TLS,以便 Postfix SMTP 服务器宣布 STARTTLS 并且不接受没有 TLS 加密的邮件smtpd_tls_security_level = encrypt。根据 RFC 2487,对于公开引用的 Postfix SMTP 服务器,不得应用此设置。此选项默认关闭,应很少使用。

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

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

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 <[email protected]>; Tue, 7 Oct 2014 00:39:06 +0200

编辑: 要让 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)

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

答案2

如果您设置了 smtpd_tls_security_level = encrypt,并且发送邮件的服务器无法协商 TLS 会话,则发送服务器有责任通过未送达报告电子邮件通知发件人。不这样做的服务器简直是太糟糕了。在收件人的服务器上执行此操作是不可能的,因为 SSL/TLS 故障发生在您甚至不知道电子邮件的发件人或收件人之前。

相关内容