スパム メールと闘う

Posted by
ぴろり
Posted at
2013/11/10 12:03
Trackbacks
関連記事 (0)
Comments
コメント (2)
Post Comment
コメントできます
Category
電算室 カテゴリ

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

この記事を Delicious に追加する   このエントリーをはてなブックマークに追加  

概要

  • メール サーバ:さくらインターネットのレンタル サーバ(スタンダード プラン)
  • スパム フィルタ:SpamAssassin
  • メーラー:Mozilla Thunderbird で POP 受信

 スパム メールは、サーバの SpamAssassin と、Thunderbird の迷惑メール フィルタで防いでいます。今回、SpamAssassin を抜けて、Thunderbird まで届いたスパム メールを、SpamAssassin に喰わせて学習させるところの手順を簡略化してみました。仕組みとしては;

  1. Thunderbird の迷惑メールフォルダに蓄積されたスパム メールをサーバにアップロードするバッチ ファイルを作成し、タスク スケジューラで定期実行
  2. アップロードされたファイルを SpamAssassin に喰わせるスクリプトを作成し、cron で定期実行

迷惑メールをアップロード

 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%

説明

  • 3行目 ... Thunderbird の迷惑メール フォルダのパスを指定します。フォルダと言っても、単一のファイルにメールが連結されて保存されています。
  • 4行目 ... サーバ上の新しいファイル名をランダムに生成しています。
  • 6行目 ... サーバのホスト名を指定します。
  • 7~8行目 ... サーバへのログイン情報です。
  • 10行目 ... scp コマンドへのパス。私は PuTTY に同梱されていた pscp.exe を使いました。
  • 12行目 ... COMMAND_SCP コマンドを利用して、アカウント SCP_USERIDSCP_PASSWTARGET_HOST にログインし、Thunderbird の迷惑メール フォルダに蓄積されたスパム メール(SOURCE_FILE)を、サーバの TARGET_PATH にコピーします。

SpamAssasin にスパム メールを喰わせる

 メール サーバでは、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

説明

  • 6 行目 ... ~/tmp ディレクトリにあるスパム メール(SPAM で始まるファイル)を列挙します。ファイルが一つもなかった場合に警告メッセージが出るのを、4 行目で抑制しています。
  • 7 行目 ... ディレクトリは無視します。
  • 8 行目 ... SpamAssassin にスパム メールとして食わせます。
  • 9 行目 ... 食べ終わったらファイルを削除します。

 SpamAssassin に同じスパム メールを何度食べさせても意味が無いのですが、今回はその習性(?)を利用して、スパム メールの重複チェックを全く省いています。

この記事を Delicious に追加する   このエントリーをはてなブックマークに追加  


この記事を読んだ人はこんな記事も読んでいます記事リコメンデーションについて

カバー画像:さくらレンタルサーバのブラックリスト登録状況について

関連記事/トラックバック

関連記事/トラックバックはまだありません

この記事にトラックバックを送るには?

コメントを投稿する

 
 (必須, 匿名可, 公開, トリップが使えます)
 (必須, 匿名可, 非公開, Gravatar に対応しています)
 (必須)
スパム コメント防止のため「投稿確認」欄に ランダムな数字 CAPTCHAについて を入力してから送信してください。お手数ですがご協力のほど宜しくお願いいたします。