玄箱で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」フラグを設定することでコピーを残すことができます。