Dovecot 轉發垃圾郵件
我想知道是否有人知道如何實現這個想法。這不是一個要求,但更多的是我想出的一個想法,我不知道如何用我的Google搜尋來確定它是否已經完成。
基本上想法是這樣的。我有一個帶有 Amavis、Postgrey 和 Spamassassin 的 Ubuntu Postfix/Dovecot 郵件伺服器。現在我聽說過使用 Sieve 來處理 dovecots 垃圾郵件文件夾等。但我想知道是否有一種方法可以讓使用者將電子郵件轉發到垃圾郵件地址,例如 spam@example.com,這基本上將充當機器人使用者並將電子郵件歸檔在一種通用垃圾文件夾中自動將該地址添加到 spamassassin 或 postgrey。最終,我希望它也每隔 X 天(可能使用 cron)清理文件夾。
所以我希望的工作流程是這樣的:
- USER@EXAMPLE.COM 收到來自 JUNK@SPAM.COM 的電子郵件
- USER@EXAMPLE.COM 將其轉發給 SPAM@EXAMPLE.COM
- SPAM@EXAMPLE.COM 將其移至垃圾文件夾。
- SPAM@EXAMPLE.COM 將其添加到 spamassasin/postgrey 以進行阻止。
- CRON 從垃圾文件夾中刪除 7 天前的郵件。
想法?如果我能完成這項工作,我可能會為其他人寫一篇關於它的教程,如果不存在的話。
轉發垃圾郵件通常並沒有那麼有用,使用者通常會做“內聯轉發”而不是重定向/作為附件轉發。從內聯轉發中獲取任何可用資訊幾乎是不可能的(沒有標題,這意味著沒有信封發件人等)。幸運的是,dovecot 有一個更酷的功能:您可以一次搜尋所有使用者帳戶中的文件夾,因此他們可以簡單地將誤報移動到他們自己的 Spamreport 文件夾中,而不是轉發。
然後你可以用doveadm做一些有趣的事情,例如:
doveadm search -A mailbox Spamreport 2>/dev/null | while read user guid uid; do doveadm fetch -u $user text mailbox-guid $guid uid $uid | your_blacklist_script_here.sh ; doveadm expunge -u $user mailbox-guid $guid uid $uid ; done
這將獲取在任何使用者帳戶中呼叫的文件夾中的所有消息,然後
Spamreport
將它們傳遞給your_blacklist_script_here.sh
並刪除它們。請注意,您將發件人地址列入黑名單的想法在某些情況下可能會奏效,但通常它們的變化非常快,因此它可能不會很有效。考慮改為訓練 spamassassin 貝氏數據庫。假設您設置了貝氏,只需替換
your_blacklist_script_here.sh
為sa-learn --spam