Postfix 和 TLS 配置正确,但 Thunderbird 在尝试通过 SMTP 和 STARTTLS 发送电子邮件时抛出神秘错误?

Postfix 和 TLS 配置正确,但 Thunderbird 在尝试通过 SMTP 和 STARTTLS 发送电子邮件时抛出神秘错误?

我最近第一次安装了 CentOS 5.5 和 Postfix。

我已遵循 2 个不同的教程,它们应该在 SMTP 服务器上启用 TLS。这两个教程都告诉我创建密钥和证书、编辑配置、通过 telnet 连接测试服务器。

一切看起来都应该正常工作。当我使用 telnet 连接时,服务器会通告我可以使用 STARTTLS 连接。我已为端口 25 和 465 打开了防火墙。SELinux 已禁用(不确定这是否会造成干扰)。

当我尝试在 Thunderbird 中启用 STARTTLS 发送电子邮件时,出现以下错误:

发送邮件时出错:邮件服务器发送了错误的问候语:无法连接到 SMTP 服务器 192.168.0.9(192.168.0.9:465),连接错误 10061。

按下“确定”后,我又收到另一条不太有用的消息:

发送消息失败。无法发送消息,因为在交易过程中与 SMTP 服务器 cinc.centos 的连接丢失。请重试或联系您的网络管理员。

我已经在 Google 上搜索了一天,并且一直在研究配置时间。但我完全没有找到解决办法。我尝试过在 Google 上搜索错误消息,或者只是搜索错误代码,但找不到任何有用的信息。

但是……SMTP 服务器在没有任何 TLS 加密的情况下也能正常工作!因此错误肯定是加密引起的,因此错误消息中提到了端口 465。

为了帮助大家,我发布了我的 TLS 部分主配置文件

smtp_tls_note_starttls_offer = 是
smtpd_tls_received_header = 是
smtpd_sasl_local_domain = cinc.centos
smtpd_sasl_auth_enable = 是
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = 是 smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination
smtpd_tls_security_level = 可能
smtpd_tls_key_file = /etc/pki/tls/private/cinc.centos.key
smtpd_tls_cert_file = /etc/pki/tls/certs/cinc.centos.cert
smtpd_tls_loglevel = 1
smtpd_tls_session_cache_timeout = 3600 秒
smtpd_tls_session_cache_database = btree:/var/spool/postfix/smtpd_tls_cache
tls_random_source = dev:/dev/urandom

我是如此迷茫整个事情都这样!我自己根本无法解决这个问题...有人能给我指明正确的方向吗?

太感谢了!!

奥利·特林德

答案1

使用 openssl 进行调试。

openssl s_client -host localhost -starttls smtp

答案2

我在 Thunderbird 连接 Postfix 时也遇到了同样的问题(Thunderbird 显示“ The mail server sent an incorrect greeting: 5.7.1”)。对于我来说,这个问题可以通过更改来解决,/etc/postfix/master.cf而不是读取:

-o smtpd_client_restrictions=permit_sasl_authenticated,reject

..内容如下:

-o smtpd_client_restrictions=permit
-o smtpd_sender_restrictions=permit_sasl_authenticated,reject
-o smtpd_recipient_restrictions=permit_sasl_authenticated,reject

Postfix 在进行身份验证之前就拒绝了 Thunderbird 的连接。

答案3

您必须在 main.cf 中添加 mynetworks 条目以允许您测试的 IP 进行连接。如果您尝试从本地主机连接,则应配置 mynetworks = localhostIP。postfix 重新加载和/或 postfix 重新启动并再次测试。

相关内容