我正在运行fetchmail
反垃圾邮件服务器,以便获取用户垃圾邮件文件夹中的邮件,以提供给 SpamAssassin 贝叶斯过滤。它运行良好,可以选择-m
将fetchmail
邮件发送到 SpamAssassinsa-learn
工具。
但我想开始测试 Bogofilter 并相应地向 Bogofilter 数据库提供信息。但这样做fetchmail
应该将邮件发送给 SpamAssassin 和 Bogofilter,而使用 则-m
不行。
有办法用 来实现这个fetchmail
吗?我考虑过一些额外的 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'
编辑:我明白了!回答我自己的问题...
答案1
如果您使用 Procmail 作为 LDA,这很容易做到。这里有一个 Procmail 配方,用于将消息传递给两个不同的脚本,然后将其传递给 SPAM。(/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 做了很多事情来确保电子邮件不会丢失或不安全地传递,因此它作为包装器很好。