![用于 Gmail 传入连接的 exim4 gnu_tls 密码配置](https://linux22.com/image/652029/%E7%94%A8%E4%BA%8E%20Gmail%20%E4%BC%A0%E5%85%A5%E8%BF%9E%E6%8E%A5%E7%9A%84%20exim4%20gnu_tls%20%E5%AF%86%E7%A0%81%E9%85%8D%E7%BD%AE.png)
在我运行的 Debian 7 / exim4 / gnutls 邮件服务器上,大约 1-2 周以来,来自 gmail 的邮件不再到达,日志文件中出现以下典型错误消息:
2015-02-14 17:32:07 TLS error on connection from mail-la0-f52.google.com [209.85.215.52] (gnutls_handshake): Could not negotiate a supported cipher suite.
有人知道谷歌是否更改了他们的配置吗?
tls_require_ciphers
您推荐的exim4 配置设置是什么?
这个问题突然出现了,过去两周我没有进行任何证书变更或相关更新。只有我一个人遇到这个问题吗?
答案1
问题是:服务器证书使用 SHA-512 哈希签名。Debian 7 仍附带gnutls
2.x,但gnutls
需要 3.x 才能安全使用 SHA-512 签名证书。我于 2014 年 12 月 23 日安装此证书。
Google 似乎已经改变了其密码协商政策,对后备密码套装和/或签名检查更加严格。直到 2015 年 1 月底,与 gmail 服务器的邮件交换都可以进行(使用 Debian 7 + gnutls 2.6 + SHA-512 签名的 CRT 配置),然后突然断线,因此在 2015 年 1 月底之后,如果我不进行更改,就无法从 gmail 收到任何电子邮件。
解决方案:替换 SHA-256 签名证书或升级到gnutls
3.x(目前不在 Debian 7 的稳定分支中)可以解决问题。 (我做了第一个。)
注1:在网上查了一下,我发现这也是许多非商业加州认证中心现在默认使用 SHA-512 签名的证书。CaCert.org 现在似乎在 CRT 生成界面中提供了一个“高级选项”,可以选择 SHA-256,以避免 Debian 7 用户出现此问题。但是,关于这个确切的问题,目前在线论坛上有很多误导性的提示和建议,说tls_require_ciphers
必须在配置中正确设置变量exim4
以确保正确的密码套件协商。这是错误的;我根本没有调整这个变量。
笔记2:存在与使用雷鸟连接到exim4
+ Debian 7 MTA 以发送邮件(请参阅此帖子:Thunderbird 更新后 Exim:“无法协商支持的密码套件”,虽然已关闭,但实际上高度相关。)Thunderbird 具有与 gmail 在协商密码套件时使用的完全相同的严格配置,因此当服务器使用gnutls
< 3.x 但使用 SHA-512 签名的 CRT 时,它会在这种特殊情况下失败。解决方案是相同的:使用 SHA-256 签名的 CRT 或更新 libgnutls(如果您的发行版可能)。