サーバのスパム フィルタ君が頑張ってくれるお陰か、メーラーの受信トレイがスパム メールに占拠されることは全くなかったのですが、ここ数週間、何故かスパム メールを受信することが増えてきました。そこで、メーラーで受信したスパム メールを、サーバに戻してスパム フィルタに喰わせて学習させるようにした、その覚書き。
スパム メールは、サーバの SpamAssassin と、Thunderbird の迷惑メール フィルタで防いでいます。今回、SpamAssassin を抜けて、Thunderbird まで届いたスパム メールを、SpamAssassin に喰わせて学習させるところの手順を簡略化してみました。仕組みとしては;
Thunderbird の迷惑メール フォルダに蓄積されたメールを、サーバにアップロードするためのバッチ ファイルを作成し、タスク スケジューラを利用して定期的に実行するようにしておきます。Thunderbird の迷惑メール フォルダの保管ポリシーを変更し、メールが 100~500 通を超えたら削除するようにします。スパム メールの受信量と、アップロードの頻度を加味して適当に調整してください。
rem $Id$ SET SOURCE_FILE="X:\My Documents\Mozilla Thunderbird\Local Folder\Junk" SET TARGET_PATH=/home/magicvox/tmp/SPAM_%RANDOM%%RANDOM%%RANDOM% SET TARGET_HOST=magicvox.sakura.ne.jp SET SCP_USERID=username SET SCP_PASSWD=p@ssw0rd SET COMMAND_SCP="X:\Program Files\PuTTY\pscp.exe" %COMMAND_SCP% ^ -v ^ -l %SCP_USERID% -pw %SCP_PASSWD% ^ %SOURCE_FILE% ^ %TARGET_HOST%:%TARGET_PATH%
pscp.exe
を使いました。COMMAND_SCP
コマンドを利用して、アカウント SCP_USERID
と SCP_PASSW
で TARGET_HOST
にログインし、Thunderbird の迷惑メール フォルダに蓄積されたスパム メール(SOURCE_FILE
)を、サーバの TARGET_PATH
にコピーします。メール サーバでは、SpamAssassin にスパム メールを食わせると、その特徴を学習します。これも、スクリプト ファイルとして用意しておき、cron を利用して定期的に実行されるようにしておきます。
#!/bin/csh # $Id$ set nonomatch foreach fname (~/tmp/SPAM*) if (-f $fname) then /usr/local/bin/sa-learn --spam --mbox -q $fname /bin/rm $fname endif end
~/tmp
ディレクトリにあるスパム メール(SPAM
で始まるファイル)を列挙します。ファイルが一つもなかった場合に警告メッセージが出るのを、4 行目で抑制しています。SpamAssassin に同じスパム メールを何度食べさせても意味が無いのですが、今回はその習性(?)を利用して、スパム メールの重複チェックを全く省いています。
寄せられたコメント (全 2 件中、最新 5 件まで表示しています)