Linux

在 Postfix 中啟用 RC4-SHA 以實現舊的 Exchange 兼容性

  • February 2, 2017

我正在使用帶有 OpenSSL 1.0.2k-1 的 Postfix 2.11.3-1 執行 Debian Jessie 郵件伺服器。最近對 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 認為它比 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不行。

回答我自己的問題,以防對其他人有幫助。我在http://postfix.1071664.n5.nabble.com/selective-disable-of-smtpd-opportunistic-TLS-tp81383p81384.html的 Postfix 論壇上找到了解決方法。將以下行添加到/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_maps除了 smtpd 之外的東西,但不幸smtpd_tls_policy_maps的是不是一個實際的配置選項。

引用自:https://serverfault.com/questions/829948