procmailでメールを振り分ける。 Postfix+DovecotのIMAPサーバでの例。
まず/etc/postfix/main.cfを編集して次のように設定しておく。
つづいて、procmailのパーミッションを変更してsetuidビットを立てる。
# 現在のパーミッションを確認 > ls -ld /usr/bin/procmail -rwxr-xr-x 1 root mail 81616 3月 18 2005 /usr/bin/procmail # パーミッションを変更 > chmod 4755 /usr/bin/procmail # 変更を確認 > ls -ld /usr/bin/procmail -rwsr-xr-x 1 root mail 81616 3月 18 2005 /usr/bin/procmail
ちなみに、setuidビットを立てない場合、/var/log/maillogにこのようなメッセージがはき出される。
relay=local, delay=1, status=bounced (can't create user output file. Command output: procmail: Couldn't create "/var/mail/santamarta" )
つづいて、ホームディレクトリ下に.forwardと.procmailrcというファイルを作成する。 .forwardで受信したメールをprocmailに渡すように設定し、.procmailrcで振り分けの設定を行う。 まずは.forwardの記述例。
"|IFS=' ' && exec /usr/bin/procmail -f- || exit 75 #santamarta"
ダブルクォーテーションも含めて記述する。 また、#以降にユーザ名を記述する。 続いて、.procmailrcの記述例。
SHELL=/bin/bash PATH=$HOME/bin:/usr/bin:/usr/local/bin MAILDIR=$HOME/Maildir/ DEFAULT=$MAILDIR/ LOGFILE=$MAILDIR/procmail.log VERBOSE=ON :0 * ^From.*atmarkit\.co\.jp .INBOX.@IT/ :0 * ^Subject.*LogWatch .INBOX.LogWatch/ :0 * ^Subject.*Cron .INBOX.Cron/
最初の6行は環境変数の設定で、メールの保存ディレクトリ、ログファイル名、ログの詳細度などを設定している。 0:で始まる三つの部分が、振り分けのルール。 上から順に、
となっている(上記に該当しないメールは、受信トレイに振り分けられる)。 振り分けルールについての詳細な説明は、こちらなどを参照のこと。
Thunderbirdで振り分けたメールを参照できるように設定を行う。 まず、受信トレイを右クリックし、「購読」をクリックする。
すべてのフォルダにチェックを入れてOKボタンを押す。 この状態では、新着メールがフォルダに振り分けられても自動的には通知されないので、通知するように設定する。 そのために、任意のフォルダを右クリックし、
「このフォルダに新着メッセージがないか確認する」にチェックを入れる。 これをすべてのフォルダに対して行えばOK。