现在我使用spamd来评分垃圾邮件,然后将procmail放到用户的.Spam Maildir文件夹中,然后在.LearnAsSpam和.LearnAsHam上手动运行sa-learn,然后手动删除这些文件夹中的所有内容。 显然必须有一个更好的方法,我只是不知道它是什么。
有更好的垃圾邮件工具链处理这些细节?
我使用了下一个方法:
MTA是将消息的副本从DATA ACL传递给spamassassin的exim 。 SA返回分数,不执行任何消息修改或路由。 如果计算出的分数高于阈值, exim在消息中添加一些特殊的标题(X-Spam-Detected:YES)。
然后通过dovecot的deliver邮件路由本地交付。 pidgeonhole安装了pidgeonhole插件,这是sieve引擎的实现。 当邮件满足某些条件时(fe header“X-Spam-Detected”存在) pidgeonhole将邮件存储在收件pidgeonhole文件夹中:
if exists "X-Spam-Detected" { fileinto "Junk"; stop; }
如果检测到错误信息(假阳性或假阴性),用户可以将信息移动到正确的位置。 Dovecot还有另外一个叫antispam插件来追踪邮件的移动。 当邮件被移动到“垃圾邮件”子文件夹时,会自动为该邮件启动sa-learn --spam 。 当邮件从“垃圾邮件”子文件夹中sa-learn --ham , sa-learn --ham启动。
旧邮件可以使用doveadm工具自动删除:
doveadm expunge -A mailbox Junk savedbefore 31d