Amazon Route53で取得したドメインを別なアカウントのAmazon SESでも利用する手順

2019.09.25

こんにちは。カトアキです。

Amazon Route53で取得したドメインを別なアカウントのAmazon SESでも利用したい、という状況になったので、その場合にどう設定すればいいのか、というのを確認する必要が生じました。 が、公式ドキュメントから関係する記載をすぐに見つけられなかったのと、たぶんこうだろうなというのが浮かんだので、とりあえずテスト環境で試してみることにしました。

想定通りできたので、やってみたことを説明していきます。

前提

  • 説明用に、xxx.comというドメイン名を今回利用するドメインとします。
  • AWSアカウントABが存在
  • アカウントABの両方ともAmazon SESをサンドボックス上で利用

また、設定前・後の状態は次の通りです。

before

after

やってみたこと

図の①〜⑤の順番で、設定を行なっていくことにしました。

1.アカウントBでxxx.comのドメイン検証を行う

このセクションでは①②を行います。 アカウントBでSESのドメイン検証をリクエストし、アカウントAのホストゾーン設定を修正します。

Amazon SESxxx.comのドメイン検証を実行

AWSアカウントBのマネジメントコンソールからAmazon SESのサービスを開き、Home画面上のメニューから[Identity Management] - [Domains]を選択します。

検証済みのドメイン一覧が表示されます。 私の場合はこの時点ではドメインを一つも登録していなかったので、次のような表示になります。 ここで「Verify a New Domain」を選択します。

「Verify a New Domain」のダイアログが表示されます。 ドメイン名の入力欄へ、xxx.comのドメイン名を入力します。 アカウントAのAmazon SESの検証済みドメイン一覧画面から、既に登録済みのxxx.comのドメイン名を参照し、入力します。(単に、同じようにxxx.comと入れるだけではあるのですが、一応確認の意味も込めてこのようにしました) 入力後に「Verify This Domain」ボタンを選択します。

検証用レコードでアカウントAxxx.com.のホストゾーンを更新する

「Verify This Domain」ボタンを選択すると、次のようにドメイン検証用レコードの情報が記載された画面に遷移します。 「Domain Verification Record」のセクションにある、_amazonses.〜という名称のTXTレコードの情報が表示されていますので、Valueの値を控えておきます。

以下はアカウントAで操作

Valueの値を、アカウントAのRoute53のxxx.com.のホストゾーンに設定します。

_amazonses.〜という名称のTXTレコードのValue(値)に追記します。 追記の方法に要注意です。Valueの入力欄下部に説明がある通り、既存の値の末尾に改行を加えた上で、ダブルクォーテーションで囲った値を追加します。 追加したら「レコードセットの保存」ボタンを選択します。

Amazon SESxxx.comのドメイン検証が完了したことを確認する

AWSアカウントBのマネジメントコンソールから[Amazon SES] - [Identity Management] - [Domains]を選択します。 Verification Statusが間も無く「pending verification」に変わります。その後、「verified」に変わることを確認します。 ※もし、あまりにも時間がかかるようでしたらホストゾーン 設定のTTLを見直してみてください。

2.アカウントBのドメイン検証結果の動作確認

このセクションでは③④を行います。 テスト用のメールアドレスを検証し、テストメールの送信・受信確認を行います。

Amazon SESでテスト用のメールアドレスを検証

続いて、アカウントBのAmazon SESでドメインの検証が正しく行われたかテストを行なっていきます。 サンドボックスに配置されているので、テストメールの送信先を検証する必要があります。 私の会社のメールアドレスを検証します。

AWSアカウントBのマネジメントコンソールから[Amazon SES] - [Identity Management] - [Email Addresses]を選択します。

検証済みのメールアドレス一覧画面に遷移しますが、一つも登録していないので次のような表示になりました。 ここで「Verify a New Email Address」ボタンを選択します。

「Verify a New Email Address」ダイアログが表示されるので、私の会社のメールアドレスを入力して「Verify This Email Address」ボタンを選択します。

すると入力したメールアドレス宛に次のようなメッセージが届きます。 マスクばっかりでわかりにくいかもしれませんが、前半に「email-verification〜」という文言が含まれるURLが記載されています。これをクリックします。

ブラウザが開いて検証に成功した旨が表示されます。これでメールアドレスの検証は終了です。

Amazon SESFromアドレスにxxx.comのドメインを指定してメールを送信する

検証したメールアドレスを使ってテストメールを送信します。

AWSアカウントBのマネジメントコンソールから[Amazon SES] - [Identity Management] - [Email Addresses]を選択します。 先ほど検証したメールアドレスが表示されますので、選択して「Send a Test Email」ボタンを選択します。

送信内容の詳細を設定するダイアログが表示されますので、xxx.comドメインから私の会社のメールアドレス宛にテストメールが送信されるように、それぞれの値を入力し、「Send Test Email」ボタンを選択します。

すると、次のようにメールが届きました。 マスクしているのもあって分からないと思いますが、xxx.comドメインがFromに設定された上で、私の会社のメールアドレス宛にメールが届いた状態です。

3.アカウントAのSESの動作確認

このセクションでは⑤を行います。 アカウントBの設定を行なった影響がアカウントAにないかどうか確認をするため、アカウントAからのテストメールの送信・受信の確認を行います。

Amazon SESFromアドレスにxxx.comのドメインを指定してメールを送信する

次に、アカウントAのAmazon SESでも引き続きxxx.comドメインが利用できることを確認するために、こちらでもテストメールを送信してみます。

既にこちらでは私の会社のメールアドレスが検証済みでしたので、同様の手順でテストメールを送ります。

これも画像だけだと分からないと思いますが、アカウントAのSESからもFromアドレスにxxx.comがセットされた上で、私の会社のメールアドレス宛にメールが届いたという状況です。

まとめ

別なアカウントのSESで、同じドメイン(Amazon Route53で取得したドメインを利用する場合には、ホストゾーンのTXTレコードに複数行セットする形にすることで、どちらのSESからも利用できることが確認できました。

自分の備忘録と、もし同じような状況で、作業前に流れを知りたいという人がいれば為になるといいなと思って書いてみました。