Amazon SES にSPF、DKIM、DMARC設定と、サンドボックスを解除してメール送信してみた

2021.09.07

Amazon SESのDMARC設定について調べる機会がありました。ドキュメントを読んでわかったつもりなのですが、実際に手を動かさないと見えない部分もあるだろうと常日頃思っているので設定してみました。DMARC設定手順と、DMARC設定ありなしのGmailでのメール受信例を紹介します。

以下のリンクを参考にAmazon SESを利用した独自ドメインからのメール送信設定と、SPF, DKIM設定をした環境を構築します。

Route53にドメインがあれば10分でサンドボックス環境からテストメール送信できる環境が完成します。

サンドボックス環境の解除

新規アカウントでSESを作成するとサンドボックス環境におかれます。サンドボックス環境では以下の機能制限があります。

公式ドキュメントのDeepL翻訳

  1. メールの送信先は認証済みのメールアドレスとドメイン、またはAmazon SESのメールボックスシミュレーターのみです。
  2. 認証済みのメールアドレスとドメインからのみメールを送信できます。
  3. 24時間以内に最大200通のメッセージを送信できます。
  4. 1秒間に最大 1 件のメッセージを送信できます。

サンドボックス環境でもテストメールは送信できます。本番環境でメールサーバを利用するには申請が必要になります。ついでに申請手順を紹介します。

必要事項を入力します。

申請は済みました。

申請後、数秒で許可されました。5分もあればサンドボックス環境を解除ができました。

DMARC設定なしのメール送信

現在、SPF, DKIMを設定した状態です。AWS CLIからテストメールを送信します。

先に送信先のメールアドレスを変数に入れます。また後で使います。

email=<_YOUR_EMAIL_ADDRESS_>
aws ses send-email \
  --from mail@[YOUR_DOMAIN] \
  --to $email \
  --subject "Disable DMARC setting"\
  --text "I have not set up DMARC."

メールを受信しました。

メッセージのソースを確認します。SPF, DKIMPASSしています。期待通りです。

DMARC設定

DMARC設定を追加します。TXTレコードを1個追加するだけです。以下のドキュメントに従い設定を行います。

DMRACとは

DMARCでは、認証失敗時にどのようにメールを処理すればよいかを、 送信者が受信者に対してポリシーと呼ばれるレコードをDNS上で公開することで表明する仕組みになっています。 受信者は認証に失敗した場合に送信者のポリシーを参照し、 それに基づいてメールをどのように取り扱うかを決定します。

引用: インターネット用語1分解説~DMARCとは~ - JPNIC

設定内容

Route53にドキュメントで指定されているTXTレコードを追加します。ドメイン名は修正する必要があるので注意してください。

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

追加したTXTレコードが引けるか確認します。

nslookup -type=TXT _dmarc.[YOUR_DOMAIN]

設定した内容を確認できました。設定完了です。

実行結果

Server:		240b:13:91a0:7d00:6ee4:daff:fe4f:4370
Address:	240b:13:91a0:7d00:6ee4:daff:fe4f:4370#53

Non-authoritative answer:
_dmarc.[YOUR_DOMAIN]	text = "v=DMARC1;p=quarantine;pct=25;rua=mailto:dmarcreports@[YOUR_DOMAIN]"

Authoritative answers can be found from:

DMARC設定ありのメール送信

現在、SPF, DKIMに加えDMARCを設定した状態です。AWS CLIからテストメールを送信します。

aws ses send-email \
  --from mail@[YOUR_DOMAIN] \
  --to $email \
  --subject "Enable DMARC setting"\
  --text "I have set up DMARC."

メールを受信しました。

「あれれ〜、おっかしぞ〜」なにも変化がありません。

4分後に再度メールを送信しました。DMARCの項目が増えPASSしています。TXTレコード設定直後のメール送信だと、もしかしたら反映されないのかもしれません。少し時間を置いてから試してみてください。

まとめ

  • DMARC設定に必要なのはTXTレコード1個手動で追加
  • テストメール送信はTXTレコード追加してから少し時間を置いてから送信するとよい

おわりに

DMARC設定を試してみました。レコード追加直後にDMARCをPASSしたメールが届かなく設定を疑い時間をムダにしました。時間が解決してくれました。今後、同じく設定する方にもここだけは気をつけていただきたいなという気持ちで記録に残しました。

本設定はメール送信のベストプラクティスでも推奨されています。レコードを1個追加済むため設定追加をご検討いただければと思います。