Smtp

設置 Exim 對使用者進行身份驗證,然後使用不同的身份驗證通過 smarthost 中繼 SMTP 郵件

  • March 14, 2017

我正在嘗試使用 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 使用客戶端身份驗證器對傳出連接進行身份驗證。您需要在 Eximpasswd.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

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