我正在 Arch Linux 上设置 postfix 服务器。到目前为止,它似乎运行正常 - 我可以通过 成功与它通信telnet localhost 25
。但是,当我尝试使用 openssl 进行连接时s_client
,它会抱怨:
$ openssl s_client -connect localhost:25
CONNECTED(00000003)
140243743024808:error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol:s23_clnt.c:766:
---
no peer certificate available
---
No client certificate CA names sent
---
SSL handshake has read 7 bytes and written 228 bytes
---
New, (NONE), Cipher is (NONE)
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
---
并以状态 1 退出。
相关部分/etc/postfix/main.cf
:
smtpd_tls_key_file = /path/to/server.key.pem
smtpd_tls_cert_file = /path/to/server.crt.pem
smtpd_tls_CAfile = /path/to/ca.pem
smtpd_tls_security_level = may
我也有非 pem 格式的密钥和证书,它们可以与使用它们的另一个服务(xmpp 服务器)一起正常工作。
我已经发现文档为了实现这一点,我需要取消注释一行并使用端口 587 而不是 25。这给了我与上面/etc/postfix/main.cf
相同的输出。openssl s_client
我如何说服 Postfix 使用 TLS?
答案1
您不需要使用端口 587 进行 tls,因为它与应用程序协议无关。
我从 获得了与您完全相同的结果openssl s_client -connect localhost:25
,但 tls 在我的服务器上运行正常。
目前我无法访问我的个人 wiki,因此无法粘贴正确的命令来检查您系统上的 tls 配置。但您可以使用检查TLS。
答案2
我建议你阅读启动TLS。归根结底就是:启动未加密的纯文本连接,稍后升级到 TLS。该openssl
命令不使用此方法,而是直接进行 SSL/TLS 握手。
MTA 的“一般”事实上的配置是将其配置为在端口 587 上提供 STARTTLS,在 465 上配置普通 SSL/TLS,在端口 25 上使用不安全的 STARTTLS 选项。据我所知,这不是标准,只是主要服务提供商似乎这样做的方式。