Amazon SESでドメイン検証するやり方2選

Amazon SESを使うには使うドメインを所有していることをAWSに示す必要があります。
その方法として現在どんなものがあるか紹介します。

①DKIM

Domain Keys Identified Mailというメールに署名をつける仕組みで、これを行うためにドメインのDNSで公開鍵を配布する必要があります。これでついでにドメインの所有も確認できる、というものです。

こちらの方式が推奨されています。

設定方法

SESでドメインのidentityをeasy DKIMで作成すると以下のような画面ができてます。

View DNS recordsのところにある3つのcnameを使いたいドメインのDNSに設定すればOKです。

identityの作成後72時間以内にDNSの設定をする必要がある、と書いてあるのですが72時間後でも大丈夫です。

というのも72時間経過した後は認証のretryボタンが出現し、何度でもretryすることができます。retry時も設定すべきcnameの値が変化するなんてことはないです。retryしたらまた72時間AWSが定期的にDNSにレコードが適切に設定されているか確認しにいきます。

この確認する間隔は公開されていませんが、体感は30分もあればという感じでした。

②レガシーtxtレコード

使っているDNSサービスでホスト名にアンダーバーが使えない、等の理由でDKIM関連のレコードが登録できない場合は以前使われていた手法が使えます。

SESのドメインの画面にいくと、以下のような表示がでます。この赤枠で囲った、「download the record set as a .csv」というところをクリックするとtxtレコードが入ったcsvファイルがダウンロードできます。

開くと以下のような2レコードが格納されています。

この下のほうをDNSに登録してあげればOKです。もちろん2つとも登録しても大丈夫ですが、片方でもOKです。

ruriwo.comの場合、実際にdigコマンドを打つと以下のようになっています。

DNSに登録したあと、そのままだとAWSに認証されせんでした。明示的に以下のコマンドを打つ必要があるみたいです。コマンドを打てば数秒で認証されました。

aws ses verify-domain-identity --domain "ruriwo.com"

認証されたかどうかは以下のコマンドで確認できます。

$ aws ses get-identity-verification-attributes --identities "ruriwo.com"
{
    "VerificationAttributes": {
        "ruriwo.com": {
            "VerificationStatus": "Success",
            "VerificationToken": "D35XUJLhn+y9XWfTqGkyBlczaiVxK4yB3hwb6HBWB2Q="
        }
    }
}