![使用 SRS 守護程序進行 exim4 配置](https://rvso.com/image/668767/%E4%BD%BF%E7%94%A8%20SRS%20%E5%AE%88%E8%AD%B7%E7%A8%8B%E5%BA%8F%E9%80%B2%E8%A1%8C%20exim4%20%E9%85%8D%E7%BD%AE.png)
我正在努力使用外部 SRS 守護程式(Debian 軟體包 srs)來設定 exim 4。 srsd 正在運行並且可以很好地來回轉換地址。我無法使用 exim 的內建 srs 程式碼,因為它在 Debian 中未啟用(我知道我可以自己編譯,但這不是選項)。
我遇到的問題是 exim 中的 srs_forward 路由器將 SRS 標籤新增至轉送的郵件。我有以下重定向路由器,它應該僅針對來自非本地發送者和非本地收件人的非錯誤訊息運行,這些訊息不會為另一個 mx 中繼 - 至少我理解 srs 應用於此類訊息。如果這是錯誤的,請糾正我。我有以下程式碼:
srs_forward:
debug_print = "R: srs_forward for $local_part@$domain"
driver = redirect
senders = ! :
condition = ${if ! match_domain{$sender_address_domain}{+local_domains}}
domains = ! +local_domains : ! +relay_to_domains
address_data = ${readsocket{/tmp/srsd}\
{FORWARD $sender_address_local_part@$sender_address_domain $domain\n}\
{5s}{\n}{:defer: SRS daemon failure}}
errors_to = ${quote_local_part:${local_part:$address_data}}@${domain:$address_data}
data = ${quote_local_part:$local_part}@$domain
headers_add = X-SRS: Sender address rewritten from $sender_address to ${quote_local_part:${local_part:$address_data}}@$$
repeat_use = false
allow_defer
no_verify
我可以測試和工作的內容:返迴路徑產生正確(帶有address_data和errors_to的行,以及目標位址(以資料開頭的行)。
我不確定前提條件:
senders = ! :
此行應防止路由器運作時出現錯誤訊息。
condition = ${if ! match_domain{$sender_address_domain}{+local_domains}}
此行應阻止路由器運作以接收來自本地寄件者的消息。
domains = ! +local_domains : ! +relay_to_domains
該線路應防止路由器運作以向本地收件者發送訊息或中繼訊息。
有人可以澄清一下嗎?
(我用了一個手動的作為起點,儘管沒有成功。
答案1
你沒有正確測試。您傳遞給 SRS 守護程序的資訊不正確:
FORWARD $sender_address_local_part@$sender_address_domain $domain\n
這不會執行您想要的操作: $domain 包含收件者網域而不是傳送網域。您打算重寫轉發訊息的網域的返迴路徑,這是值得尊敬的,但不會像這樣工作:訊息到達您的 SRS 路由器後轉送已經完成,因此 $domain 不再包含訊息傳送到的網域。您應該使用 $primary_hostname 或 $original_domain。所以這一行應該要看起來像:
address_data = ${readsocket{/tmp/srsd}\
{FORWARD $sender_address_local_part@$sender_address_domain $original_domain\n}\
{5s}{\n}{:defer: SRS daemon failure}}
至於你的前提條件,他們沒問題。您可以將「寄件者」和「條件」行放在一起:
senders = ! : ! *@+local_domains
您只需要確保網域清單 local_domains 確實包含您的所有本機網域(至少它應該包含目前路由的訊息 $original_domain 和 $sender_address_domain)。
如果您的程式碼正在運行,請記錄您的配置,並在此處給我們一些提示。您還需要安排其他幾件事:ACL 來驗證傳入的SRS 標記的退回郵件、取消標記SRS 標記的郵件以將其列入灰名單、取消退回郵件的標記、確保不要將任何其他標記(如BATV )加入外寄郵件中、嘗試接受帶有SRS 標記的郵件粉碎案例,重寫退回錯誤訊息文字以不包含SRS 標記的寄件者地址,也許拒絕任何未標記的退回,等等。有一個好的教程將不勝感激。謝謝!