目次
はじめに
こんにちは、株式会社エーピーコミュニケーションズの松尾です。
本記事はJP Contents Hubの中から、Amazon SESの構築ハンズオンを検証してみた内容を紹介します。
「導入」、「ラボ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で設定していく方がおすすめです。
Amazon SESのIDを作成
ドメインはメールの送信元として使いたい"ses.awsworkshop.click"を設定。(私は最初ここを"awsworkshop.click”としてしまいました。。)
「DNSレコードのRoute53への発行」にチェックを入れておく。これによって"ses.awsworkshop.click"のホストゾーンへDKIM用のCNAMEレコードが自動的に追加されます。
ドメイン作成直後は検証保留中ステータス
下の方へスクロールするとCNAMEレコードの設定があります。これが自動的に追加されていくパラメータとなります。※ドメインの管理がRoute53ではなく外部のレジストラの場合は手動で追加が必要です。
"ses.awsworkshop.click"のホストゾーンを見てみるとCNAME設定が自動的に追加されています。
数分後にはステータスが検証済みへ遷移するはず。これでドメインの準備はOK。
ラボ 2: Amazon SES を使用したメールの送信
ラボ2では、ラボ1で用意したIDを使ってメールを送信していきます。
SESではメール送信インターフェースとして、APIとSMTPインターフェースの2つが用意されています。
それぞれの送信手順はラボ2の手順を見ていただくとして、ここでは送信元メールアドレスが、「メールアドレスの場合」と「ドメインの場合」の違いを紹介します。
DMARK認証が成功する場合と失敗する場合の、受信クライアント側での見え方の違いをお伝えします。
ラボ2.3 の手順に沿って実施した結果です。
送信元メールアドレスが認証された”メールアドレス”の場合
SESで認証されたメールアドレス:send@example.com
送信元メールアドレス:send@example.com
lambdaでsend@example.comを送信元としてメールを送信。
受信したメールクライアントではこのような警告が表示される。※メールクライアントによっては拒否されることもあります。
受信メールヘッダの詳細をみてみるとこのようになっています。Fromのドメインheader-from(example.com)とDKIMで認証したdタグenvelop-from(amazon.com)が一致していないため、DMARCがFAILしています。
送信元メールアドレスが認証された”ドメイン”の場合
SESで認証されたドメイン:example.net
送信元メールアドレス:info@example.net
lambdaでinfo@example.netを送信元としてメールを送信。
受信メールでは特に警告はない。
受信メールヘッダの詳細をみてみるとこのようになっています。今度は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のご支援をしております。
また、一緒に働いていただける仲間も募集中です! ご興味持っていただけましたらぜひお声がけください。