xserver
Home クッキー及びWeb ビーコンについて



Procmail によるメールの自動振り分け

procmail の概要

受信したメールをルールに則って振り分けてくれるProcmail について解説していきます。かなり細かいところまで柔軟に振り分ける事ができるので活用しないてはありません。




■procmail のインストール

 RedHatの場合は、既にRPMパッケージがインストールされていると思います。インストールされていなければインストールしておいてください。

# rpm -q procmail
# apt-get install procmail
# which procmail
/usr/bin/procmail





■Postfix の設定

 Postfix の設定を行っておきます。/etc/postfix/main.cf を開いて以下の行を探します。

# vi /etc/postfix/main.cf

#mailbox_command = /some/where/procmail
#mailbox_command = /some/where/procmail -a "$EXTENSION"

 procmail コマンドのパスを以下のように編集しておきます。どこにprocmail があるのか確認するには、which procmail コマンドを実行してください。

mailbox_command = /usr/bin/procmail
#mailbox_command = /some/where/procmail -a "$EXTENSION"



■procmail の設定ファイル

 procmail は、用途に分けて記述する設定ファイルが異なります。システム全体に対してprocmail の内容を適用するには、/etc/procmail に記述し、ユーザー個別に対して適用するには、$HOME/.procmailrc に記述します。未承諾広告やSPAMメールの削除用途以外は、できるだけ、ユーザー個別の設定ファイルを用意し、そこにレシピを記述しておいた方がいいでしょう。なお、/etc/profile に記述しても、.procmailrc に記述する場合でも書式は同様です。

 /etc/procmail システム全体に対して適用する場合
 .forward
 .procmailrc
ユーザーごとに対して適用する場合



■ユーザー個別の設定

 ユーザーごとにprocmail の設定を行っていきます。必要となるファイルは、$HOME/.forward と$HOME/.procmailrc です。最初に、ホームディレクトリ直下に、.forward を作成しておきましょう。既に、.forward を転送用途に使用していた方は、.procmailrc で同様の操作が実現できるので記述内容をコメントアウトするか、削除してしまっても構いません。.forward に記述する内容は以下の1行です。/usr/bin/procmail は、各環境に合わせてパスを変更しておいてください。「ユーザ名」には、システムに存在するユーザ名を入力してください。また、Maildir 形式のメールボックスを使用している方は、ユーザ名の代わりに「~/Maildir/ 」とします。

$ vi .forward
"|IFS=' ' && exec /usr/bin/procmail -f- || exit 75 #ユーザ名"

もしくは、

"|IFS=' ' && exec /usr/bin/procmail -f- || exit 75 #~/Maildir/"

■.procmailrc の設定

 次に、ホームディレクトリ直下に、.procmailrc を作成します。先頭行には、procmail が参照する環境変数を記述しておきます。MAILDIR変数は、Maildir 形式を使用していない場合は、デフォルトで、/var/spool/mail 以下にメールが格納される(mbox 形式)のでわざわざ記述する必要はありません。LOGFILE変数を記述しておくとprocmail が実行した内容をログってくれるので非常に便利です。なお、LOGFILEを指定した場合は、きちんとログのローテートも行っておきましょう。

$ vi .procmailrc
SHELL=/bin/bash
PATH=$HOME/bin:/usr/bin:/usr/local/bin
MAILDIR=$HOME/Maildir/
DEFAULT=$MAILDIR
LOGFILE=$MAILDIR/procmail.log 

◎procmail の環境変数
 SHELL 使用しているシェルのPATHを指定する
 PATH 検索するコマンドのPATHを指定する
 MAILDIR メールの格納場所を指定する
 DEFAULT レシピに一致しないメッセージがデフォルトで格納されるPATHを指定
 LOGFILE ログファイルのPATHを指定する

 環境変数を記述し終えたら、いよいよとメールの振り分けの設定を行います。ここから先は用途によって異なってくるので簡単な例を紹介していきます。

