build议的用户驱动的垃圾邮件培训机制?

我正在寻找让我的邮件用户完全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 。 然后我有这个脚本:

/etc/cron.daily/learnspam

 #!/bin/sh find /var/vmail -name .Junk -exec echo Examining {}... \; -exec sa-learn --dbpath=/var/lib/amavis/.spamassassin --spam {}/cur \; 

我也有一个文件夹,每个用户都称为误报,他们可以将邮件拖入错误地标记为垃圾邮件,我也有一个日常的脚本,它学习它作为火腿,并将其移回到他们的收件箱。

/etc/cron.daily/falsepos

 #!/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中写入不同的数据库。
  • 关于多用户操作的一个devise限制:SpamAssassin使用单个全局Bayes数据库 – 而不是每个用户的数据库。

Dspam比垃圾邮件刺客更好地进行贝叶斯过滤。 许多其他过滤机制,如RBL,灰名单和DNS有效性检查可以从MTAconfiguration(如后缀)。 在这种方法中,只有在其他testing通过后才能查看邮件内容,这使得系统的资源消耗更less。 你没有得到相同的加权组合,但如果设置得当,你可以得到一个非常好的垃圾邮件系统,使用更less的CPU和内存。 另外,dovecot插件是通过在文件夹之间移动邮件来触发的,比单独的文件夹更好。