この記事の話題
AWS SESでSPFを設定しようと思ったら以下のドキュメントに当たります。
Amazon SES で MAIL FROM ドメインを設定する
この中で、SPFを設定しようと思ったらなぜかMXレコードを設定せよと記載されてます。
そのあたりの設定がなんで必要なのかこの記事にまとめます。
前提
設定の前提
過去の記事でAWS SESでのメール送信時にSPFの設定は必要だよ!って書いたので、送信元ドメインでSPFレコードを公開するように設定することを前提とします。
SPFの設定
Amazon SES で MAIL FROM ドメインを設定する
上記のリンク先から大まかな手順を引用すると
- Amazon SES コンソールまたは API で、指定した MAIL FROM ドメインが使用されるようにアイデンティティを設定します。
- MAIL FROM ドメインの DNS サーバーに MX レコードを公開します。このレコードは、セットアッププロセスの間に Amazon SES から提供されます。
- (オプション) E メールが Sender Policy Framework (SPF) チェックに合格するには、カスタム MAIL FROM ドメインの DNS サーバーに SPF レコードを公開する必要があります。
のステップになってます。
通常のメール配信
通常のメール配信は以下のイメージです。
- SESでメール配信を依頼
- SESがenvelope from を書き換えます
- 宛先のMTAで書き換えられたenvelope fromに対してSPFの検証が実施されます
カスタム MAIL FROM ドメインをWebコンソール上から設定した送信元のドメイン、設定がない場合amazonses.comに変更されます。
ポイントとしては、設定可能なのは認証済みのドメインそのものではなくサブドメインでないとSESのコンソール上からカスタムMAIL FROMドメインとして設定できません。
バウンスメール配信
amazonses.comからメールを配信したあとに、バウンスメールがenvelope fromのアドレスに配信されます。
以下のようなイメージです。
- 通常のメール配信で書き換えたenvelope fromに対してエラーメールを送ります。この時にenvelope fromを元のenvelope fromに書き戻す必要があるので一度SESに送信
- envelope fromを元のenvelope fromに書き戻す
- 元のenvelope fromアドレスでSESからエラーメールを受信
1のためにカスタムMAIL FROMドメインに利用するドメインに対してMXレコードを定義する必要があります。
この時点で当初疑問に思った、MXレコードの定義が必要な理由が分かりました。
envelope fromの書き換え
SESが行っているenvelope fromの書き換えは、大きな枠組みでいうと、
SRS(Sender Rewriting Scheme)/Wikipedia(参考)
に属する挙動と言えます。
SESではなぜSRSを実施する?
私見ですが、メールを送信するだけであれば送信元が最初に付与するenvelope fromを維持しても良いような気はします。しかし、AWSの提供するSESとしては送信したメールのバウンスメールの発生を計測するために、バウンスメールがSESを経由して送付されるように設計されているものかと思います。
あまりにもバウンスメールの多い利用をする場合は不審な利用とみなして利用を停止できるようにしているものと思います。
これによってAWSはSESの送信するメールの健全性を確保しているものかと思います。
まとめ
SESではバウンスメールの計測を行うため、SPFのためのカスタムMAIL FROMを設定する場合に、MXの指定が必要になるよ。