APC 技術ブログ

株式会社エーピーコミュニケーションズの技術ブログです。

株式会社 エーピーコミュニケーションズの技術ブログです。

Amazon SESメール送信時のIDタイプによる違い

目次

はじめに

こんにちは、株式会社エーピーコミュニケーションズの松尾です。

本記事はJP Contents Hubの中から、Amazon SESの構築ハンズオンを検証してみた内容を紹介します。

catalog.workshops.aws

「導入」、「ラボ1」と「ラボ2」の検証内容を紹介していきます。

ゴール

次の点を目的としていきます。

  • Amazon SESを送信メールサーバとして使用するための手順を理解する

導入:DNSドメインの作成とホストゾーン設定

メール送信元とするメールアドレス用にドメインが必要になりますが、今回はRoute53でドメインを取得していきます。

ルートドメインとして”awsworkshop.click”のドメインを取得しました。

ルートドメインのホストゾーン

サブドメインとして"ses.awsworkshop.click"のホストゾーンを作成。

サブドメインのホストゾーン

ここでのポイントは、ルートドメインのホストゾーンにサブドメインのNSレコードを設定してサブドメインの権限を委譲する点です。 具体的には"awsworkshop.click”のホストゾーンへ、"ses.awsworkshop.click"のNSレコードを作成することで権限を委譲できます。

設定後、host -a ses.awsworkshop.clickでそのドメインがどのネームサーバーで管理されているか確認することができます。

ラボ 1: メールとドメイン ID の作成と検証

ラボ1では、メールの送信と受信に必要なドメインの”作成”と”検証”を行っていきます。 Amazon SESの送信元として使用するには”メールアドレス”と”ドメイン”の2パターンがあります。今回は両方使えるようにしていきます。
※初期状態のサンドボックス環境では、送信元だけではなく宛先も認証されている必要があります。 メールアドレスは特に迷う箇所はなく作成できると思います。 ドメインはCLI操作だけだと難しい点もあったので紹介していきます。ハンズオン手順ではDKIM認証のレコードを手動で設定する形ですが、GUIで設定すると自動的に設定することも可能なのでGUIで設定していく方がおすすめです。

  1. Amazon SESのIDを作成

  2. ドメインはメールの送信元として使いたい"ses.awsworkshop.click"を設定。(私は最初ここを"awsworkshop.click”としてしまいました。。)

  3. 「DNSレコードのRoute53への発行」にチェックを入れておく。これによって"ses.awsworkshop.click"のホストゾーンへDKIM用のCNAMEレコードが自動的に追加されます。

  4. ドメイン作成直後は検証保留中ステータス

  5. 下の方へスクロールするとCNAMEレコードの設定があります。これが自動的に追加されていくパラメータとなります。※ドメインの管理がRoute53ではなく外部のレジストラの場合は手動で追加が必要です。

  6. "ses.awsworkshop.click"のホストゾーンを見てみるとCNAME設定が自動的に追加されています。

  7. 数分後にはステータスが検証済みへ遷移するはず。これでドメインの準備はOK。

ラボ 2: Amazon SES を使用したメールの送信

ラボ2では、ラボ1で用意したIDを使ってメールを送信していきます。 SESではメール送信インターフェースとして、APIとSMTPインターフェースの2つが用意されています。 それぞれの送信手順はラボ2の手順を見ていただくとして、ここでは送信元メールアドレスが、「メールアドレスの場合」と「ドメインの場合」の違いを紹介します。
DMARK認証が成功する場合と失敗する場合の、受信クライアント側での見え方の違いをお伝えします。

ラボ2.3 の手順に沿って実施した結果です。

送信元メールアドレスが認証された”メールアドレス”の場合

SESのIDの状態イメージ

SESで認証されたメールアドレス:send@example.com
送信元メールアドレス:send@example.com

  1. lambdaでsend@example.comを送信元としてメールを送信。

  2. 受信したメールクライアントではこのような警告が表示される。※メールクライアントによっては拒否されることもあります。

  3. 受信メールヘッダの詳細をみてみるとこのようになっています。Fromのドメインheader-from(example.com)とDKIMで認証したdタグenvelop-from(amazon.com)が一致していないため、DMARCがFAILしています。

送信元メールアドレスが認証された”ドメイン”の場合

SESのIDの状態イメージ

SESで認証されたドメイン:example.net
送信元メールアドレス:info@example.net

  1. lambdaでinfo@example.netを送信元としてメールを送信。

  2. 受信メールでは特に警告はない。

  3. 受信メールヘッダの詳細をみてみるとこのようになっています。今度はFromのドメインheader-from(example.net)とDKIMで認証したdタグenvelop-from(example.net)が一致しているため、DMARCがPASSしています。

まとめ

SESでのメール送信自体は簡単に出来ることが分かりました。送信元とする”ID”をドメインにする場合に、DKIMの知識が必要となるのでその工程でDKIMの学習に寄り道してしまいました。
送信元が”認証されたドメイン”を使ったメールアドレスの場合はDMARK認証がPASSすることも分かりました。SPF、DKIM、DMARKについても再学習して内容を押さえておこうかと思います。

おわりに

私達クラウド事業部はAWSなどのクラウド技術を活用したSI/SESのご支援をしております。

www.ap-com.co.jp

また、一緒に働いていただける仲間も募集中です! ご興味持っていただけましたらぜひお声がけください。

www.ap-com.co.jp