我有 Debian wheezy 并设置 Exim 来监听端口 587,用户可以使用 TLS 进行身份验证。我正在使用 Thunderbird 31.1.2 对其进行测试。当我尝试发送消息时,Thunderbird 会显示:
发送消息失败。无法发送消息,因为与 SMTP 服务器 smtp.gaspatchmodels.com 的连接在事务处理过程中丢失。重试或联系您的网络管理员。
Exim 在主日志中显示了这一点:
2014-09-29 18:03:22 来自 ppp-94-68-63-22.home.otenet.gr ([192.168.1. 68]) [94.68.63.22] (gnutls_handshake) 的连接出现 TLS 错误:请求是无效的。
如果我嗅探流量,我看到客户端说“STARTTLS”,服务器响应“220 TLS 继续”,然后客户端发送二进制数据,之后连接似乎被丢弃。
如果我运行exim
,-d
这就是我得到的:
15332 SMTP<< STARTTLS
15332 initialising GnuTLS as a server
15332 GnuTLS global init required.
15332 initialising GnuTLS server session
15332 Expanding various TLS configuration options for session credentials.
15332 certificate file = /etc/exim4/exim.crt
15332 key file = /etc/exim4/exim.key
15332 TLS: cert/key registered
15332 verify certificates = /etc/ssl/certs/ca-certificates.crt size=245341
15332 Added 159 certificate authorities.
15332 Initialising GnuTLS server params.
15332 Loading default hard-coded DH params
15332 Loaded fixed standard D-H parameters
15332 GnuTLS using default session cipher/priority "NORMAL"
15332 host in tls_verify_hosts? no (option unset)
15332 host in tls_try_verify_hosts? no (option unset)
15332 TLS: a client certificate will not be requested.
15332 SMTP>> 220 TLS go ahead
15332 Received TLS SNI "[my domain name]" (unused for certificate selection)
15332 LOG: MAIN
15332 TLS error on connection from ppp-94-68-63-22.home.otenet.gr ([192.168.1.68]) [94.68.63.22] (gnutls_handshake): The request is invalid.
15332 TLS failed to start
对我来说,“请求无效”的信息传达了 Thunderbird 有过错的意思;但是我不敢相信是这种情况,因为它既不能在我的 Thunderbird 上也不能在我客户的 Thunderbird 上工作,而且因为它在两天前工作(然后我从挤压更新,删除了配置,并重新创建它ansible
)。我在配置中看不到任何相关的东西
MAIN_TLS_ENABLE = true
在/etc/exim4/conf.d/main/000_localmacros
.
我可以从 gnutls 获得更多调试信息吗?比如为什么认为请求无效?
我找到了问题所在。我在配置中犯了一个错误:
/etc/exim4/exim.crt
,而不是包含主机证书+链证书,包含主机私钥+链证书。我想知道这是一个错误
exim
还是gnutls
错误。“请求无效”似乎是针对此问题的不恰当错误消息。