📮

AWS SESを利用してメールを送受信するまでの話

に公開

はじめに

AWSのサービスであるSESを利用し、メールを送受信できるようになるまでの、設定備忘録です。
メールの送受信をWebシステムで実装するにあたり、ドメイン・Webサイト共にAWSで構築していたためコスト面重視でSESを採用しました。

用語集

  • AWS SESとは

    • AWSが提供するクラウドベースの高速・低コストなメール送信/受信サービス
    • メールサーバーを自前で構築・管理せずに、アプリケーションから簡単にマーケティングメールや通知メールを送信できる
    • ドメインやWebサイトをAWSで管理している場合、親和性が高い
  • メール送信の仕組み

  • なりすましメール対策(SPF, DKIM, DMARC)

作業備忘録

早速やっていきます!!!
ドメインをAWS Route53で管理している場合のやり方になります。

1:送信するドメインを設定する

1-1:SES > ID作成画面にアクセスする

まずはSESにアクセスします。

ホーム画面サイドメニューから「ID」を押下し、一覧画面へ遷移し「IDの作成」から新規IDの作成画面へ遷移します。

1-2:SES > IDを作成する

  • IDタイプ
    • Emailとドメインの2つから選択できます。
    • 今回は取得したほやほやのドメインから送信したいので、「ドメイン」を選択します
  • ドメイン
    • 利用するドメインを入力します
  • カスタムMAIL FROMドメイン
    • dmarcに準拠するため、チェックを入れてください
  • カスタムMAIL FROMドメイン > DNSレコードのRoute53への発行
    • AWS でドメインを管理している場合はチェックを入れてください
  • DKIMの設定
    • IDタイプ
      • Easy DKIMを選択します
      • DKIM 署名キーの長さ
        • 2048を選択します
      • DNSレコードの Route53 への発行
        • こちらもAWSでドメイン管理している場合はチェックをお忘れなく
      • DKIM 署名
        • チェックをお忘れなく!

1-3:本番環境利用のリクエスト

IDを登録しただけではメールの送受信数等に制限のある「サンドボックス」の状態になります。
ダッシュボード上部の「設定をはじめる」ページから、「本番環境利用のリクエスト」をAWSへ送信します。

※通常1分ほどで承認されます

1-4:テスト送信

作成したIDの詳細ページに遷移します。

  • IDステータスが「検証済」になっていること
  • 「認証」タブでDKIMの設定が「成功」になっていること

を確認してください。
右上の「テストEメール送信」から、宛先メールアドレスを入力しテスト送信を行うことができます!

2:DMARCを設定する

さて、ここまでDKIMおよびSPFの設定が完了しました。
セキュリティ面で設定すべき「DMARC」を設定していきます。

2-1:DNSにTXTレコードを設定する

DNSに以下のTXTレコードを追加します。
今回はAWS Route 53で追加をします。

名前 タイプ
_dmarc.example.com TXT "v=DMARC1;p=quarantine;rua=mailto:my_dmarc_report@example.com"
  • 値の補足 (AWS公式から引用)
    • 認証に失敗したメッセージ
      • ポリシーパラメータ p=quarantine で指定されているとおり、スパムフォルダに送信します。その他のオプションには、p=none を使用して何もしない、または p=reject を使用してメッセージを完全に拒否する、などがあります。
    • レポートパラメータ
      • rua=mailto:my_dmarc_report@example.com (rua は集約レポートのレポート URI の略)
        • 失敗したすべての E メールに関するレポートをダイジェスト で送信します。ポリシーはプロバイダーごとに異なりますが、通常、E メールプロバイダーは 1 日 1 回レポートを送信します。

3:受信の設定をする

3-1:受信ルールを作成する

SES > 設定 > Eメール受信ページに遷移します。
「ルールセットの作成」ボタンから、任意の名前を入力しルールの作成をスタートしていきます。

  • 1:ルール設定の定義
  • 2:受信者条件の追加
    • ドメイン内全てのアドレスで受信する場合はドメイン名(example.com)
    • 特定のアドレスのみ受信する場合はメールアドレスを指定します(sample\@example.com)
  • 3:アクションの追加
    • 受信した際にどのような処理をするか選択することができます
      • Lambda関数の呼び出しやS3バケットへの配信等
    • 今回は簡易にS3バケットへ受信メールを保存しようと思います!
      • ※バケットは適宜作成ください
  • 4:レビュー
    • 設定内容の確認をします

3-2.受信ルールを有効化する

設定ができてもまだ無効の状態です。
受信ルール詳細画面から、「有効として設定」ボタンを押下し有効化を行なってください

3-3.DNSにMXレコードを追加する

さて、AWSで受信するルールができましたが、まだ受信はできません。
最後にDNSに受信するメールサーバーを指定する設定をしていきます。

名前 タイプ
example.com MX 10 inbound-smtp.ap-northeast-1.amazonaws.com
  • 名前
    • メールを受信するドメイン名を入力してください
    • 東京リージョンの場合はap-northeast-1、それ以外の場合はリージョン名を指定してください

3-4.受信を確認する

手元のメールクライアントからメールを送ってみます!!
作成したS3のバケットにメールが届いていることを確認してください。

謝辞

本記事は以下の記事を参考に執筆いたしました。お礼申し上げます。

GitHubで編集を提案

Discussion