配置 exim4 以使用 Microsoft Exchange 作為智能主機
我的公司最近設置了一個 Active Directory 驅動的 Microsoft Exchange 環境來整合外發郵件。我們確實有一組登台伺服器,現在應該使用我們的 MSEXCHG 作為發送郵件的智能主機。
這些伺服器位於 DMZ 中,這就是為什麼在對 Exchange 2010 智能主機進行身份驗證中讚成的解決方案?不是替代方案,因為我們不能允許 DMZ 中的伺服器通過我們的 Exchange 伺服器隨意發送郵件。
我們在 MSEXCHG 中所做的事情:
- 添加使用者 (stagingserver@contoso.com)
我們做過的事情
exim4 (8)
:
- 使用
update-exim4.conf (8)
(cfexim4_files (5)
) 我們將 exim 配置為exchange.contoso.com:587
用作智能主機。- 在 passwd.client (
exim4_files (5)
) 我添加了以下行exchange.contoso.com:stagingserver@activedirectory.contoso.com:secret123
:)使用上述配置啟動 exim 後,我在mainlog中收到以下兩個 TLS 錯誤:
TLS error on connection to ex.contoso.com [192.168.1.8] (recv): A TLS packet with unexpected length was received.
TLS error on connection to ex.contoso.com [192.168.1.8] (send): The specified session has been invalidated for some reason.
然後我們的 MSEXCHG 拒絕發送郵件,並顯示以下(最終)日誌條目:
** kiewiet@contoso.com R=smarthost T=remote_smtp_smarthost: SMTP error from remote mail server after MAIL FROM:<root@contoso-stage.com> SIZE=1538: host ex.contoso.com [192.168.1.8]: 530 5.7.1 Client was not authenticated
我嘗試過的其他事情:
- 放入(http://blog.xig.ch/Exim-Smarthost-mit-Authentifizierung-%FCber-STARTTLS_127.html)
MAIN_TLS_ENABLE = 1
_exim4.conf.localmacros
- https://askubuntu.com/questions/167043/how-do-i-configure-exim4-to-send-mail-through-a-password-protected-ssl-smtp-mail中描述的步驟
所以,一個強制性的問題:我們如何讓 exim 使用我們的 MSEXCHG 環境作為智能主機?
我們的問題是特定於我們的設置的。我們有多個 Exchange Server 與充當 AP 的負載平衡器並行執行。LB 配置錯誤,導致它忽略提供任何身份驗證方法欄
NTLM
,GSSAPI
即使在成功STARTTLS
握手之後也是如此。
swaks
通過jetmore.org(強烈推薦此工具)進行的深入測試揭示了這一點。
您的組織是否為內部伺服器運營自己的證書頒發機構?也許您需要將 Exchange 伺服器的 CA 證書添加到 Exim 的證書信任庫中?很多產品都不能很好的報這個錯誤(不知道Exim有沒有)。
Wireshark(首先在伺服器上擷取,
tcpdump -p -s0 -w /tmp/foo.pcap
然後使用 Wireshark 複製到本地工作站)應該能夠顯示從 Exchange 發送的伺服器證書,如果客戶端在此之後掛斷,那麼缺少 CA 證書是一個常見原因。