■メールの転送と削除

 受信したメールを指定したメールに転送させたり、特定のアドレスからきたメールを削除したりする事ができます。レシピには正規表現を使う事ができますが、ここでは説明を割愛させていただきます。以下の例では、vodafone.ne.jp を含んだアドレスからきたメール(=From)を削除します。/dev/null を指定する事で、メッセージを廃棄することができますが、復元は不可能なので注意してください。

# vi ~/procmailrc

:0
* ^From.*vodafone.ne.jp
/dev/null

 受信メールを指定のアドレスに転送させたい場合は以下のようにします。「 ! 」のアクションを先頭に記述しておく事で指定のアドレスに転送できるようになります。なお、複数のアドレスに転送させたい場合は、スペース(半角)で区切って列挙します。

# vi ~/procmailrc

:0
* ^From.*vodafone.ne.jp
!xxxxxx@yahoo.co.jp yyyyyy@yahoo.co.jp

 上記の方法では、xxxxxx@yahoo.co.jp と yyyyyy@yahoo.co.jp に転送されますが、サーバー上にはメールは残りません。これでは、自宅のメーラーで受信しようとした場合にメールが残っていないので不便です。受信メールをサーバー上に残したい場合には以下のようにします。:0 c のようにするとメールをサーバー上に残します。mbox 形式の方は、~/Maildir の箇所に自分のユーザアカウントを指定してください。

:0
* ^From.*t.vodafone.ne.jp
{
     :0 c
     !xxxxxx@yahoo.co.jp yyyyyy@yahoo.co.jp

     :0
     ~/Maildir/
}

■特定のフォルダに振り分ける

 仕事用、プライベート用、メーリングリスト用など用途に分けてフォルダにわけたほうが便利ですね。以下のように記述すると特定の文字列を含むメールを特定のフォルダに振り分ける事ができます。以下、ふたつの例では、Postfix のメーリングリストとSambaのメーリングリストを各フォルダに振り分けています。なお、メーリングリストの場合は、Subject やFrom、To で振り分けるのではなく、X-ML-NameX-Sequenceヘッダを使用して振り分けるのが推奨されています。 

:0
* ^(From|CC|To).*postfix-jp-list@lists.sourceforge.jp
.postfix-ML/

:0
* ^X-ML-Name: samba-jp
.samba-ML/

 なお、MH形式(1メール1ファイル)の場合は、./フォルダ名 ではなく、フォルダ名/. となる事に注意してください。また、:0 のさらに右に半角スペースを空けて、「 : 」(コロン)を追加し、ロックをかけてください(以下参照)。

:0 :
* ^X-ML-Name: samba-jp
samba-ML/.

◎振り分け + 転送

 以下の例では、xxxxxx@plala.or.jp から来たメールをyyyyyy@yahoo.co.jp に転送しつつ、private フォルダに残します。

:0
* ^From.*xxxxxx@plala.or.jp
{
:0 c
!yyyyyy@yahoo.co.jp

:0
.private/
}




■ログのローテート

$Maildir/procmail.log {
weekly
rotate 4
missingok
create 666 $USER $USER
}


/usr/sbin/logrotate /etc/logrotate.conf



■参考

⇒Procmail の紹介とレシピの書き方







TOPに戻る

Sponcerd Link


Search
 
Web サイト内
Rental Server

【レンタルサーバのXbit】 低価格・高品質のビジネスクオリティー。300メガ1,050円~30分で サービススタート可能!


容量300MB、月額125円、高性能なサーバが日本最大級のバックボーンに直結。
さくらのレンタルサーバ



当サイトはLinux自宅サーバーの構築を目的としたサイトです。
当サイトに関するご意見、ご要望等は、こちらのメールアドレスよりお願いします。
Beginning | Introduction | Installation | Server |
Security | Tips | Related-Sites
Copyright©2003-2006 KORO All Rights Reserved.
総計:
今日:
昨日: