1

バックグラウンド:

Twitter フィードをダウンロードしてテキスト ファイルに保存しています。Mail::SpamAssassin で perl スクリプトを使用して、スパムの可能性をチェックしたいと考えています。そこで、テキストからのメッセージの読み込みに関するこの投稿をフォローしました。すべてのメッセージは、419 詐欺であっても、if ステートメントで「スパムではない」とマークされ続けます。

質問

  • 私は何を間違っていますか?
  • Spamasssasin ファイルを構成する必要はありますか?
  • メッセージは特定の形式である必要がありますか?
  • 私のプロジェクトのためのより良い代替手段はありますか?

詳細:

コード:

use Mail::SpamAssassin;
use strict;
use warnings;


open FILE, "<", ~/Messages/twitter_tweet.ema' or die;
my @lines = <FILE>;

my $spamtest = Mail::SpamAssassin->new();
my $mail = $spamtest->parse(\@lines);
my $status = $spamtest->check($mail);
print $status->get_report();

if ($status->is_spam()) {
    print "Totally Spam\n";
} else {
    print "not spam\n";
}

 $status->finish();
 $mail->finish();
 $spamtest->finish();

出力:

(レポート テンプレートが見つかりません)

スパムじゃない

ノート:

私はspamAssasinを設定しませんでした.単にperlモジュールを使い始めました.

ホームディレクトリにというファイルがありますが、~/.spamassassin/user_prefs触れていません

4

1 に答える 1

0

あなたがこの質問をどのように始めたかに注意せずに、私は(以下の)回答を書きました. 「Twitter フィードをダウンロードしてテキスト ファイルに保存しています」という部分が重要です。非常に重要です。具体的には、SpamAssassin は電子メールをスキャンするように設計されており、ヘッダーからの豊富なメタデータが含まれています。Twitter フィードにはヘッダーがありません。

私が見た twitter の最高のスパム対策テクニックは、使用可能なコードではなく、ほとんどが学術研究であり、フォロワーを追跡し、各ユーザーの評判を構築する強力なリンク グラフを使用しています。Twitter で使用できるメタデータはほぼこれだけなので、SpamAssassin はツイート (「本文」) の内容そのもの以外に何もしません。

確かに、ベイジアン メカニズムが役立つ可能性はありますが、これもヘッダーと電子メール固有のトークン化技術で構成されています。URI DNSBL も同様ですが、他のルックアップ (Razor2、Pyzor、すべての DNSBL) は役に立たず、正規表現ルール署名の 99% 程度も同様です。(また、多くのオンライン インデックスはライブ ルックアップ用に調整されているため、古いエントリが期限切れになることにも注意してください。そのため、数日前のスパムをスキャンすると、エントリがあったとしても、エントリがなくなっている可能性があります。)

コンテンツのみのスパム フィルターを使用する方がはるかに優れています。メッセージのコレクションが十分に大きい場合は、サブセットでベイジアン ベースのフィルターをトレーニングし、残りの部分でそれを実行できます。継続的な取り組みである場合は、間違いを見つけたら修正してください。時間の経過とともに使用可能なものに改善されるはずです。

SpamAssassin を本当に使いたい場合は、この回答の残りの部分を読んでください。本当のrfc5322 (元は rfc822) の電子メールを受け取っていると仮定して、この記事を書いたことを覚えておいてください。


2 つの可能性があります:呼び出しの問題(SpamAssassin が正しく実行されていない、または判定を適切に抽出していない) または有効性の問題(SpamAssassin は実行されますが、必要な精度がありません。この場合は、偽陰性の問題) です。 )。

GTUBEテスト文字列は次のとおりです。

XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

この 2 つを診断するには、上記の GTUBE テスト文字列をテスト メッセージに追加して (実際のメッセージをコピーし、その文字列を本文に含めます)、コードを再度実行してみてください。

  • スパムとしてフラグが立てられない場合は、呼び出しに問題があります。
  • 419 がスパムとしてフラグ付けされない場合は、有効性に問題があります。

呼び出しの問題:デバッグを有効にしてみてください。ここに出力を貼り付けます。その種の問題を診断するには、もっと手がかりが必要です。

有効性の問題:ブロックリスト(DNSBL と URI DNSBL) とネットワーク化されたプラグイン (例: RazorPyzor ) を確保し、ベイズを積極的にトレーニングする(200 以上のスパムと 200 以上のハムが必要)ことを確認することで、SpamAssassin の結果を根本的に改善できます。また、spamtips.org の究極のセットアップ ガイドにも役立つヒントがあります。

特定のスパムの例についてさらにヘルプが必要な場合は、可能であれば編集を制限してメッセージを投稿する必要があります。ただし、ほとんどのスパムは短いものではありません)。

于 2014-01-28T18:15:55.280 に答える