筆記雖然下面的所有內容可能具有教育意義,但事實證明我的整個問題不在於 postfix,而在於我的 ISP。實際上,我在所討論的時間內更換了 ISP,而我的新 ISP 正在以一種明確破壞 STARTTLS 的方式攔截和重寫未加密的 SMTP 流量。我透過在連接埠 465 上設定僅 TLS 連線來解決該問題。
今天早些時候,STARTTLS 正在與我的系統配合使用。在我沒有以任何方式改變系統的情況下,它自然而然地崩潰了。我現在已經嘗試修復它幾個小時,但沒有成功。
當我連接到伺服器時,我得到的是:
savanni@Orolo:~$ telnet apps.savannidgerinel.com 25
Trying 129.121.182.135...
Connected to apps.sasavanni@Orolo:~$ telnet apps.savannidgerinel.com 25
Trying 129.121.182.135...
Connected to apps.savannidgerinel.com.
Escape character is '^]'.
220 ***********************************************
ehlo dude
250-apps.savannidgerinel.com
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-XXXXXXXA
250-AUTH PLAIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
^]close
telnet> close
Connection closed.
好的,顯然 STARTTLS 不存在於該列表中。所以我一直在挖掘我的配置文件並再次學習教程,但這對我沒有任何好處。這是我的 tls 相關配置:
smtp_tls_CAfile = /etc/ssl/certs/savannidgerinel_com_CA.pem
smtp_tls_cert_file = /etc/ssl/certs/apps.savannidgerinel.com.pem
smtp_tls_key_file = /etc/ssl/private/apps.savannidgerinel.com.key.pem
smtp_tls_security_level = may
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtpd_tls_CAfile = /etc/ssl/certs/savannidgerinel_com_CA.pem
smtpd_tls_cert_file = /etc/ssl/certs/apps.savannidgerinel.com.pem
smtpd_tls_key_file = /etc/ssl/private/apps.savannidgerinel.com.key.pem
smtpd_tls_loglevel = 3
smtpd_tls_received_header = yes
smtpd_tls_security_level = may
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
tls_random_source = dev:/dev/urandom
所有憑證檔案都存在,伺服器私鑰存在,伺服器 CA 存在,並且 smtpd_scache.db 和 smtp_scache.db 檔案都存在。所有這些都可供 postfix 使用者存取。說到這裡,以下是正在運行的進程:
savanni@apps:/var/lib/postfix$ ps aux | grep postfix
root 3525 0.0 0.1 25112 1680 ? Ss 20:19 0:00 /usr/lib/postfix/master
postfix 3526 0.0 0.1 27176 1524 ? S 20:19 0:00 pickup -l -t fifo -u -c -o content_filter= -o receive_override_options=no_header_body_checks
postfix 3527 0.0 0.1 27228 1552 ? S 20:19 0:00 qmgr -l -t fifo -u
postfix 3528 0.0 0.4 46948 4144 ? S 20:19 0:00 smtpd -n smtp -t inet -u -c -o stress= -s 2
postfix 3529 0.0 0.1 27176 1628 ? S 20:19 0:00 proxymap -t unix -u
postfix 3530 0.0 0.3 38212 3176 ? S 20:19 0:00 tlsmgr -l -t unix -u -c
postfix 3531 0.0 0.1 27176 1516 ? S 20:19 0:00 anvil -l -t unix -u -c
postfix 3535 0.0 0.1 27188 1544 ? S 20:20 0:00 trivial-rewrite -n rewrite -t unix -u -c
日誌檔案絕對沒有提及任何與 TLS 相關的內容,除了以下內容:
Nov 6 02:19:45 apps postfix/master[3525]: daemon started -- version 2.9.6, configuration /etc/postfix
Nov 6 02:19:49 apps postfix/smtpd[3528]: initializing the server-side TLS engine
Nov 6 02:19:49 apps postfix/tlsmgr[3530]: open smtpd TLS cache btree:/var/lib/postfix/smtpd_scache
Nov 6 02:19:49 apps postfix/tlsmgr[3530]: tlsmgr_cache_run_event: start TLS smtpd session cache cleanup
Nov 6 02:19:49 apps postfix/smtpd[3528]: connect from unknown[204.16.68.108]
syslog 和 mail.err 均未顯示任何問題跡象。就整個系統而言,一切都很好。但是沒有 STARTTLS 所以我突然無法發送任何根本沒有電子郵件。
幫助?
答案1
來自 main.cf
更多 tls 日誌記錄:
smtp_tls_note_starttls_offer = yes
註解掉或刪除:
smtp_tls_CAfile = /etc/ssl/certs/savannidgerinel_com_CA.pem
smtp_tls_cert_file = /etc/ssl/certs/apps.savannidgerinel.com.pem
smtp_tls_key_file = /etc/ssl/private/apps.savannidgerinel.com.key.pem
「除非必須向一台或多台伺服器提供客戶端TLS 證書,否則不要設定客戶端證書。通常不需要客戶端證書,並且在沒有客戶端證書的情況下可能會導致配置出現問題。建議的設定是保留預設值。
重新載入配置或重新啟動 postfix。
我測試了你的伺服器:
EHLO apps.savannidgerinel.com
250-apps.savannidgerinel.com
250-PIPELINING
250-SIZE 10240000
250-VRFY 250-ETRN
250-STARTTLS
250-AUTH PLAIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
它確實提供250-STARTTLS
。因此,有某種東西像代理一樣攔截了連接埠 25 上的流量。它可能是任何類型的防火牆或進階路由器,具有本機電腦連接的擴充功能。如果您沒有防火牆或進階路由器,您的 ISP 很可能會制定反垃圾郵件策略來防止來自其 IP 範圍的垃圾郵件。最糟的情況是有人在做中間人攻擊。