【Qs】(多言語対応用_HubOne)【AWS SES連載 第2回】SESメール受信編 - 受信設定とS3連携サムネイル画像

【AWS SES連載 第2回】SESメール受信編 - 受信設定とS3連携

株式会社Q’sfix

お世話になっております。 Q'sfix 技術推進グループの関です。

更新が滞っており、申し訳ありません。

今後も投稿は続けていきますので、引き続きよろしくお願いいたします。

はじめに

前回取得したドメインを使って、AWS SESでメールを受信し、S3に保存する仕組みを構築します。

今回やること

  1. SESでのドメイン検証
  2. S3バケットの作成と権限設定
  3. SESメール受信ルールの作成
  4. MXレコードの設定
  5. 実際にメール送信テスト

アーキテクチャ

今回構築する範囲は以下の通りです:

インターネット → Route53(MXレコード) → SES → S3バケット

aws-ses-architecture_ses_02

※赤枠部分が今回の実装範囲です。次回以降でLambdaによる自動処理と返信機能を追加予定です。

1. SESでのドメイン検証

ドメインの追加

  1. SESコンソールを開く

    AWS Console > SES > ID
  2. IDの作成

    • 「IDの作成」をクリック01_ID作成
    • 「ドメイン」を選択
    • 前回取得したドメインを入力
    • DMARCを適用させたいので、「カスタム MAIL FROM ドメインの使用」にチェックを付ける
    • MAIL FROM ドメインには任意のサブドメインを入力
    • DNSレコードのRoute53への発行を有効化する02_ドメイン入力、SPF設定
    • DKIMは「Easy DKIM」を選択
    • DKIMの他設定はすべてデフォルト03_DKIM設定
    • 「IDの作成」をクリック

MXレコードの追加

上記によりRoute53にレコードが発行されているはずなので、Route53でレコードがあることを確認します。

  1. Route53コンソールを開く

    AWS Console > Route53 > ホストゾーン > [ドメイン名]

    MXレコード(メール配送用)、TXTレコード(SPF用)、CNAMEレコード(DKIM用)が作成されていることを確認します。
    04_DNSレコードの確認

  2. 受信用MXレコードを追加

上記では、受信用のレコードが作成されていないため、以下を参照にRoute53でレコードを追加します。

Type: MX
Name: [ドメイン名]
Value: 10 inbound-smtp.ap-northeast-1.amazonaws.com
TTL: 300
  1. SESの検証の確認

SESのIDやDKIM、MAIL FROMの設定が検証済み、成功になっていることを確認します。

  • 検証済み、成功になるまで時間がかかる場合があります04_1_ID検証04_2_SPF_DKIM検証

2. S3バケットの作成と権限設定

S3バケットの作成

  1. S3コンソールを開く

    AWS Console > S3 > バケットを作成
  2. バケット設定

    バケット名: 任意のバケット名(一意である必要があります)
    リージョン: ap-northeast-1 (SESと同じリージョン)
    パブリックアクセスをブロック: 有効のまま(メールの意図しない公開を防ぐため)

バケットポリシーの設定

SESがS3にメールを保存できるよう権限を設定します。

  1. バケットポリシーの追加

    S3 > [作成したバケット] > アクセス許可 > バケットポリシー
  2. ポリシー内容

    {
    "Version": "2012-10-17",
    "Statement": [
    {
    "Sid": "AllowSESPuts",
    "Effect": "Allow",
    "Principal": {
    "Service": "ses.amazonaws.com"
    },
    "Action": "s3:PutObject",
    "Resource": "arn:aws:s3:::YOUR_BUCKET_NAME/*",
    "Condition": {
    "StringEquals": {
    "AWS:SourceAccount": "YOUR_AWS_ACCOUNT_ID"
    }
    }
    }
    ]
    }
    • YOUR_BUCKET_NAME: 作成したS3バケット名
    • YOUR_AWS_ACCOUNT_ID: 自分のAWSアカウントID(12桁の数字)

    重要: AWSアカウントIDは、AWSコンソール右上のアカウント情報から確認できます

05_バケットポリシー

3. SESメール受信ルールの作成

ルールセットの作成

  1. SESコンソールで設定

    SES > Eメール受信 > ルールセットの作成
  2. ルールセット名を設定

    ルールセット名: [任意のルールセット名]
  3. ルールセットをアクティブに設定

    • 作成後、「有効として設定」をクリック

08_ルールセットの有効化

受信ルールの作成

  1. ルールの作成

    ルールセット > [任意のルールセット名] > ルールの作成
  2. ルール名を設定

    ルール名: [任意のルール名]
    • セキュリティ向上のため、TLSを必須としておきましょう
      09_ルール作成
  3. 受信者の設定

    受信者の条件: 任意のメールアドレス
    • 受信者の条件に指定したメールアドレスからメールを受信した場合、次に設定するアクションを行います。
      10_受信者条件
  4. アクションの設定

    • 「新しいアクションの追加」をクリック
    • 「S3バケットへの配信」を選択
    • S3バケット:先ほど作成したバケット名を入力
    • オブジェクトキープレフィックス:emails/ (オプション)
      11_アクションの追加
  5. レビュー

    • ルール設定について確認
    • 「ルールの作成」をクリック

4. メール送信テスト

テストメール送信

  1. SESで検証済みのドメインからテストメールを送信
    • SESの検証済みのドメインから「テストEメールの送信」をクリックする
      12_テストメール送信
      13_テストメール送信2

結果の確認

  1. S3での確認

    S3 > [バケット名] > emails/
  2. 受信したメールファイル

    • ランダムな名前のファイルが作成される
    • ファイルをダウンロードして中身を確認
    • RFC 2822形式のメールデータが保存されている
      14_メール受信確認

まとめ

今回は以下を実施しました:

  • SESでのドメイン検証(DKIM設定)
  • MXレコードの設定
  • S3バケットの作成と権限設定
  • SESメール受信ルールの作成
  • 実際のメール受信テスト

次回予告

次回は、S3に保存されたメールファイルをLambda関数で自動的に解析する仕組みを構築します。メールの解析処理をPythonで実装し、送信者や件名などの情報を抽出する方法を紹介します。


📚 連載ナビゲーション

Author:株式会社Q’sfix

Back to List Page

RELATED

関連記事はこちら

CONTACT

Learn more about our system development,
digital transformation (DX), and IT solutions here.

  For inquiries or requests regarding our products and services,
sports and rehabilitation equipment, or our proprietary technologies,
please feel free to contact us.