procmail

(作成:2005/04)

ウチの場合、色々あって鯖管モドキな事をしてたりする。そうすると、外部からのアタックを監視したりするために毎時デーモンからログが届いたり、鯖管グループからのメールが来たりする。正直、好んで読みたいメールじゃない。 んで、そんなのまで一緒くたに inbox に入るのも煩わしい。Mewならヘッダのパターンでマークしてまとめて移動は簡単だけど、それも毎回手動てのもアレだ。

つー訳で便利な振り分けソフトがこちら。ヘッダ部を正規表現でチェックして自動振り分けとかしてくれて便利。 更にディレクトリ振り分け機能だけでなく、必要なメール限定でメール転送なんかも出来るため、多くのメールサーバのメールを一ヶ所のメールサーバに一括転送とか、仕事先/大学のメールを携帯メールに転送とか、使ってみるとやっぱり便利。

まーでも、こういうので振り分けちゃったりすると、余計にログ確認とか怠っちゃうようになるから注意。

Install on Debian

# apt-get install procmail

設定

共通設定

といっても必要だったり必要でなかったり。グローバル変数を頭に設定しているだけ。必要に応じて記述しといて下さい。 記述方法はシェルスクリプトと同様に記述出来る。

## ~/.procmailrc

PATH=$HOME/bin:/usr/bin:/usr/ucb:/bin:/usr/local/bin:.
MAILDIR=$HOME/Mail
DEFAULT=$MAILDIR/inbox/.
LOGFILE=$MAILDIR/procmail.log
LOCKFILE=$MAILDIR/.lock

フォルダ自動振り分け

以下の例は、 mail.hyakki.local からのrootメールを from/root フォルダに振り分け、 mail.hoge.co.jp からのメールを必要なドメインからのものだけ取得する設定。

## ~/.procmailrc

# rootメールの振り分け
:0
* ^From.*root@mail.hyakki.local
from/root/.

# 必要なドメインのものだけ取得
:0
* ^Delivered-To.*riyo@mail.hoge.co.jp
* !^From.*mail.hoge.co.jp
trash/.

# 条件以外の全てをinboxへ
:0
*
inbox/.

メール転送

メール転送までの流れは

  1. メールが届く
  2. .forward (または .qmail ) によりメールが procmail に渡される
  3. procmail は .procmailrc によりメールを振り分ける
  4. 必要に応じてメール文書が圧縮され転送される

てな具合。取り敢えず以下のものは必須ということで。最後の # の部分に自分のアカウント名を入れる。

## ~/.forward

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

以下の例は、転送不要なメールを除外し、残ったメールのコピーを携帯に転送する設定。

## ~/.procmailrc

# 転送不要なメールを除外
:0
* ^From.*root@
/dev/null

:0
*^From.*daemon@
/dev/null

# 自分が送ったメールも不要
:0
* ^From.*riyo@mail.hyakki.local
/dev/null

# それ以外のメールをコピーして携帯に転送
:0 c
*
! riyo@keitai.denwa.ne.jp

パーミッション変更

最後の最後に一番大事な事。このファイルには見ての通り、パスワードがベタ書きされているため、他人に見られたりすると非常にヤバいわけである。
システム側もそれなりに気の利いた事をしてくれて、このままfetchmailを起動しようとしてもパーミッションエラーが返されることになる。なので、設定ファイルを以下のようにパーミッション変更してやる必要がある。

$ chmod 600 ~/.procmailrc