読者です 読者をやめる 読者になる 読者になる

Postfix で 正規表現で From を書き換え

sender_canonical_maps で正規表現マップを使って From を書き換えようとしたときに、

/^hoge/    fuga

のようなマップで、アドレスの先頭の hoge だけを fuga に書き換えられると思いましたが、書き換え先(↑の「fuga」の部分)は、マッチした部だけでは無く、アドレス全体を指定しなければならないようです。


例えば↑のマップの場合・・・

hogehoge@example.com → fuga → fuga@$myorigin

のように書き換えられて、自ホストのドメインのアドレスに書き換えられてしまいました。


意図通りマッチした部分だけ書き換えたければ次のように指定する必要があります。

/^hoge(.*)$/    fuga${1}


ただ、書き換え先を「@example.net」のように指定した場合は、ドメイン名のみ書き換えられてアカウント名はそのままになりました。なので、下記のようなマップで「hoge@example.com → hoge@example.net」のような書き換えが行われます。

/@example.com$/     @example.net

スタティックマップ*1で以下のようにすることでドメイン名だけの変更になったので、正規表現マップでもドメイン名だけを指定してやれば同じ動作になるのだと思います。

@example.com     @example.net

*1:hash:/etc/postfix/sender_canonical_maps