Ubuntu 12.04 上的 Sendmail 出现故障,SSL 问题?

Ubuntu 12.04 上的 Sendmail 出现故障,SSL 问题?

我昨天在 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

相关内容