![Ubuntu 12.04 上的 Sendmail 出现故障,SSL 问题?](https://linux22.com/image/1127456/Ubuntu%2012.04%20%E4%B8%8A%E7%9A%84%20Sendmail%20%E5%87%BA%E7%8E%B0%E6%95%85%E9%9A%9C%EF%BC%8CSSL%20%E9%97%AE%E9%A2%98%EF%BC%9F.png)
我昨天在 askubuntu.com 上发布了此消息,但没有收到任何回复。
我们运行一个 Ubuntu 生产服务器,每天为数千人提供服务。Sendmail 目前无法在此服务器上运行。我们花了几天时间尝试恢复它,但尚未找到任何解决方案。
目前有一个错误报告这似乎与这个问题有关,所以它影响的人不仅仅只有我们。
以下是我们所知道的信息。
周日,我们对服务器进行了更新。第二天,我们发现 sendmail 无法发送电子邮件。
/var/log/sendmail.log 在每封电子邮件条目上报告“stat=Deferred”。
它还偶尔会重复以下消息:
STARTTLS=client, error:connect failed=-1, SSL_error=1, errno=0, retry=-1
STARTTLS=client: 7042:error:14082174:SSL routines:SSL3_CHECK_CERT_AND_ALGORITHM:dh key too small:s3_clnt.c:3338:ruleset=tls_server, arg1=SOFTWARE, relay=xxx.xxx.edu, reject=403 4.7.0 TLS handshake failed.
我们检查了 SMTP 服务器上的日志,发现以下内容:
06-25T10:57:20-06:00 gw26 sm-mta[17229]: STARTTLS=server, error: accept failed=0, SSL_error=1, errno=0, retry=-1
No explanation available 2015-06-25T10:57:20-06:00 gw26 sm-mta[17229]: STARTTLS=server: 17229:error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure:s3_pkt.c:1110:SSL alert number 40
Explain this log line 2015-06-25T10:57:20-06:00 gw26 sm-mta[17229]: t5PGvKk0017229: opus.byu.edu [128.187.102.135] did not issue MAIL/EXPN/VRFY/ETRN during connection to MTA
我们花了很多时间在 Google 上搜索,发现有几个人在其他操作系统(CentOS 和 OpenBSD)上也遇到了类似的问题。看来 OpenSSL 已经更新,现在需要更长的 SSL 密钥才能正常运行。
这个错误启动板页面上可能有相关内容。
我们已尝试按照 CentOS 给出的说明修复该问题这里。注意:我们更改了新 dhparams.pem 文件的位置。
在你的服务器上生成 DH 参数文件:
openssl dhparam -out /etc/pki/tls/certs/dhparams.pem 1024 Configure sendmail to use this parameters file, and to use only strong ciphers.
添加到 /etc/mail/sendmail.mc:
O LOCAL_CONFIG O CipherList=HIGH:!ADH O DHParameters=/etc/pki/tls/certs/dhparams.pem O ServerSSLOptions=+SSL_OP_NO_SSLv2 +SSL_OP_NO_SSLv3 O SSL_OP_CIPHER_SERVER_PREFERENCE O ClientSSLOptions=+SSL_OP_NO_SSLv2 O SSL_OP_NO_SSLv3
然后使用 make -C /etc/mail/ 和服务 sendmail 重新启动。
这似乎并没有带来任何改善。
编辑:
我们通过执行以下操作关闭了 TLS,sendmail 立即恢复运行。但是,这不是解决方案,因为我们不想发送纯文本电子邮件。
添加
Try_TLS:1.2.3.4 NO
到 /etc/mail/access。
在 /etc/mail 中执行 make 并重新启动 sendmail。
答案1
添加 dhparams 文件并将 sendmail 指向该文件的过程对我来说很有效。我在最近更新的 sendmail 客户端上收到“dh 密钥太小”的提示,这是服务器它正在向需要应用 dhparams 修复的服务器发送邮件。幸运的是,在我的例子中,服务器在我的控制之下。
我有点担心收到这些错误的网站将不得不像您一样关闭 TLS(或恢复 openssl 更新)。这绝对不符合他们试图做的事情的精神(让 DH 更强大)!
答案2
在新的 NSS 库中设置最小密钥长度:
- RSA 密钥的最小模数大小现在为 512 位
- DSA 密钥的最小模数大小现在为 1023 位
- Diffie-Hellman 密钥的最小模数大小现在为 1023 位
位数不小于 2048 位非常重要。选择 2048 位是为了在 DH 的情况下提高安全性。
openssl dhparam -out /etc/pki/tls/certs/dhparams.pem 2048
同时禁用 senmail.mc 中的所有 ADH 芯片:
LOCAL_CONFIG
O CipherList=HIGH:!ADH
O DHParameters=/etc/pki/tls/certs/dhparams.pem