LoginSignup
11
12

More than 5 years have passed since last update.

Postfix で特定の宛先だけを AWS SES に流す

Posted at

効果があるかどうかは不明ですが、メールを沢山送る際に受信制限の厳しいサーバー宛だけを AWS SES に流すことで遅延を防ぐ(防げるかどうか誰か試してみて)方法。

Postfix におけるメールのリレーは master.cf で定義されている smtp もしくは relay に渡されるが、ここに SES 用の定義を追加する。

master.cf
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 に書きます。

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 ファイルを更新します。

transport
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* ファイルのパーミッション設定には気をつけてください。

11
12
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
12