Tips記事
» 2003年02月06日 18時59分 UPDATE

「未承諾広告」メールを排除したい

[木田佳克,ITmedia]

 特定の文字列で判別可能なメールは、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.

注目のテーマ