Ubuntu

後綴:驗證所有傳出 TLS 連接是否已正確建立

  • July 30, 2018

我的任務是設置在 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]

為什麼Google不提供 TLS?我很困惑…

你坐在防火牆後面嗎?

如果是,請檢查您是否正在使用 ESMTP 檢查規則。從 global_policy 中刪除此規則可能會有所幫助。

我將您的 Postfix 配置與工作配置進行了比較,發現您的配置失去了smtp_use_tls = yes

根據這個 postfix 郵件列表文章,smtp_* 條目作為發件人適用於您的 SMTP 伺服器,而以 smtp d_* 開頭的條目作為****收件人適用於您的 SMTP 伺服器。看來您的問題僅限於作為發件人的 SMTP 伺服器。

我還找到了這個 Postfix 文件,它指出smtp_use_tls預設情況下設置為“否”。

所以我建議設置smtp_use_tls = yes,看看是否有任何作用。如果不是,也許其他 smtp_* 設置可能是問題所在。

編輯:應該在較新版本的 Postfix 中smtp_use_tls被覆蓋。smtp_tls_security_level我注意到您沒有提及您的 Postfix 版本,但這可能僅在它早於 2.3 時才有幫助。

引用自:https://serverfault.com/questions/881550