メールフォームの様なアプリの開発時にテストメールが外部へ送信されないようにするために、全てのドメイン宛てのメールを受信するように設定したときのメモ。
ただし、自社のドメイン宛てのメールはそのまま配送したかったので、一部のドメインは普通に送信するように設定しています。
トランスポートマップを使う方法と、デフォルトトランスポートを変更剃る方法の2案ありますが、後者の方が簡単で、前者の方が汎用的だと思われます。
トランスポートマップを使う方法
Postfix の mail.cfの設定
# ローカル配送で不明なユーザを拒否しない local_recipient_maps = # ローカル配送で不明なユーザへのメールは devel へ送る luser_relay = devel # トランスポートマップを指定 transport_maps = hash:/etc/postfix/transport
トランスポートマップ(/etc/postfix/transport)で一部のドメインを smtp、その他全てをローカル配送にする
mail.example.jp : example.jp smtp: .example.jp smtp: * local:
※自ホストが「mail.example.jp」のように「一部のドメイン」に含まれている場合、先頭のエントリを設けて smtp がループしないようにしなければならない
トランスポートマップのデータベース化
postmap /etc/postfix/transport
Postfix をreloadして設定の変更を反映
/etc/init.d/postfix reload
デフォルトトランスポートを変更する方法
Postfix の mail.cfの設定
# ローカル配送で不明なユーザを拒否しない local_recipient_maps = # ローカル配送で不明なユーザへのメールは devel へ送る luser_relay = devel # デフォルトトランスポートをローカル配送に変更 default_transport = local # 一部のドメインをリレードメインに設定 relay_domains = example.jp, .example.jp # リレー先を設定 relayhost = [192.168.1.3]
Postfix をreloadして設定の変更を反映
/etc/init.d/postfix reload