现在我使用 spamd 来对垃圾邮件进行评分,然后使用 procmail 将其放入用户的 .Spam Maildir 文件夹中,然后手动在 .LearnAsSpam 和 .LearnAsHam 上运行 sa-learn,然后手动删除这些文件夹中的所有内容。显然一定有更好的方法,但我不知道是什么。
是否有更好的垃圾邮件工具链来处理这些细节?
答案1
我使用了下一种方法:
MTA 是exim
将邮件副本spamassassin
从 DATA ACL 传递到 的。SA
返回分数,但不执行任何邮件修改或路由。如果计算出的分数高于阈值,则exim
向邮件添加一些特殊标头(X-Spam-Detected:YES)。
然后,消息通过 进行本地传送dovecot
。deliver
已Dovecot
安装pidgeonhole
插件,即sieve
引擎实现。当消息满足某些条件(例如存在“X-Spam-Detected”标头)时,pidgeonhole
将消息存储在收件箱的子文件夹中:
if exists "X-Spam-Detected"
{
fileinto "Junk";
stop;
}
如果检测到邮件有误(误报或漏报),用户可以将邮件移至正确位置。Dovecot
还有另一个插件用于antispam
跟踪邮件移动。当邮件移至“垃圾邮件”子文件夹时,sa-learn --spam
将自动为该邮件启动。当邮件从“垃圾邮件”子文件夹移出时,sa-learn --ham
将启动。
可以使用doveadm
实用程序自动删除旧消息:
doveadm expunge -A mailbox Junk savedbefore 31d