Centos

如果 TLS 握手失敗,如何更改 sendmail 回退行為?

  • April 21, 2016

我有一個執行 sendmail 的 CentOS 5.x 伺服器,它無法與一些不同的收件人伺服器協商 TLS。我正在調查它。

與此同時,我注意到如果發生 TLS 握手錯誤,sendmail 不會費心回退到使用標準的未加密傳遞方法。這是正常行為嗎?

如果(且僅當)我明確要求域使用此邏輯時,我希望此邏輯到位。例如,如果我在 /etc/mail/access 中添加了 TLS_SRV 選項。在這種情況下,我沒有。本質上,Sendmail 只是在執行“機會 TLS”。

到目前為止我遇到的所有資訊都表明這個問題是預期的行為並且是硬編碼的……

根據http://www.sendmail.org/m4/starttls.html#disable_starttls

預設情況下,盡可能使用 STARTTLS。但是,有些損壞的 MTA 沒有正確實現 STARTTLS。為了能夠向這些 MTA 發送(或接收)這些 MTA,可以使用與訪問映射一起工作的規則集 try_tls (srv_features)。訪問映射的條目必須使用 Try_TLS (Srv_Features) 進行標記,並引用連接系統的主機名或 IP 地址。

根據http://etutorials.org/Server+Administration/Sendmail/Part+II+Administration/Chapter+10.+Maintain+Security+with+sendmail/10.10+STARTTLS/

如果不使用訪問數據庫,則在所有情況下都允許連接,包括入站和出站,除非 ${verify} 中的值是 SOFTWARE,在這種情況下不允許連接。

這兩個簡介都表明 try_tls 功能是當對方聲稱支持它時跳過 TLS 的唯一選項。我知道這是一個選項,但它很麻煩,因為這意味著我需要在出站域出現問題時手動進行例外處理。

有沒有其他方法可以讓 sendmail 回退?

根據這個執行緒,回退功能tls_failures在這個更新檔中實現的。顯然,這將在一定數量的 TLS 握手失敗後自動使用純文字。

注意:此更新檔集成在 8.16 中(至少作為快照提供)

到這篇文章為止,8.16 還沒有發布,所以現在你必須使用/etc/mail/accessor/etc/mail/access_db按照Seth 的建議,並且一定要重建.dbusingmakemap hash /etc/mail/access < /etc/mail/access

至於tls_failures全球使用的安全風險;考慮到這從一開始就是機會性 TLS,我認為避免使用這個新選項只會在一些非常邊緣的情況下有所幫助,即收件人郵件伺服器被臨時重新配置並稍後更正。

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