全てのドメイン宛のメールを受信する

メールフォームの様なアプリの開発時にテストメールが外部へ送信されないようにするために、全てのドメイン宛てのメールを受信するように設定したときのメモ。
ただし、自社のドメイン宛てのメールはそのまま配送したかったので、一部のドメインは普通に送信するように設定しています。


トランスポートマップを使う方法と、デフォルトトランスポートを変更剃る方法の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