処理対象にする受信メールの送信先アドレスを正規表現をつかってフィルタリングした。
■設定方法
(1)トランスポート処理対象メールの送信先アドレス正規表現とその委託先をmaster.cfファイルに記述した。
委託先として指定した、test:localhost は、後述のpipe処理用サービスである。
[root@test postfix]# vim /etc/postfix/transport
(省略)
/^test-.*\_0.*@example\.domain\.tld$/ test:localhost
(省略)
ところで、別のメールサーバにSMTPで転送するには、次のように記述する。
/^test-.*\_0.*@example\.domain\.tld$/ smtp:another-sever.tld:25
(2)上で記述したファイルを、main.cf ファイルに登録した。
<注意>
transportファイルの検索を高速にするためのバイナリ化処理は行わない!
正規表現を利用する場合はテキストファイルのまま使用する。
[root@test postfix]# vim /etc/postfix/main.cf
(省略)
#コメントアウト#transport_maps = hash:/etc/postfix/transport
transport_maps = regexp:/etc/postfix/transport
test_destination_recipient_limit = 1
(省略)
(3) マスターファイルに、委託先についてに記述した。
argv= には、パイプ先になる標準入力対応のプログラムとその引数を記述する。
user= には、そのプログラムを実行するLinuxユーザー名を記述する。
$sender や、$mailbox などの変数をつかって情報を取得できる。 (他にもある。)
[root@test postfix]# vim /etc/postfix/master.cf
(省略)
test unix - n n - 1 pipe
flags= user=uucp argv=/etc/testscript.sh testarg1 ${sender} ${mailbox} testarg4
(省略)
(参考)
・How can I route some emails to a script in Postfix?
< http://serverfault.com/questions/322657/how-can-i-route-some-emails-to-a-script-in-postfix > 2015年4月30日
・[debian-users:37348] Re: postfixで正規表現ルックアップテーブル
< http://lists.debian.or.jp/debian-users/200306/msg00121.html > 2015年4月30日