Postfix

如何停止我在過渡 postfix-spamassassin-dovecot 設置中引入的循環

  • June 29, 2015

我正處於陡峭的電子郵件處理學習曲線的早期階段,感謝您的溫柔:-)。

我有一個帶有後綴和鴿舍的設置。我正在嘗試將我的電子郵件伺服器(域example.com)從我家遷移到在其他地方執行的實例(test.example.com)。這個想法是,當事情似乎可行時,我將更改 DNS 並替換test.example.comexample.com)。我懷疑我遇到的問題可能是過渡性的,但希望得到任何驗證。

在我的舊伺服器上,我有實際的 unix 帳戶,並且在 /etc/aliases 中有以下內容:

a:    \a, b

因此,除了本地副本外,a@example.com還轉發了發送到的電子郵件。b@example.com

在我的新伺服器(目前test.example.com)上,我有虛擬使用者a@example.com, b@example.com,並且$virtual_alias_maps包含

@test.example.com    @example.com
a@example.com        a@example.com, b@example.com

其中發送到的電子郵件a@test.example.com將按預期傳遞而不會出現循環。

然後我以下列方式將 spamassassin 添加到 main.cf 中,它似乎有一個例外。

smtp      inet  n       -       -       -       -       smtpd
   -o content_filter=spamassassin
spamassassin   unix  -       n       n       -       -       pipe
   user=debian-spamd argv=/usr/bin/spamc -f -e
   /usr/sbin/sendmail -oi -f ${sender} ${recipient}

現在當我發送電子郵件時a@test.example.com,我在郵箱中收到一份,在郵箱 中a@example.com收到兩份b@example.com

擴展似乎發生了兩次,這讓我感到驚訝。

我的問題是:

  1. 為什麼擴張會發生兩次?
  2. 當我更改 DNS 並test.從我的配置中刪除時,這個問題會消失(也就是說,這是一個過渡性問題)嗎?
  3. 如果 2. 的答案是否定的,您有什麼建議嗎?

這是放置內容之前 跨後綴守護程序的電子郵件之旅spamassassin

Email for a@example.com -> aliased to a@example.com and b@example.com -> final destination

在你放 spamassassin東西之後,基本上你把內容過濾器放在後綴堆棧中,這樣電子郵件之旅就變成了

Email for a@example.com -> aliased to a@example.com and b@example.com -> spamassassin

來自 spamassassin,postfix 被兩封電子郵件注入

Email for a@example.com -> aliased to a@example.com and b@example.com -> final destination
Email for b@example.com -> final destination

這就解釋了為什麼您在 b@example.com 中有兩封電子郵件,在 a@example.com 中有一封電子郵件


解決方案

Postfix 有參數receive_override_optionswithno_address_mappings來處理這個問題。將其放在內容過濾器之前,您將不會收到重複的電子郵件。

smtp      inet  n       -       -       -       -       smtpd
   -o content_filter=spamassassin
   -o receive_override_options=no_address_mappings
spamassassin   unix  -       n       n       -       -       pipe
   user=debian-spamd argv=/usr/bin/spamc -f -e
   /usr/sbin/sendmail -oi -f ${sender} ${recipient}

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