Dovecot SSL-IMAP 有效,SMTP 失败

Dovecot SSL-IMAP 有效,SMTP 失败

我正在使用 postfix+dovecot 设置一个小型邮件服务器。运行oppenssl s_client -connect mail.myserver.com:993(IMAP) 时,会显示服务器的证书,并且我能够让电子邮件客户端正常连接。

但是,当我将端口更改为25(SMTP)时,出现错误 SSL routines:ssl3_get_record:wrong version number,并且没有返回任何证书。

根据我的研究,似乎10-ssl.conf文件中允许的协议和密码可能是问题所在,但我尝试了很多组合,但仍然出现相同的错误。目前的情况如下:

ssl_protocols = TLSv1.2 TLSv1.1 TLSv1 !SSLv3 !SSLv2
ssl_cipher_list = HIGH:!SSLv2:!SSLv3:!TLSv1.0:!aNULL:!MD5

如何让服务器在 SMTP 端口上返回证书?

答案1

您的 Postfix + Dovecot 设置有两个不同的服务器软件,执行不同的角色:

  • 您的配置中的 Dovecot 是邮件存储服务器,负责 IMAP。此外,Dovecot提供 SASL 身份验证适用于 Postfix。该配置文件/etc/dovecot/conf.d/10-ssl.conf仅适用于 Dovecot,因此它仅影响STARTTLS端口 143 上的 IMAP 和端口 993 上的 IMAPS。

  • Postfix 是邮件投递代理负责 SMTP 的 MTA,无论是 TCP 端口 25 上的其他 MTA,还是留言提交使用STARTTLS端口 587 或端口 465 上的 SMTPS。Postfix 的主要配置文件是main.cfmaster.cf/etc/postfix/

您只能使用测试 IMAPS993和 SMTPS 。要测试SMTP 端口和IMAP 端口,您需要使用:465oppenssl s_client -connect mail.example.com:465STARTTLS25587143

openssl s_client -starttls smtp -connect mail.example.com:25
openssl s_client -starttls smtp -connect mail.example.com:587
openssl s_client -starttls imap -connect mail.example.com:143

在 Security Stack Exchange 中讨论的还有几个用于测试的网站和工具问题。有关在 Postfix 中配置 TLS 的信息,请参阅Postfix TLS 支持。 这Postfix 和 Dovecot SASL文档中还有配置示例提交。另外,您还需要将 TLS 参数添加到您的main.cf

答案2

端口 25 默认不使用 SSL。客户端必须运行STARTTLS命令才能开始与服务器协商加密。相反,端口 993 上的 IMAPS 在连接时立即开始 SSL 协商。您必须在端口 465 上配置并尝试 SMTPS,其作用与 993 上的 IMAPS 完全相同。

答案3

测试运行明文协议以及该协议的 TLS 加密版本的服务(例如 SMTP)在同一 TCP 端口上,您需要指示 openssl 与 协商 TLS 协议升级启动TLS-starttls protocol转变。

根据 openssl 版本的不同,s_client 支持多种不同的协议:

-starttls protocol
发送特定于协议的消息以切换到 TLS 进行通信。 protocol是目标协议的关键字。目前,仅支持“smtp”、“pop3”、“imap”、“ftp”、“xmpp”、“xmpp-server”、“irc”、“postgres”、“lmtp”、“nntp”、“sieve”和“ldap”。

因此使用以下命令测试您的 Postfix 邮件服务器:

oppenssl s_client -starttls smtp -connect mail.example.com:25

相关内容