目前我使用Exim通过dovecot-lda将邮件发送到Dovecot邮箱。 我想添加垃圾邮件过滤,但是我不想拒绝Exim中的误报,我想从客户端训练贝叶斯filter。
所以:如何configuration垃圾邮件使垃圾邮件位于Junk邮件文件夹中,当用户在其Inbox发现垃圾邮件或者垃圾邮件时,将其移动到正确的垃圾邮件Inbox 。
我发现了鸽舍 – 反垃圾邮件,但我不确定它的质量,它似乎只支持dspam(和crm114,已死,2009年8月发布)。
你不必做任何特别的垃圾邮件。 我对Exim的MDA并不熟悉,所以希望有人可以写一个特定的答案。 邮件投递代理运行时,应通过spamc -u $USERNAME发送电子邮件(根据需要修改variables)。 然后看看标题。 如果存在“X-Spame-Status:Yes”,则将邮件发送到用户Maildir的子文件夹。
我用我的MDA的maildrop 。 configuration(在/usr/local/etc/maildroprc )是:
if ($LOGNAME ne "") { xfilter "spamc -u $LOGNAME" } else { xfilter "spamc -u $USER" } if ( /^X-Spam-Status: Yes/ ) { `test -d $DEFAULT/.Junk` if( $RETURNCODE == 1 ) { `maildirmake -f Junk $DEFAULT` } exception { to "$DEFAULT/.Junk" } }
至于贝叶斯学习,我写了一个cron每20分钟一个脚本的脚本:
#!/bin/csh foreach cuser (`ls /home`) if ( -d $cuser/Maildir) then sa-learn --dbpath /home/$cuser/.spamassassin --spam /home/$cuser/Maildir/.Junk endif end
然后我按照下面的步骤去删除超过2周的Junk。 你不需要把它清理干净,但大多数人永远不会自己去做:
find /usr/home/*/Maildir/.Junk/*/ -ctime +2w -type f -delete