![Dovecot 转发垃圾邮件](https://linux22.com/image/801511/Dovecot%20%E8%BD%AC%E5%8F%91%E5%9E%83%E5%9C%BE%E9%82%AE%E4%BB%B6.png)
我想知道是否有人知道如何实现这个想法。这不是一个要求,而是一个我想到的主意,我不知道如何用谷歌搜索来查明它是否已经实现。
基本上是这样的。我有一个 Ubuntu Postfix/Dovecot 邮件服务器,里面有 Amavis、Postgrey 和 Spamassassin。现在我听说使用 Sieve 来处理 dovecots 垃圾邮件文件夹等。但我想知道是否有办法让用户将电子邮件转发到垃圾邮件地址,例如[电子邮件保护],它基本上充当机器人用户,将电子邮件归档到一种通用垃圾邮件文件夹中,并自动将该地址添加到 spamassassin 或 postgrey。最后,我希望它每隔 X 天清理一次文件夹(可能使用 cron)。
所以我希望的工作流程是这样的:
- [电子邮件保护]收到来自[电子邮件保护]
- [电子邮件保护]转发至[电子邮件保护]
- [电子邮件保护]将其移至垃圾文件夹。
- [电子邮件保护]将其添加到 spamassasin/postgres 进行阻止。
- CRON 从垃圾文件夹中删除 7 天前的邮件。
有什么想法吗?如果我能实现这个功能,我可能会为其他人写一个教程(如果还没有的话)。
答案1
转发垃圾邮件通常并没有多大帮助,用户通常使用“内联转发”而不是重定向/作为附件转发。几乎不可能从内联转发中获取任何有用的信息(没有标题,这意味着没有信封发件人等)。幸运的是,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