CentOS + Postfix 問題: tls early post process client hello:unsupported protocol

早幾天新安裝一台 Mail Gateway 主機, 是在 CentOS 8 裡面用 Postfix, 中繼送信, 然後再加安裝 Let’Encrypt 對 smtpd 加密。

這個過程還算順利, 測試後用 gmail 及 yahoo 發信過來也收到,

過兩天後收到客戶反映, 有其中一個寄件者發來的郵件收不到, 查看 /var/log/maillog 後, 找到以下錯誤:

mx01 postfix/smtpd[108550]: warning: TLS library problem: error:14209102:SSL routines:tls_early_post_process_client_hello:unsupported protocol:ssl/statem/statem_srvr.c:1661:
mx01 postfix/smtpd[108550]: lost connection after STARTTLS from unknown[xxx.xxx.xxx.xxx]
mx01 postfix/smtpd[108550]: disconnect from unknown[xxx.xxx.xxx.xxx] ehlo=1 starttls=0/1 commands=1/2

CheckTLS 再三檢查還是正常, 而且設定跟另一台安裝在 CentOS 7 的 Mail Gateway 都是一樣的。


在網上好像都沒找到解決方法, 再從上面報錯看看, 其中 “unsupported protocol” 表示不支援通訊協定。然後再在 /var/log/maillog 檢視成功連連的 TLS 連線, 發現全部都是 TLSv1.2 及 TLSv1.3.

然後再 google 找找, RHEL 8 / CentOS 8 的 openssl 只支援 TLS 1.2 及 TLS 1.3, 但還有很多老舊的電郵伺服還是用 TLS 1.0 或 TLS 1.1, 所以便有這個問題出現。

解決方法是開啟 /etc/crypto-policies/back-ends/opensslcnf.config:

# vi /etc/crypto-policies/back-ends/opensslcnf.config

可以看到 MinProtocol 及 MaxProtocol 兩個設定, 這是預設值:

可以看到 MinProtocol 設定了最低支援的版本是 TLS 1.2, 將 MinProtocol 改成 TLSv1 便可, 即改成這樣:

儲存檔案後便會生效, 再等一段時間後, 用 grep 指令檢視 /var/log/maillog 再沒有以上報錯, 問題便解決了。



你可能感興趣的內容:

Leave a Reply