はじめに
Amazon SES(Simple Email Service)を使ってメール送信をしようとしたとき、DNSの設定も済ませたはずなのに「検証保留(pending)」から進まないことはありませんか?
ググると「DNSがちゃんと反映されてるか確認しましょう」という説明が多いですが、それだけでは原因が分からず困ることも多いです。
本記事では、
- 検証保留の状態とは何か
- 一発で解消するためのチェックリスト
- SESの内部的な仕組み まで簡潔に紹介します。
初心者の方でも「なぜダメなのか」が分かるように解説していきます。
検証保留とは?
SESでドメイン認証(特にDKIM認証)を行う場合、
SESが提示するCNAMEレコードをDNSに設定する必要があります。
しかし設定後もSESの管理画面で以下のような状態になることがあります:
[検証保留] DNS 設定はまだ検証されていません
この「検証保留」状態は、SESがまだCNAMEレコードを正しく検知できていないことを意味しています。
よくある原因と対処法(チェックリスト)
原因 | 確認ポイント | 対処 |
---|---|---|
DNSレコード未反映 | TTLの待機時間が足りない | 数分〜最大72時間かかる。digやnslookupで確認 |
CNAMEのホスト名ミス | example.com ではなく xxx._domainkey.example.com | SESの管理画面から正確にコピー |
ホスト名の省略ミス | xxx._domainkey.example.com の登録が xxx._domainkey.example.com.example.com になってることも | FQDN(.で終わる完全な名前)で登録する |
レコード競合 | 同一の_domainkeyを他サービスが使ってる | DKIMを共有しない、用途を分ける |
外部DNS管理で未反映 | Route53以外のDNSで登録し忘れ | 管理者に伝えて設定を依頼 |
「一発で直す」ための確認コマンド
以下のコマンドで、CNAMEが正しく設定されているかを確認できます:
nslookup -type=CNAME xxx._domainkey.example.com
返ってきたCNAMEの値がSES指定のものと一致しているか確認します。
または dig を使ってもOK:
dig xxx._domainkey.example.com CNAME
SESの内部仕組みと検証プロセス
以下のような流れで検証が行われます
[SES] ── CNAMEレコード確認 ──▶ [DNS] (Route53など)
◀── 正しい値なら承認、誤っていれば保留のまま
- SESは一定間隔でDNSをチェックし、提示したCNAMEが設定されているか確認します。
- DNSが正しく返答しない、または間違った値を返すと「検証保留」状態が継続します。
それでも解決しない場合は?
- レコードを削除 → 再発行して登録し直す
- TTLの待機(最大72時間)を取る
- それでも無理な場合はAWSサポートに問い合わせ
まとめ
- 「検証保留」=SESが提示したCNAMEがまだDNSに反映されていない状態
- Route53ではFQDNの末尾の.など、設定ミスが多い
- nslookup や dig を使って、目視でDNSの実態を確認することが大事
- DKIMやSPFの仕組みを理解しておくと、他サービスの設定にも活かせる
おまけ:DKIMとSPFのざっくり違い
種類 | 目的 | 設定方法 |
---|---|---|
SPF | なりすまし送信の防止(IP制限) | TXTレコードで送信元IP範囲を指定 |
DKIM | メールの改ざん検知 | CNAMEレコードで公開鍵を設定 |
以上です!
この記事が、SESの「検証保留」で詰まった誰かの助けになれば幸いです。
ご意見・補足があればぜひコメントで教えてください!