Route 53 で SPF/DKIM/DMARC を設定
目次
この記事でわかること
- AWS Route 53 でメール認証 3 点(SPF / DKIM / DMARC)を整える順序
- SES の Easy DKIM と Route 53 の自動レコード登録の流れ
- SPF の MX レコード連動と include の書き方
- DMARC を
p=noneから段階的に強化するロードマップ
全体像:Route 53 + SES の役割分担
AWS で自社ドメイン送信を整える典型構成は Route 53(DNS)と SES(送信)の組み合わせです。役割は明確に分かれます。
- Route 53: SPF / DKIM / DMARC の DNS レコードを保持
- SES: 実際の送信と DKIM 署名
すでに別の DNS サービスを使っている場合でも、SES が要求する CNAME / TXT を後から Route 53 以外に登録する流れは同じです。本記事は Route 53 を前提に書きます。
前提:Hosted Zone と SES の Region
example.co.jp の Hosted Zone が Route 53 に作成済みで、ネームサーバーが正しく委任されている前提です。SES は us-east-1 / ap-northeast-1 などリージョンごとの設定で、自社が送信元として使うリージョンを 1 つ決めて始めます。
ステップ 1: SES で ID 検証と Easy DKIM
SES コンソール → Verified identities → Create identity → Domain を選び example.co.jp を入力します。「Use a custom MAIL FROM domain」と「Easy DKIM (RSA 2048)」を有効化。
「Publish DNS records to Route 53」ボタンが表示されれば、SES が必要な CNAME 3 本(DKIM)と MX / TXT(custom MAIL FROM 用)を Route 53 に自動投入します。Hosted Zone が同一アカウントになければ表示されません。
DKIM の中身(セレクタの命名規則と TXT 形式)は DKIM セレクタの読み方 を参照。
ステップ 2: SPF を MX と整合させる
SPF(Sender Policy Framework)は送信元 IP / サーバーを宣言する仕組みです。SES からの送信を許可するレコード例。
example.co.jp. TXT "v=spf1 include:amazonses.com -all"
Google Workspace も併用する場合は include を増やします。
"v=spf1 include:_spf.google.com include:amazonses.com -all"
include は内部で別ドメインを参照するため、合計の DNS lookup が 10 を超えると PermError でメールが弾かれます。詳細と回避策は SPF レコード Flattening を参照。
Route 53 では TXT を 1 本に統合し、複数行で書かないよう注意します(SPF は 1 ドメインに 1 本が必須)。
ステップ 3: DKIM を CNAME で SES に委任
ステップ 1 で「Publish DNS records to Route 53」を押した場合、以下のような CNAME が自動登録されます。
abc123._domainkey.example.co.jp CNAME abc123.dkim.amazonses.com
def456._domainkey.example.co.jp CNAME def456.dkim.amazonses.com
ghi789._domainkey.example.co.jp CNAME ghi789.dkim.amazonses.com
SES のコンソール「DKIM」セクションで「Successful」と表示されれば反映完了です。Route 53 の TTL はデフォルト 300 秒で、数分以内に検出されます。
ステップ 4: DMARC レコードを Route 53 に追加
Route 53 のコンソールで _dmarc.example.co.jp の TXT レコードを追加します。最初は p=none でレポート観察モードに。
_dmarc.example.co.jp. TXT "v=DMARC1; p=none; rua=mailto:dmarc@example.co.jp; adkim=r; aspf=r"
レポート受信箱は受信専用にし、検証 SaaS(dmarcian / EasyDMARC / Postmark)で集計するのがおすすめです。届かない場合は DMARC rua が届かないとき を確認。
DMARC 用語の前提が不安な場合は DMARC とは を先に読むと迷いません。
ステップ 5: テスト送信と検証
SES の sandbox を解除し、自社の Gmail 等にテスト送信します。Gmail で受信し、メニュー → 「メッセージのソースを表示」で Authentication-Results を確認。
Authentication-Results: mx.google.com;
dkim=pass header.i=@example.co.jp;
spf=pass smtp.mailfrom=bounce.example.co.jp;
dmarc=pass header.from=example.co.jp
3 行すべて pass なら一通り通っています。手順や代替の検証手段は SPF / DKIM / DMARC の確認方法 にまとめています。
ステップ 6: DMARC を段階的に強化
p=none で 2 週間レポートを観察し、想定外の送信元(旧 ESP・グループ会社)が無いことを確認してから quarantine に。さらに 2 週間問題が無ければ reject へ進めます。詳細は DMARC ポリシー強化の手順 を参照。
Route 53 + SES 固有の注意点
1. Hosted Zone が別アカウント
クロスアカウントでは「Publish DNS records to Route 53」が出ません。SES が提示する値を別アカウント / 別 DNS に手動コピーします。
2. MAIL FROM ドメインのバウンス整合
bounce.example.co.jp のような MAIL FROM 専用サブドメインを使う場合、その MX を SES が指示するエンドポイントに向けます。設定漏れがあると SES が「MAIL FROM domain not configured」を返します。
3. Region 違いで DKIM CNAME が増殖
複数 Region から送る場合、Region ごとに別の DKIM セレクタ 3 本が出ます。Route 53 にどんどん溜まりやすいので、使っていない Region の ID は削除しておきます。
まとめ
- Route 53 + SES の組み合わせは「Publish DNS records to Route 53」で 80% 自動化できる
- SPF は include の合計 10 lookup 上限に注意
- DKIM は SES が発行する CNAME を Route 53 に登録
- DMARC は
p=noneで観察 →quarantine→rejectの段階強化
まずは現状を把握しましょう
自社ドメインの SPF・DKIM・DMARC が正しく設定できているかは、ドメイン番人の無料診断で確認できます。Route 53 + SES 構築後の動作確認にもご利用ください。設定にお困りの場合はお問い合わせからご相談ください。