将 fetchmail 邮件投递到两个不同的 MDA

将 fetchmail 邮件投递到两个不同的 MDA

我正在运行fetchmail反垃圾邮件服务器,以便获取用户垃圾邮件文件夹中的邮件,以提供给 SpamAssassin 贝叶斯过滤。它运行良好,可以选择-mfetchmail邮件发送到 SpamAssassinsa-learn工具。

但我想开始测试 Bogofilter 并相应地向 Bogofilter 数据库提供信息。但这样做fetchmail应该将邮件发送给 SpamAssassin 和 Bogofilter,而使用 则-m不行。

有办法用 来实现这个fetchmail吗?我考虑过一些额外的 MDA,比如procmailmaildrop,但我不确定它是否真的有必要或者它是否能起到作用。

编辑:我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 做了很多事情来确保电子邮件不会丢失或不安全地传递,因此它作为包装器很好。

相关内容