PerlのPOP3Client を使ったスパムメール対策

April 26, 2007 ところどころ修正、追記

目的

POP3 over SSL 通信で、プロバイダのメールボックスにあるスパムメールを除去する。

効果

プロバイダメールボックスに着信するメールの 2〜4割程度は、読まずに除去できる。
割合は、到着するスパムメールのパターンに左右されます。

基本動作

  1. POPサーバに接続します。まず POP3 over SSL による接続を試します。失敗したら POP3 を試します。
  2. 各メールについて...
  3. すべてのメールをチェックし終えると、接続を切ります。この時、削除マークがついた メールはメールボックスから削除されます。

留意事項

ライセンス

GPL とするので、好きにしてください。

必要なもの

参考にしたもの

ソースコード

ここからダウンロードできます。 return-path-checker.pl 本体
ルールを追加すると書き換えていますので、常に同じとは限りません。
TODO: バージョン管理

実行のための準備

実行ファイルの配置

ソースコード = 実行ファイル ですので、実行属性を付けて PATH の通った場所に置いてください。
$ chmod +x return-path-checker.pl

設定ファイル

~/.return-path-checker/ ディレクトリに 5つのファイルを置きます。 実行ファイルの名前を変更するなら、このディレクトリの名前も合わせて変更してください。
accountrp は存在しないと実行エラーになります。

私が使用している rp ファイル は ここにあります。
私が使用している badurl ファイル は ここにあります。

実行すると next を上書きします。 これは、繰り返し起動した時に 処理済のメールは対象にしないための仕掛けです。
rp を更新した直後 など、最初のメールからチェックしたい場合は
$ return-path-checker.pl 1
とするか next の中身を 1 に書き換えてから実行してください。 10 としても同じ効果があります。

実行と起動パラメータ

実行はコマンドラインから
$ return-path-checker.pl [start_number [end_number]]
とします。[]内は省略できます。
start_number はメールボックスに入っているメールの start_number 番目より処理を行うことを指定します。 end_number はメールボックスに入っているメールの end_number 番目まで処理を行うことを指定します。

TODO: 起動コマンドラインの例

スパムメール判定のためのパターン

Return-Path パターン

rp ファイルを見れば、何を考えているかは一目でわかると思います。

Return-Path 以外のパターン

その他の TODO

TODO: 補助ツールについて紹介する