玄箱でprocmailを使う(mail振り分け)
procmailを使ってメールを振り分けます。ここでの環境は、exim4とprocmail、dovecotを使用しています。
基本は、各ユーザのホームディレクトリに .procmailrcというファイルを作成し、ファイルの振り分けや SPAMフィルター等のプログラムと連携するように記述します。
振り分けルールをレシピというのですが、まず環境を定義します。
# 最低限必要と思われる設定
MAILDIR=$HOME/Maildir/ # メールの保存先
DEFAULT=$MAILDIR # 条件に一致しなかった時の配送先
LOGFILE=$MAILDIR/procmail.log # ログの保存先
レシピの開始は次のような書式で記述します。
:0 [flags] [ : [locallockfile] ]
flagsには、「H」ヘッダーや「B」本文等を指定し、省略するとヘッダーを対象として処理を行います。
振り分け条件は、「*」で開始し、正規表現(egrepの拡張正規表現と互換)を使用します。
振り分け先のディレクトリを指定する際は「/.」で閉じます。
procmailのレシピ例
振り分けの設定は、ホームディレクトリの.procmailrcへ記述していきます。
Amazonからのメールを振り分ける場合
MAILDIR=$HOME/Maildir/ # メールの保存先
DEFAULT=$MAILDIR # 条件に一致しなかった時の配送先
LOGFILE=$MAILDIR/procmail.log # ログの保存先
:0
* ^From: .*@amazon\.co\.jp.*
$MAILDIR.amazon/new/.
Subjectに未承諾広告とあったら削除する場合
:0
* ^Subject:.*iso-2022-jp
* ^Subject:.*\/.*
* ? echo "$MATCH" | nkf -e | grep '未承諾広告'
/dev/null
X-ML-Name: softetherを含むメールをbnote@kuro_boxへ転送する場合
:0
* ^X-ML-Name: softether
! bnote@kuro_box
アクションに「!」を指定することで、指定されたアドレスに転送します。 アドレスをスペースで区切る事で複数指定することができます。
続くレシピのためにメッセージのコピーを残す場合
:0c
* ^X-ML-Name: softether
! bnote@kuro_box
「c」フラグを設定することでコピーを残すことができます。