[アップデート] Amazon SES のメール受信機能がついに東京リージョンでも使えるようになりました

2023.09.09

いわさです。

本日 Amazon SES のメール受信機能を使用可能なリージョンが追加されたとアナウンスされました。
なんと、とうとう東京リージョンでも使えるようになりました。

これまでメール受信する仕組みを Amazon SES で使いたい場合でもその部分についてはバージニアかオレゴンを経由させていた方は多いのではないでしょうか。

今回東京リージョンのエンドポイントが追加されており、ポリシーなどで海外リージョンが使えない場合でも Amazon SES でのメール受信を採用出来るようになりました。

Amazon SES のメール受信

Amazon SES でメール受信出来たのか?という方は以下の記事も参考にしてください。

用途としては一般的なメールクライアントで送受信するための用途ではなくて、受信メールを保存したり、そこから Lambda や SNS を経由して自動化を行う場合などがユースケースとなっています。

よく見る使い方だと、Amazon SES の配信通知機能ではメール本文までは通知・保存がされないので、SES の受信エンドポイントを用意して BCC で送信し、本文を含む送信履歴データとして残す使い方があります。

東京リージョンでやってみる

次のように Amazon SES の東京リージョンコンソールで E メール受信に必要な機能が設定出来ることが確認出来ます。
以前まではバージニア北部・オレゴン・アイルランドの 3 つのみ存在していました。

MX レコードの設定

既にmail1.tak1wa.comという検証済みの ID を持っているので、こいつを受信も出来るようにしてみましょう。

まずは上記ドメインに対して MX レコードを作成する必要があります。
レコードの値はリージョン固有のエンドポイントとなっており、次のドキュメントに記載されています。

東京リージョンの以下を設定しましょう。

Route 53 ホストゾーンのレコードを次のように設定しました。
既に MAIL FROM 用には MX レコードを作成していたのですが、微妙にエンドポイントが違っているのだなと気が付きました。

受信メール保存先の S3 バケットを作成

今回は受信したメールを S3 バケットに保存します。
用途にあわせてアクションを決めるのが良いですが、SNS だと受信サイズやら何やらの制限があるので S3 バケットへまず保存するのが無難だろうと思ってます。

S3 バケットを適当に作成したら、アクセス許可を設定します。
このあと SES 側で受信した際に S3 へ送信するぜというルールを設定するのですが、そのルールが S3 バケットにオブジェクトの書き込みを出来るようにバケットポリシーを設定しましょう。

次のようなバケットポリシーを設定しました。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "AllowSESPuts",
            "Effect": "Allow",
            "Principal": {
                "Service": "ses.amazonaws.com"
            },
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::hoge0909mail1/*",
            "Condition": {
                "StringEquals": {
                    "AWS:SourceAccount": "123456789012",
                    "AWS:SourceArn": "arn:aws:ses:ap-northeast-1:123456789012:receipt-rule-set/hoge0909rule:receipt-rule/hoge0909rule"
                }
            }
        }
    ]
}

受信ルールセットとルールの作成

受信エンドポイントの名前解決とメールの保存先が作成出来たので、最後に受信した際のルールとアクションを作成しましょう。

まずはルールセットを作成します。
受信ルールは、 ルールセットというグループの中に複数定義することが出来ます。
AWS アカウントに対して複数のルールセットを定義できますが、一度に 1 つのセットしか有効化できません。有効化の概念については後ほど見てみましょう。

先程のバケットポリシーで設定したルールセット名(hoge0909rule)を指定します。

続いてルールを作成します。
ルールでは受信者とアクションを設定します。

アクションは複数指定可能です。ここでは S3 バケットへの配信アクションを選択しています。
配信先バケットは先程作成したバケットです。今回は軽く検証だけしたいので暗号化周りのオプションは使っていません。

バケットポリシーが適切であればルールが保存出来るはずです。
そして、ルールが保存されると S3 バケットにセットアップ用のダミーオブジェクトが作成されます。

実はこのままだとまだ受信が出来ません。
ルールセットがデフォルトでは無効状態なので、明示的な有効化が必要です。

ルールセットを開いて「有効として設定」を選択しましょう。

メール送信

これで準備完了です。
メールクライアントからメールを送信してみます。

S3 バケットを確認してみると、受信されたメールオブジェクトが作成されていることが確認出来ます。

ダウンロードして開いてみると、メールの RAW データのようなものが確認出来ました。

さいごに

本日は Amazon SES のメール受信機能がついに東京リージョンで使えるようになったので早速試してみました。

この東京リージョン対応は待っていた方も多いのではないでしょうか。私は待ってました。まさかこのタイミング・この週末で来るのか?という感じで笑ってしまいました。

ぜひ東京リージョンで使ってみてください。