AR ホームベーカリー

オイラのアウトプット用ホームベーカリー!

AWS SES で DMARC を指定する

デフォルトの設定だと、検証済み ID (SES に持ち込むドメイン) は amazonses.com のエイリアスとして認証されているので、 SPF,DKIM は有効だけど、 DMARC は有効にならない? いやそんなことはないのか? よくわからん。

ちなみに突然 DMARC が飛び出してきたのは、 Gmail が 2024/02 からポリシーを変更するので。

www.nri-secure.co.jp

追記

すまん!

色々書いたけど、 AWS SES サンドボックス外に移動して使えてる人は、以下の様な TXT レコード追記すれば、カスタム MAIL FROM 関係なくとりあえず DMARC 有効になるわ!

レコード名 レコードタイプ
_dmarc.example.com TXT "v=DMARC1;p=none;pct=25"

レポートメール何も受信しなくて邪悪だから、とりあえずって感じなのでメール受信はおいおい整備してやってくれよな!

DMARC レコードの登録

DMARC のレコードはご案内してくれないので、自分で作る必要がある。 あまり難しくない。

dev.classmethod.jp

クラスメソッドくんの記事を参考に以下のように作る。

"v=DMARC1;p=quarantine;pct=25;rua=mailto:dmarcreports@example.com"

メールの振る舞い

特に p= のメールの振る舞いについては Google のナレッジベースがわかりやすい。

support.google.com

以下雑に引用する。

none 受信サーバーによる DMARC チェックに合格しなかったメールに対して、何の処理も行いません。メールは通常どおり受信者に配信されます。

quarantine 受信サーバーによって DMARC 認証されないメールは、受信者の迷惑メールフォルダに送信されます。

reject 受信サーバーによって DMARC 認証されないメールは拒否され、受信者に配信されることはありません。

AWS SES はドキュメントで quarantine を例示しているけど、対 Gmail 視点だったら「DMARC を有効にしているのが必要であって、振る舞いは (条件にもよるが) none でも構わない」と読み取れるので、メールサーバの層以外で変な動作を噛ませない、という意味でも none にしておく方がよさそう。

レポートメール

rua ruf の値、それぞれ「集計レポート」「失敗レポート」の送信先メールアドレスを指定するもの。

これなんだけど、僕はずっと指定しないといけないと思っていたのだけど、実はそんなことはなく指定しなくても DMARC としては有効っぽい。

また大正義クラスメソッドくんからの引用なんだけど、過去の大手なんかはまずレポートメールの指定してない、みたいなトコがある模様。

dev.classmethod.jp

とはいえ受信しておくに越したことはないし、SPF, DKIM, DMARC で証明するドメインで受信しないといけない、というルールもなさそうなので、例えば運用するドメインexample.com で、技術運用担当が example.info とかだった場合、 rua rufexample.info ドメインを指定しても大丈夫そう。

ちなみに rua ruf それぞれ別ユーザで指定しないといけない、みたいなアレもないはずなので、同じアドレスを設定してメール受信環境でフィルタリングしたほうが楽そう。

僕が考えるめっちゃいい? DMARC レコード 2024

以上を鑑みると、だいたい以下のような感じになるのではないだろうか。

"v=DMARC1;p=none;pct=25;rua=mailto:{受信するアドレス};ruf=mailto:{受信するアドレス}"

AWS SES は特に SPF, DKIM は何も考えなくても、殆どの場合で有効になるので、 DMARC の設定は入れ得、みたいなトコあるのでやっといて損はないと思う。

追記 2024/01/22

creators.bengo4.com

support.google.com

弁護士ドットコムの記事を見ていて気付いたけど、たしかにルートドメインサブドメインの考慮は必要そうですね。

AWS 的には検証済み ID に入ったドメインサブドメイン問わず送信できるので、 sp= 値は考慮せず全部ルートドメインの振る舞いに合わせて良さそうですが。

例えば example.comAWS SES で運用しているけど、 mail.example.com は自前で postfix など利用して環境を構築している (ウェブメーラーなど使いたいので) みたいなユースケースだと気をつける必要ありそう。

いやあ、面倒見ている環境が上記と似たようなパターンになりそうでウモモモッってなったので急いで書いているだけですが。

これ sp= 書かないと暗黙的にルートドメインとおなじらしいけど、 上記の場合 example.com mail.example.com でそれぞれ SPF, DKIM, DMARC 設定したらそれぞれのドメインレコード参照してくれのかな。 このあたり含めて DMARC って受信側マターだから、RFC 7489 - Domain-based Message Authentication, Reporting, and Conformance (DMARC) に書いてあるじゃん、と言われてもちょっと不安なんだよな。

まあ弁護士ドットコムの記事でも書いてあった通り、ほとんどのトコが「Gmail くんがやれっていうから(しぶしぶ」という雰囲気なんだよな。

レポートの解析基盤

github.com

入れないとレポートの持ち腐れだしなあ、という気持ちでやる。

qiita.com

engineer.crowdworks.jp

このあたりが参考になるはず。