web-dev-qa-db-ja.com

ユーザー主導のスパムトレーニングのために提案されたメカニズム?

私は、メールユーザーが自分のスパムトレーニングを完全に管理する方法を模索しています。それに入る前に、私のメールサーバーの詳細:

Debian 7.5、接尾辞2.9.6、dovecot 2.1.7、amavisd-new 2.7.1、spamassassin 3.3.2

したがって、各ドメインの各ユーザーには、そのようにフラグが立てられないスパムを置くことができるジャンクフォルダ(/var/vmail/domain/user/.Junk)があります。次に、このスクリプトを配置します。

/etc/cron.daily/learnspam

#!/bin/sh

find /var/vmail -name .Junk -exec echo Examining {}... \; -exec sa-learn --dbpath=/var/lib/amavis/.spamassassin --spam {}/cur \;

また、各ユーザーがFalse Positiveと呼んでいるフォルダーがあり、そこにメッセージをドラッグして、誤ってスパムとしてマークされている可能性があります。また、そのためのスクリプトも毎日あります。このスクリプトは、ハムとして学習し、受信トレイに戻します。

/etc/cron.daily/falsepos

#!/bin/sh

doveadm search -A mailbox 'False Positives' 2>/dev/null | while read user guid uid; do
    doveadm fetch -u $user text mailbox-guid $guid uid $uid > /tmp/$guid-$uid.eml
    doveadm move -u $user INBOX mailbox-guid $guid uid $uid
done

sa-learn --dbpath=/var/lib/amavis/.spamassassin --ham /tmp/*-*.eml
if ls /tmp/*-*.eml >/dev/null 2>&1; then
    rm /tmp/*-*.eml
fi

私の質問は、私はこれを正しく行っていますか?もっと良い方法はありますか? sa-learnはamavisで正しく機能しますか? --dbpath=/var/lib/amavis/.spamassassinオプションを使用している限り、問題なく動作するはずです。

1
CaptSaltyJack

dspam を確認することをお勧めします。それはDovecotと統合され、基本的にあなたが望むことを正確に実行しますが、移動操作が発生すると、その場で(ジャンクへの移動=>スパム、ジャンクからの移動=>誤検知)。

3
moenoel

あなたのアプローチはうまく見えます。私は似たようなことをします。

2つの意見:

  • --dbpathを使用すると、SAは~amavisのDBを使用し、sa-learn~rootの別のDBに書き込むという一般的なセットアップエラーを防ぐことができます。
  • マルチユーザー操作に関する設計上の制限の1つ:SpamAssassinは、ユーザーごとのDBではなく、単一のグローバルベイズDBを使用します。
2
mschuett

Dspamは、スパム暗殺者よりもベイジアンフィルタリングを優れています。 RBL、グレーリスト、DNS妥当性チェックなどの他の多くのフィルタリングメカニズムは、MTA(postfixなど)から構成できます。このアプローチでは、他のテストに合格した後にのみ電子メールコンテンツを確認します。これにより、システムのリソース消費が大幅に削減されます。同じ重みの組み合わせは得られませんが、適切に設定すれば、CPUとRAMの使用量がはるかに少ない非常に優れたスパムシステムを得ることができます。また、dovecotプラグインは、フォルダー間でメールを移動することによってトリガーされます。これは、トレーニング用に別々のフォルダーを用意するよりもはるかに優れています。

0
mc0e