サーバのスパム フィルタ君が頑張ってくれるお陰か、メーラーの受信トレイがスパム メールに占拠されることは全くなかったのですが、ここ数週間、何故かスパム メールを受信することが増えてきました。そこで、メーラーで受信したスパム メールを、サーバに戻してスパム フィルタに喰わせて学習させるようにした、その覚書き。
スパム メールは、サーバの 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 件まで表示しています)