特定の文字列で判別可能なメールは、Eメール自動処理ツール「Procmail」を利用することで排除させることが可能だ。ここでは、Sendmail互換のメールボックス(/var/spool/mail/[ユーザー名])受信を前提とし、特定文字列のサブジェクトメール排除方法を紹介しよう。
まず最初に、次のように指定してProcmailがインストールされているかを確認する。確認できなければ、SpeakEasy.Rpmfind.Net Serverなどで探し出し、インストールすればよい。
$ rpm -qa|grep procmail procmail-3.22-7 $ which procmail /usr/bin/procmail $ vi ~/.forward "|IFS=' ' && exec /usr/bin/procmail -f- || exit 75 #ykida" |
上記の設定内容により、whichでprocmailへのパスを確認後、「.forward」ファイル内に記述することで全受信メールをProcmailへ回送指定する。ただし、黄色文字の個所は、自分のアカウント名に置き換える必要がある。
次に、Procmailの基本設定と割り振り条件を定義するが、ここでは「未承諾広告」という文字列がサブジェクト(件名)に含まれる条件に限る例だ。また、ホームディレクトリ下に「Mail」という名でディレクトリを作成し、その下にProcmailに関する設定ファイルやログを記録するよう設定している。この書き出し先は、パーミッションに制限されない限り任意だ。
$ vi ~/.procmailrc LOGFILE=$HOME/Mail/procmail.log LOCKFILE=$HOME/Mail/.lockfile MAILDIR=$HOME/Mail/ :0 * ^Subject:.*iso-2022-jp * ^Subject:.*\/.* * ? echo "$MATCH" | nkf -meZ2 | sed 's/[[:space:]]//g' | egrep '未承諾広告' /dev/null -------------- $ mkdir ~/Mail |
設定後は、Eメールが受信されるたびに.forwardファイルを保存したアカウント内で自動処理される。なお、上記の条件は「未承諾広告」の文字列が判別された際に「/dev/null」(破棄)する指定であり、最後の行を例えば「trash/.」と置き換えると、~/Mail/trash/下に1から連番のファイル名で排除メールが保存される。これらの条件に合わないEメールは、通常通り「/var/spool/mail/」下のユーザー名ファイルにメール保存される。
下記のように、ログファイルを参照すればどのような処理が行われたかが把握可能だ。
$ tail ~/Mail/procmail.log From xxxxx06.mail@post.com Thu Feb 6 17:40:08 2003 Subject: Hi, do you need this? lswc Folder: /var/spool/mail/ykida 12456 From info@atxxxxxx.co.jp Thu Feb 6 05:10:07 2003 Subject: 未承諾広告※ Folder: /dev/null 3524 |
なお、さらにウイルスメールなども割り振りを行いたいといった場合には、セキュリティHow-To「第4回:fetchmailによるメール受信時のウイルススキャン」を参考にするとよいだろう。
Copyright © ITmedia, Inc. All Rights Reserved.