効果があるかどうかは不明ですが、メールを沢山送る際に受信制限の厳しいサーバー宛だけを AWS SES に流すことで遅延を防ぐ(防げるかどうか誰か試してみて)方法。
Postfix におけるメールのリレーは master.cf で定義されている smtp
もしくは relay
に渡されるが、ここに SES 用の定義を追加する。
ses unix - - n - - smtp
-o smtp_fallback_relay=
-o smtp_sasl_auth_enable=yes
-o smtp_sasl_password_maps=hash:/etc/postfix/sasl-ses
-o smtp_sasl_security_options=noanonymous
-o smtp_sasl_mechanism_filter=plain
-o smtp_use_tls=yes
-o smtp_tls_security_level=encrypt
-o smtp_tls_note_starttls_offer=yes
-o smtp_tls_CAfile=/etc/ssl/certs/ca-bundle.crt
SMTP AUTH 用の ID、パスワードを smtp_sasl_password_maps
で指定した /etc/postfix/sasl-ses
に書きます。
email-smtp.us-east-1.amazonaws.com SES_ACCESS_KEY:SES_ACCESS_SECRET
hash map なので postmap コマンドで sasl-ses.db ファイルを作成します。
sudo postmap /etc/postfix/sasl-ses
SES に流すのは特定の宛先だけなので transport_maps
を使います。
postconf
コマンドで設定値を確認します。設定されてなかったら /etc/postfix/main.cf
で設定します。
$ postconf transport_maps
transport_maps = hash:/etc/postfix/transport
/etc/postfix/transport
ファイルにその特定アドレスの定義を行います。書き換えたら
$ sudo postmap /etc/postfix/transport
で .db ファイルを更新します。
example.com ses:email-smtp.us-east-1.amazonaws.com
user-1@example.net ses:email-smtp.us-east-1.amazonaws.com
これで設定を反映させれば指定の宛先だけ SES にリレーされるはずです。
SES のホスト名はリージョンによって違うと思います。sasl-ses* ファイルのパーミッション設定には気をつけてください。