ProcmailによるSPAM対策
最近やたらと、「未承諾広告※ ・・・」というメールが届き始めた。家族にも届くので、一括してごみ箱行きにするため、メール振り分けソフトであるProcmailを使って処理することにしました。いろいろ調べ検討しましたが、ProcmailはPostfixからも起動できるのですが、おやじの環境はAntiVirを導入していたり、メールボックスがMaildir形式であったりしたため、オーソドックスな方法での導入となりました。なるべく、管理を簡単にしたかったのですか、下記が限界でした。他の方法があれば教えていただくとありがたいのですが。
なお、設定を誤るとメール紛失や、ループが発生しますので各人のリスクで導入検討してください。おやじは、バックアップ機で試験後、導入しましたがなかなかうまくいきませんでした。
■Promailの設定
RedHatでは、procmailはプレインストールされているので、設定のみで使用できます。一応、whichコマンドでインストールされているか確認します。
$ which procmail /usr/bin/procmail |
上記のように、procmailのパスが表示されればインストールされています。
Procmailを使用するには、下記の2つのファイルが必要です。この2つのファイルは、各ユーザのhomeディレクトリに置きます。ここが少し不便で、ユーザごとに設定しなければなりません。共通管理にしたかったのですが、Postfix連携でmbox形式ならできそうですが、Maildir形式ではうまく配送できませんでした。
・.forward : 受信したメールをprocmailに処理させるためのファイル
・.procmailrc: レシピとも言われるもので、どのようにメールを配送するかを記述したファイル
■.forwardファイルの設定
各ユーザのhomeディレクトリに下記要領で、Procmailを起動させるための.forwardファイルを作成する。
$ cd ~ $ vi .forward "|IFS=' ' && exec /usr/bin/procmail -f- || exit 75
#oyaji" |
・「/usr/bin/procmail」は、上記で確認したProcmailへのパスを指定する。
・最後の「#oyaji」のところは、登録するユーザ名を記述する。
■.procmailrcファイルの設定
各ユーザのhomeディレクトリに下記要領で、メール配送ルールを記述した.procmailrcファイルを作成する。
$ cd ~ $ vi
.procmailrc
PATH=/bin:/usr/bin:/usr/local/bin
<--環境変数の設定
MAILDIR=$HOME/Maildir
<--メールディレクトリへのパス
DEFAULT=$MAILDIR/
<--下記配送条件にマッチしなかった時の配送先
LOGFILE=$MAILDIR/procmaillog
<--ログの保存先を指定 LOCKFILE=$HOME/.lockmail
<--ロックファイルのパスを指定 SPAM=$HOME/.spam
<--スパムメールの保存先を指定
:0H:
* ^Subject:.*iso-2022-jp
* ^Subject:.*\/.*
* ? echo "$MATCH" | nkf -Zme | grep '未承諾広告※'
$SPAM
|
ルール(レシピ)はいろいろ書けますが、おやじは取り敢えずうるさい「未承諾広告※」だけ、弾くようにしました。今後、順次レシピを増やしていく予定です。
レシピの書き方は、検索すれば、インターネット上にいくらでもありますのでここでは簡単に。
- :0H: 「:0」はレシピの始まりを示し、「H」はメッセージのヘッダを明示的に解析し、後の「:」は上で指定したロックファイルでファイルロックすることを示す。
- * ^Subject:.*iso-2022-jp Subjectにiso-2022-jpがあったら。
- * ^Subject:.*\/.* タイトル部分を$MATCHに格納
- * ? echo "$MATCH" | nkf -Zme | grep '未承諾広告※' タイトル部分に「未承諾広告※」があったら、下で指定した保存先に移動。