通常transport_maps では設定できない静的配送先のsmtpサーバを冗長構成で設定する

久々にやったらど忘れしてた。

sendmailのmailertableと違って、postfixのtransport_mapsはsmtpサーバを1つしか指定できないため、静的配送先のサーバを冗長構成で指定できない。(配送先サーバが死んだときに、次に配送するサーバを指定するためのsmtp_fallback_relay というものがあるけど、これは宛先に関係なく全てに共通した設定になるので、配送先ごとには設定できない。)

/etc/postfix/master.cf で新しいserviceを定義して、その中で個別にfallback_relay を設定すればできる。

  • master.cf
relay1    unix  -       -       n       -       -       smtp
	-o fallback_relay=[192.168.0.2]
relay2    unix  -       -       n       -       -       smtp
	-o fallback_relay=[10.0.0.2]	


そしてtransport_maps では定義した新しいserviceを使う。

foo.example.com   relay1:[192.168.0.1]
bar.example.com   relay2:[10.0.0.1]

追記

relayするサーバがDNSラウンドロビンIPアドレスを持っている場合、IPアドレスを直接指定せずにhostnameを書けば、transport_maps のみで冗長構成になる。
この場合はmaster.cf をいじらなくて、relay をそのまま使ってもいいかな。

foo.example.com   relay:rr.mx.foo.example.com
bar.example.com   relay:rr.mx.bar.example.com