procmailでメールフィルタリング
Linux LPIC編。(第12章 メールサービス)
procmailはメール配信の際にフィルタリングサービスを行うMDA(Mail Delivery Agent)。
フィルタリングの設定は、名ユーザディレクトリ内にの.procmailrcファイルに記述する
(システム全体の設定は/etc/procmailrcで行う)。フィルタリングのルールをレシピ
と呼ぶ。この「レシピ」の記述方法は重要みたいですよ!
書式
:0 [フラグ] [:ロックファイル]
* 条件式
アクション
1行目のフラグは、procmail にメールを渡す方法を示す。
2行目の条件式は、処理の対象となるメールの条件を正規表現で記述する。
※この「正規表現」に注意・・・
条件式は複数指定可能で、その場合指定したすべてのメールにマッチした時点で
アクション行の処理が実行される。
なお、条件式を省略するとすべてのメールにアクショが実行される。
3行目のアクションで、ファイルの保存やメールの転送などの処理を指定する。
フラグ、条件式、アクションについて一応まとめておく。
フラグ
D 大文字と小文字を区別する
H メールヘッダ部分で検索
B メール本文で検索
c メールのコピーを残す
h アクションにヘッダ部分のみ渡す
b アクションに本文部分のみ渡す
※Hとh、Bとbの違いに注意〜
条件式
! 条件を否定
< 指定したバイト数以下なら処理
> 指定したバイト数以上なら処理
アクション
/dev/null 破棄する
ファイル名 指定したファイル名のファイルに格納する
ディレクトリ名 一意のファイル名を付けてディレクトリ内に格納する
ディレクトリ名/. ディレクトリ内に連番を付けて格納する
| パス名 指定したパスのプログラムに渡す
! メールアドレス 指定したメールアドレスに転送する
.procmailrcの記述例を。最初にホームディレクトリやログファイル名などについて、
適宜環境変数の設定を記述しておくとよい。
まずは一番わかりやすいものを。
以下はspamがサブジェクトに含まれるメールを破棄するための指示。
一般的なワイルドカート「*」ではなく、「.*」となることに注意。
:0
* ^Subject : .*spam.*
/dev/null
続けて以下は、差し出し人のメールアドレスにmessage.netが含まれるメールをmessage
ディレクトリに振り分ける設定。アドレス内の「.」が正規表現に解釈されないよう
エスケープしている。
:0
* ^From : .*message\.net.*
$MAILDIR/massage/.
正規表現には要注意、みたいだな〜。
以下はメールサイズが5000バイト以内であればtensou@message.netに転送する設定。
:0
* < 5000
!tensou@message.net
procmailを利用するには.forwardでも設定の記述が必要になる場合がある、とのこと
だが、、、ここは流して、最後にDovecotとCourier IMAP。
DovecotはPOP3,IMAP4に加え、POP3S,IMAPSにも対応したMDA。
Dovecotの設定は/etc/dovecot.confで行う。
以下の記述は利用するプロトコルを指定している。
protocols = imap imaps pop3 pop3s
ついでに名プロトコルがリッスンするポートは、順番に143、993、110、995となる。
まぁ、おさらいも兼ねて。
次に、メールボックスの形式にMaildir形式を選択する場合は、以下のパラメータを記述。
default_mail_env = maildir:~/Maildir
Courier IMAPはユーザ認証にCourier authentication libraryを必要とするので、
利用の際はインストールの上、authdeamondデーモンを起動させる。
加えてCourier IMAPはMaildir形式のメールボックスを利用するため、ホームディレクトリ
にメールボックスがない場合は、以下のコマンドで作成する。
$ maildirmake Maildir
お、終わった?。。先が見えてきた。。。
次回は「第13章 システムセキュリティ」だー!
出典
Linux教科書LPICレベル2(翔泳社)
Linux記事一覧はこちらをどうぞ
↓ ↓ ↓
Linux-index