在 Postfix 中启用 RC4-SHA 以实现与旧版 Exchange 的兼容

在 Postfix 中启用 RC4-SHA 以实现与旧版 Exchange 的兼容

我正在运行 Debian Jessie 邮件服务器,使用 Postfix 2.11.3-1 和 OpenSSL 1.0.2k-1。Debian 策略的最新更改已禁用几个较旧的不安全密码。不幸的是,我们接收邮件的一些邮件服务器仍在旧版本的 Exchange 上运行(我认为是 Windows Server 2003 上的 Exchange 2007),并且由于 TLS 握手失败,它们现在无法连接。以下是发送服务器支持的(非常有限的)密码:

tls1:   RC4-SHA
tls1:   RC4-MD5
tls1:   DES-CBC3-SHA

我无法控制它的配置。根据http://www.postfix.org/TLS_README.html#server_cipher, “... Windows 2003 Microsoft Exchange 服务器对 DES-CBC3-SHA 的实现存在缺陷,而 OpenSSL 认为 DES-CBC3-SHA 比 RC4-SHA 更强大。启用服务器密码套件选择可能会导致与 Windows 2003 Microsoft Exchange 客户端的互操作性问题。”

以下是我们的 Postfix 配置的相关行postconf | grep smtpd_tls

smtpd_tls_CAfile =
smtpd_tls_CApath =
smtpd_tls_always_issue_session_ids = yes
smtpd_tls_ask_ccert = no
smtpd_tls_auth_only = yes
smtpd_tls_ccert_verifydepth = 9
smtpd_tls_cert_file = /path/to/cert
smtpd_tls_ciphers = export
smtpd_tls_dcert_file =
smtpd_tls_dh1024_param_file =
smtpd_tls_dh512_param_file =
smtpd_tls_dkey_file = $smtpd_tls_dcert_file
smtpd_tls_eccert_file =
smtpd_tls_eckey_file = $smtpd_tls_eccert_file
smtpd_tls_eecdh_grade = strong
smtpd_tls_exclude_ciphers =
smtpd_tls_fingerprint_digest = md5
smtpd_tls_key_file = /path/to/key
smtpd_tls_loglevel = 0
smtpd_tls_mandatory_ciphers = medium
smtpd_tls_mandatory_exclude_ciphers =
smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3
smtpd_tls_protocols = !SSLv2, !SSLv3
smtpd_tls_received_header = yes
smtpd_tls_req_ccert = no
smtpd_tls_security_level = may
smtpd_tls_session_cache_database = sdbm:/var/lib/postfix/smtpd_scache
smtpd_tls_session_cache_timeout = 3600s
smtpd_tls_wrappermode = no

目前看来,我们唯一的选择可能是完全禁用 TLS,直到发送服务器升级。显然我并不想这样做,但放弃电子邮件不是一个选择。是否可以重新配置 Postfix 以暂时启用 RC4-SHA*?如果我们可以将其设置为最低优先级,那就更好了。这是一个生产邮件服务器,因此测试范围有限,我需要一个可以确保立即生效的解决方案,这样我们就不会丢失邮件。

提前致谢。

*因为它比 RC4-MD5 更好,而 DES-CBC3-SHA 不起作用。

答案1

回答我自己的问题,希望对其他人有帮助。我在 Postfix 论坛上找到了一个解决方法http://postfix.1071664.n5.nabble.com/selective-disable-of-smtpd-opportunistic-TLS-tp81383p81384.html. 将以下行添加到/etc/postfix/main.cf

smtpd_discard_ehlo_keyword_address_maps = cidr:/etc/postfix/ehlo-map.cidr

文件的内容/etc/postfix/ehlo-map.cidr应如下所示,替换1.2.3.4/32有问题的服务器使用的地址范围:

# Disable TLS for <X> as their server uses outdated ciphers
1.2.3.4/32 starttls

此解决方案并不理想,原因有二。首先,它会完全禁用从相关 IP 地址收到的电子邮件的 TLS。RC4-SHA 可能不再被认为那么强大,但它仍然比发送未加密的所有内容要好。其次,您无法为电子邮件域或服务器主机名指定它,而是必须知道 IP 地址。

我将等待几天再将此标记为可接受的答案,希望有人能想出更好的解决方案。我理想中寻找的是类似smtp_tls_policy_mapssmtpd 的东西,但不幸的是smtpd_tls_policy_maps这不是一个实际的配置选项。

相关内容