我正在寻找让我的邮件用户完全pipe理他们自己的垃圾邮件训练的方法。 在我进入之前,我的邮件服务器的详细信息:
Debian 7.5,postfix 2.9.6,dovecot 2.1.7,amavisd-2.7.1,spamassassin 3.3.2
因此,每个域中的每个用户都有一个垃圾邮件文件夹( /var/vmail/domain/user/.Junk ),他们可以将垃圾邮件/var/vmail/domain/user/.Junk 。 然后我有这个脚本:
#!/bin/sh find /var/vmail -name .Junk -exec echo Examining {}... \; -exec sa-learn --dbpath=/var/lib/amavis/.spamassassin --spam {}/cur \;
我也有一个文件夹,每个用户都称为误报,他们可以将邮件拖入错误地标记为垃圾邮件,我也有一个日常的脚本,它学习它作为火腿,并将其移回到他们的收件箱。
#!/bin/sh doveadm search -A mailbox 'False Positives' 2>/dev/null | while read user guid uid; do doveadm fetch -u $user text mailbox-guid $guid uid $uid > /tmp/$guid-$uid.eml doveadm move -u $user INBOX mailbox-guid $guid uid $uid done sa-learn --dbpath=/var/lib/amavis/.spamassassin --ham /tmp/*-*.eml if ls /tmp/*-*.eml >/dev/null 2>&1; then rm /tmp/*-*.eml fi
我的问题是,我正确地做这个? 有没有更好的办法? sa-learn与amavis正确地工作吗? 我认为只要使用--dbpath=/var/lib/amavis/.spamassassin选项,它应该可以正常工作。
你可能想看看dspam 。 它与Dovecot集成在一起,基本上完全符合你的要求,但随着移动操作的发生(移动到Junk =>垃圾邮件,移出Junk =>误报)。
你的方法看起来不错, 我做类似的事情。
两点评论:
--dbpath是很好的,它可以防止SA在--dbpath中使用--dbpath发生常见的安装错误, --dbpath中写入不同的数据库。 Dspam比垃圾邮件刺客更好地进行贝叶斯过滤。 许多其他过滤机制,如RBL,灰名单和DNS有效性检查可以从MTAconfiguration(如后缀)。 在这种方法中,只有在其他testing通过后才能查看邮件内容,这使得系统的资源消耗更less。 你没有得到相同的加权组合,但如果设置得当,你可以得到一个非常好的垃圾邮件系统,使用更less的CPU和内存。 另外,dovecot插件是通过在文件夹之间移动邮件来触发的,比单独的文件夹更好。