我正在反垃圾邮件服务器上运行fetchmail ,以便在用户的垃圾文件夹中获取消息来提供SpamAssassin贝叶斯过滤。 它在fetchmail使用-m选项运行良好,可以将消息传递给SpamAssassin sa-learn工具。
但是我想要开始testingBogofilter并相应地提供Bogofilter数据库。 但要做到这一点, fetchmail应该将消息传递给SpamAssassin和Bogofilter,并且使用-m是不行的。
有一种方法可以通过fetchmail实现这个function吗? 我已经考虑了一些额外的MDA,如procmail或maildrop ,但我不确定是否真的有必要或者是否能够完成这项工作。
编辑:我的实际fetchmail命令从邮件服务器中获取邮件:
echo "poll $mailserver proto IMAP user $domain\\$user\\$mailbox pass $passwd ssl" \ | fetchmail -a -n -p IMAP --folder "$junkfolder" -f - -m '/usr/local/bin/sa-learn \ -C /usr/mailcleaner/etc/mailscanner/spam.assassin.prefs.conf --spam'
编辑:我了解它! 回答我自己的问题
如果你使用Procmail作为LDA,这很容易做到。 这里是一个Procmail的配方,将消息传递给两个不同的脚本,然后将其传递给垃圾邮件。 (如果您不想保留它,请将其发送到/dev/null ;或者等价地,从最后一个配方中删除c标志。)
# I doubt this is necessary, but since you were using an explicit path name... PATH=/usr/local/bin:$PATH :0c | sa-learn -C /usr/mailcleaner/etc/mailscanner/spam.assassin.prefs.conf --spam :0c | bogofilter :0 SPAM/
编写一个执行相同操作的shell脚本并不难,但是Procmail做了很多事情来确保电子邮件不会丢失或者不安全地传递,所以它作为一个包装器很好。