我已經進行了 postfix 設置,以便從 smtpd 傳入的郵件自動通過 spamassassin 進行過濾(它將其重新註入到帶有添加標頭的郵件隊列中)
現在我想對被視為垃圾郵件的郵件執行兩件事:
- 如果郵件再次出站(由於別名),當場丟棄郵件
- 如果郵件是發給本機虛擬使用者的,則交給 Dovecot,Dovecot 會將其放入垃圾郵件資料夾中。
我可以這樣設定postfix嗎?我所有的別名和使用者資訊都在 MySQL 中。目前,我丟棄所有垃圾郵件(在 main.cf 中使用 header_checks),但我更喜歡上述情況。
答案1
您可以在 master.cf 中設定另一個 smtp 偵聽器進程來處理外寄郵件。類似下面的內容應該可以幫助您開始偵聽連接埠 26:
26 inet n - n - 18 smtpd -o header_checks=[your checks] mydestination= relayhost=
您可能需要稍微調整一下,以停用本機傳遞並且不接受來自除本機以外的任何地方的郵件。然後您需要將以下內容新增到您的 main.cf 中
relayhost=127.0.0.1:26
當然,將標頭檢查從該文件中刪除。
發出的郵件將轉發到 26 日的第二個 smtpd 進程,然後該進程將丟棄作為垃圾郵件而失敗的郵件。如果您需要將郵件傳遞到下游伺服器而不是直接投遞,您也可以在該偵聽器中指定中繼主機。
然後,您可以像您已經建議的那樣,使用 Dovecot 為本地用戶設定其餘的過濾。
當然,在執行此操作時,您需要考慮向郵件添加多少個郵件躍點,因為某些郵件提供者會丟棄具有相當數量躍點的郵件(例如,gmail 在 10 或 15 次之後丟棄)