Postfix:验证所有传出的 TLS 连接是否已正确建立

Postfix:验证所有传出的 TLS 连接是否已正确建立

我的任务是设置在 Ubuntu 上运行的 Postfix 服务器。电子邮件通过我的中继发送,一切似乎都很好,只是我似乎无法让 TLS 与 Gmail 或其他邮件客户端配合使用。例如,请查看我的 main.cf 文件的 TLS 输出:

# TLS parameters

smtpd_tls_cert_file=/etc/ssl/certs/company.com.crt
smtpd_tls_key_file=/etc/ssl/private/company.com.key
smtpd_tls_CAfile=/etc/ssl/certs/gd_bundle.crt
smtp_tls_CApath=/etc/ssl/certs
smtpd_use_tls=yes
smtpd_tls_auth_only=yes
smtpd_tls_security_level=may
smtp_tls_security_level=may
smtp_tls_loglevel=1
smtpd_tls_loglevel=1
smtp_tls_note_starttls_offer=yes
smtpd_tls_session_cache_database=btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database=btree:${data_directory}/smtp_scache

# See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for
# information on enabling SSL in the smtp client.

我已通过 Telnet 完成以下操作来验证 STARTTLS:

Connected to localhost.
Escape character is '^]'.
220 prod-email.company.local ESMTP Postfix (Ubuntu)
EHLO localhost
250-prod-email.company.local
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-STARTTLS
250-ENHANCEDSTATUSCODES
250-8BITMIME
250-DSN
250 SMTPUTF8
STARTTLS
220 2.0.0 Ready to start TLS

我还在日志中看到 TLS 建立了与许多其他中继/交换服务器的连接(除了这些示例之外还有很多):

Nov  2 11:08:58 prod-email postfix/smtp[7864]: Trusted TLS connection established to mx2-us1.ppe-hosted.com[67.231.154.163]:25: TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)
Nov  2 11:22:23 prod-email postfix/smtp[8672]: Trusted TLS connection established to mail.relaissanmaurizio.it[194.209.228.112]:25: TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)
Nov  2 11:22:25 prod-email postfix/smtp[8689]: Trusted TLS connection established to mail.relaissanmaurizio.it[194.209.228.112]:25: TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)
Nov  2 11:31:06 prod-email postfix/smtp[8676]: Trusted TLS connection established to mx1-us1.ppe-hosted.com[148.163.129.50]:25: TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)
Nov  2 11:51:13 prod-email postfix/smtp[9165]: Trusted TLS connection established to mail.relaissanmaurizio.it[194.209.228.112]:25: TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)
Nov  2 11:51:15 prod-email postfix/smtp[9229]: Trusted TLS connection established to mail.relaissanmaurizio.it[194.209.228.112]:25: TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)

我还在 /var/log/mail.log 中看到了某个客户的这些奇怪的日志:

454 4.7.0 Connection is not TLS encrypted. Recipient organization requires TLS.

我似乎正在提供用于发送邮件的 TLS,这怎么可能呢?至少根据上面的日志 (TLS 连接已建立) 看起来是这样。

我的问题是,为什么我没有看到这些与 Gmail 服务器或上例中的服务器建立的 TLS 连接?我仍然在通过此中继服务器发送的 Gmail 上收到小红锁,表示它未被加密。而且我的一些邮件被推迟,因为它说连接不是 TLS 加密的?

我如何验证 TLS 是否正常工作,以及所有发送的电子邮件是否都使用 TLS 加密并发送给接受 TLS 协议的人?

非常感谢任何人的帮助。

此致

编辑:

 openssl s_client -connect localhost:25 -starttls smtp

 STARTTLS
 554 5.5.1 Error: TLS already active

没有给我有关我的证书的任何错误。

Gmail 和 Outlook 的电子邮件标题也不显示 TLS 加密。

我很茫然...

更新:我刚刚尝试通过更新正在使用的证书来使其正常工作(通配符证书无论如何将在 12 月到期),但 TLS 仍然无法正常工作。请帮忙。

更新:我还尝试强制使用 gmail 的 TLS,但出现以下错误:

TLS is required, but was not offered by host alt1.gmail-smtp-in.l.google.com[74.125.192.27]

为什么谷歌不提供 TLS?我很困惑...

答案1

您是否位于防火墙后面?

如果是,请检查您是否正在使用 ESMTP 检查规则。从 global_policy 中删除此规则可能会有所帮助。

答案2

我将您的 Postfix 配置与工作配置进行了比较,发现您的配置缺少smtp_use_tls = yes

根据这个 postfix 邮件列表帖子,smtp_* 条目适用于您的 SMTP 服务器,作为发件人,而以 smtp 开头的条目d_* 应用于您的 SMTP 服务器作为接受者。看来您的问题仅限于您的 SMTP 服务器发件人

我还发现这个 Postfix 文档,表明smtp_use_tls默认设置为“否”。

因此我建议设置smtp_use_tls = yes,看看是否有用。如果没有用,也许其他 smtp_* 设置可能有问题。

编辑:smtp_use_tls应该在较新版本的 Postfix 中被覆盖smtp_tls_security_level。我注意到您没有提到您的 Postfix 版本,但这可能仅在版本早于 2.3 时才有用。

答案3

从 Cisco 防火墙全局策略中删除 ESMTP 为我们解决了这个问题。ESMTP 在 Cisco 防火墙中默认启用。

相关内容