設置 Exim 對使用者進行身份驗證,然後使用不同的身份驗證通過 smarthost 中繼 SMTP 郵件
我正在嘗試使用 Exim 作為 SMTP 伺服器,將郵件作為智能主機中繼到我們的 Mandrill 服務。(這樣做的重點是使用 Exim 對 IMAP 郵件的使用者進行身份驗證,並針對我們的 LDAP 伺服器對他們進行身份驗證,同時依靠 Mandrill 進行傳遞。)
我最初將 Exim 設置為 smarthost,並在 Exim 文件夾的 .client 文件中設置了 Mandrill 設置。這工作正常,我能夠使用 telnet 或 MUA 發送郵件,並且由 Mandrill 正確轉發。
然後我啟用了 TLS 和身份驗證,並阻止未經身份驗證的使用者使用 Exim。這也可以正常工作——TLS 可以執行,我可以連接和驗證。但是此身份驗證中的某些內容破壞了 smarthost 中繼——我懷疑是因為 Exim 將我的“本地”LDAP 身份驗證憑據傳遞給 Mandrill,而不是我指定的 .client 憑據。我的主日誌文件中的錯誤如下所示:
2014-04-24 06:54:53 1WchYz-0007Db-3E RCPT TO:: 主機 smtp.us-east-1.mandrillapp.com 後遠端郵件伺服器的 SMTP 錯誤
$$ 54.237.217.91 $$:454 4.7.1:中繼訪問被拒絕
如何設置 Exim 對傳入使用者進行身份驗證,但使用不同的憑據集對 SMTP 中繼進行身份驗證?
這兩個身份驗證是獨立的。
您允許 Exim 使用客戶端身份驗證器對傳出連接進行身份驗證。您需要在 Exim
passwd.client
文件中為您需要進行身份驗證的每個伺服器配置一行。手冊頁exim_passwd_client
描述了密碼文件的格式。傳入身份驗證是使用伺服器身份驗證器完成的。這些可能在預設配置中被註釋掉。手冊頁
exim_passwd
描述了 passwd 文件。您應該考慮在送出埠 (587) 上啟用 TLS,以便使用者發送消息。文件開頭的以下宏應啟用傳入身份驗證。auth_advertise_hosts = ${if eq{$tls_cipher}{}{}{*}} daemon_smtp_ports = 25 : 587
要允許經過身份驗證的使用者發送外發郵件,您需要在某些點接受連接。您的配置具有處理本地發件人的規則,例如:
accept hosts = +relay_from_hosts control = submission/sender_retain
添加如下規則:
accept authenticated = * control = submission/sender_retain