web-dev-qa-db-ja.com

2つの異なるMDAにfetchmailメッセージを配信します

AntiSpamサーバーでfetchmailを実行して、ユーザーのジャンクフォルダーでメッセージを取得し、SpamAssassinベイジアンフィルタリングをフィードしています。 fetchmail-mオプションを使用して正常に実行され、SpamAssassin sa-learnツールにメッセージを配信しています。

しかし、Bogofilterのテストを開始し、それに応じてBogofilterデータベースにフィードしたいと思います。しかし、これを行うには、fetchmailがSpamAssassinとBogofilterにメッセージを配信する必要があり、-mを使用することはできませんでした。

fetchmailでこれを達成する方法はありますか? procmailmaildropのような追加のMDAを検討しましたが、それが本当に必要かどうか、またはそれが機能するかどうかはわかりません。

編集:メールサーバーからメッセージをフェッチするための実際の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として使用する場合に簡単に実行できます。これは、メッセージを2つの異なるスクリプトに渡し、それをSPAMに配信するための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/

同じアクションを実行するシェルスクリプトを作成するのは難しいことではありませんが、Procmailは、電子メールが失われたり、安全でない状態で配信されたりしないようにするためにさまざまなことを行います。そのため、ラッパーとしては便利です。

1
tripleee