2013年1月16日水曜日

postfix 設定 その7 正規表現によるバーチャルドメイン設定


以前こちらでバーチャルドメインの設定を行いましたが、バーチャルドメイン設定は正規表現を用いて行う事もできます。

例えば、会員100人のメールアドレスがID番号で「1~100@mail.aaaa.com」などになる場合、1~100のうちどのアドレスにメールを受信したとしても同じユーザーに転送したい(同じプログラムを起動したい)事はあると思います。
その場合、以前の設定方法だと100行記述が必要でしたが、決まったルール内で可変となる場合は正規表現を用いて転送設定を行うと短い記述で設定が出来ます。

ここでは例として
「1111@mail.aaaaa.com」「2@mail.aaaaa.com」「33333333@mail.aaaaa.com」など
「数字@mail.aaaaa.com」宛てのメールを受信した場合、ユーザー「yamada」に転送する設定を行います。

まず、Postfixで正規表現が利用可能か確認します。
$ postconf -m
btree
cidr
environ
hash
ldap
mysql
nis
pcre
proxy
regexp
static
unix
pcreが表示されれば問題ありません。
続いて設定です。

①読み込みファイル作成。
読み込みファイルを作成します。
ファイル名にルールはない模様なので、とりあえず「/etc/postfix/virtual.users」で作成します。
$ vi /etc/postfix/virtual.users

設定内容
/^\d+@mail.aaaaa.com yamada
記述の順番はhashの時と同じく
[適応させるメールアドレス][スペース][受信するユーザー]
となります。

②「/etc/postfix/main.cf」の編集。
設定ファイル「/etc/postfix/main.cf」を編集します。
ポイントは下記1点です。
#virtual_alias_maps = hash:/etc/postfix/virtual
virtual_alias_maps = pcre:/etc/postfix/virtual.users
  • 「virtual_alias_maps」:転送設定を記述する項目です。以前に「hash:/etc/postfix/virtual」で設定をしていましたのでこれをコメントアウトし、今回新しく作成した「/etc/postfix/virtual.users」をpcreで設定します。

③postfixをリロード。
$ /etc/rc.d/init.d/postfix reload

④確認。
設定が正しく反映されているかを確認します。
「111@mail.aaaaa.com」「222@mail.aaaaa.com」のように「数字@mail.aaaaa.com」にメールを送信し、ユーザー「yanada」で受信できる事を確認しましょう。
受信できない場合は、「/var/log/maillog」を確認してみてください。
「 Connection refused 」と出ていた場合は宛先不在のエラーなので、正規表現の部分に誤りがある可能性があります。


■設定の正誤確認。
「postmap」コマンドを利用し、正規表現が正しく設定されているかを確認できます。
postmap -q "確認したい文字列" pcre:/etc/postfix/virtual.users
適応する場合は結果の文字列(yamada)が返ってきます。
適応しない場合はなにも返ってきません。

例えば上記例を設定してある場合は以下の結果となります。
【適応する場合】
$ postmap -q "999@mail.aaaaa.com" pcre:/etc/postfix/virtual.users
↓
$ yamada

【適応しない場合】
$ postmap -q "999abc@mail.aaaaa.com" pcre:/etc/postfix/virtual.users
↓
$ (なにも返ってこない)

以上です。

本項目は下記ページを参考にさせて頂きました。
http://www.postfix-jp.info/trans-2.1/jhtml/postmap.1.html
http://blog.playispeace.com/554/postfix_random_mailaddress_setup/



0 件のコメント:

コメントを投稿