笔记虽然下面的所有内容可能具有教育意义,但事实证明,我遇到的整个问题并不出在 postfix 上,而出在我的 ISP 上。实际上,我在当时更换了 ISP,而我的新 ISP 正在拦截和重写未加密的 SMTP 流量,这种方式明确破坏了 STARTTLS。我通过在端口 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 范围。最坏的情况是有人在做中间人攻击。