🧧

AWS SES設定

2024/03/11に公開

はじめに

SESは主にEC2やサーバーレス環境からメール送信したいときに使われるサービスとなっています。
イメージがつかないところもあったので、備忘録として私なりにまとめていこうと思います。

事前準備

今回のデモではメールで使用するドメインを取得していますので、実際にやってみる場合はドメインを準備する必要があります。

IDの作成

SESを使用するリージョンを選び、左にある設定からIDを選択します。
※以前は受信設定がバージニア北部・オレゴン等しかできませんでしたが、東京でも受信設定が出来るようになりました。今回は東京リージョンで作成していきます。

以下クラスメソッド記事参照
https://dev.classmethod.jp/articles/ses-email-receive-tokyo/

メール送信に使用するドメインを記載し、そのほかはデフォルトで作成を選択します。
※メールアドレスに関しては DKIM-based domain verificationが使えない為、基本はドメイン認証を選択できるようドメインを準備します。



IDステータスが検証済みになっていることを確認します。(数分で検証済みに変わりました)

※ドメインがRoute 53で管理されていない場合は自分で該当のドメインに行き、CNAME登録をする必要があります。該当IDのDomainKeys Identified Mail (DKIM)に登録する情報が載っています。

サンドボックスの解除

SESのサービスから左タブのアカウントダッシュボードを選択し、サンドボックスの解除を行います。
※こちら解除しないと登録していないメールアドレスに送信できなかったり、メールの送信回数に制限が出るため、解除する必要があります。

右上の「設定を始める」から「本稼働のリクエスト」を選択します。

以下に必要事項を記入しリクエストの送信をします。

  • マーケティング – 購入や情報のダウンロードなどのマーケティングおよびプロモーション コンテンツを含む、見込み客または顧客の対象リストに 1 対多で送信されます。
  • トランザクション – 通常、Web サイトでの購入やパスワード リセット要求などのユーザー アクションによってトリガーされ、各受信者に固有の 1 対 1 ベースで送信されます。
    詳細な内容は以下AmazonのURLから確認出来ます。

https://docs.aws.amazon.com/ses/latest/dg/request-production-access.html

問題ない場合は数日で解除されます。(今回は検証の為解除していません)

バウンス通知・苦情通知の設定

バウンス通知や苦情通知を無視してしまうとSESの利用が停止になるため、そういった通知が来た際に把握できるようSNSの設定をします。
また左にある設定からIDを選択します。「通知」のタブから「フィードバック通知」の編集を選択します。
SNSトピックがまだないと思いますので、SNSトピックを作成し、サブスクリプション設定までしたうえで、上2つに作成したトピックを選択し保存します。(今回はsampleで作成しました)

バウンスメール動作確認

左にある設定からIDを選択し、選択したIDの右上にある「テストEメールの送信」を選択します。


送った後にSNSのサブスクリプションで設定したメールアドレスにメールが届いていることを確認します。

認証情報の作成

Amazon SES APIを使用してEメールを送信する場合(EC2の設定)

事前にメール送信用のEC2を用意します。
SESのAPI利用でのメール送信はIAMの権限が必要になるため、以下の「Eメール送信アクションへのアクセスのみを許可」のポリシーを作成します。

{
  "Version":"2012-10-17",
  "Statement":[
    {
      "Effect":"Allow",
      "Action":[
        "ses:SendEmail",
        "ses:SendRawEmail"
      ],
      "Resource":"*"
    }
  ]
}

詳細は以下公式ページを参照してください。
https://docs.aws.amazon.com/ja_jp/ses/latest/dg/control-user-access.html#iam-and-ses-examples-email-sending-actions
作成したポリシーを含むIAMロールを作成し、EC2にアタッチします。

Amazon SES SMTPインターフェイスを使用してEメールを送信する場合

左にあるSMTP設定からSMTP認証情報の作成を選択します。
ユーザー名を記載し、[.csv ファイルをダウンロード] を選択してこれらの認証情報をダウンロードし、必要な場所に保存します。
こちら認証情報を利用してEメール送信するやり方は参考にこちら掲載します。
https://blog.serverworks.co.jp/tech/2020/02/08/ses-smtp-interface/

送信設定

「検証済みID」タブの画面右上にある「テストEメールの送信」にて送信テストを行います。(バウンスメール動作確認でも実施)

EC2からメール送信設定

※サンドボックスの解除が出来ている場合実施することが出来ます。
以下のコマンドを実施し、サンプル送信します。
詳細は以下公式ページを参照してください。
https://docs.aws.amazon.com/ja_jp/ses/latest/dg/send-an-email-using-sdk-programmatically.html

# yum install pip
# pip install boto3
# vi amazon-ses-sample.py #ファイルの編集は上記リンクを参考に作成する
# python amazon-ses-sample.py

受信設定

MXレコードの登録

対象ドメインのゾーンに下記MXレコードを設定します。
10 inbound-smtp.region.amazonaws.com
※regionの部分についてはSESのリージョンに編集します。
 バージニアの場合「10 inbound-smtp.us-east-1.amazonaws.com」

受信設定

SES画面の左タブにある「Eメール受信」を選択します。
右上のルールセットの作成を選択し、「<対象のドメイン>_ruleset」を記載し、「ルールセットの作成」を選択します。
作成したルールセット名を選択し、ルールの作成を選択し、ルール名を「<対象のドメイン>_rule」にし、「次へ」を選択します。
「受信者の条件」にて、「新しい受信者の条件の追加」を押下し、
「受信者の条件」にて、「<対象のドメイン>」を記載し「次へ」を選択します。
「 S3バケットへの配信」を選択し、s3 bucket名「<対象のドメイン>-ses-s3-bucket」を記載し、次へを選択します。
「ルールの作成」を選択します。
作成した「<対象のドメイン>_rule」のステータスを有効にします。

  • 受信確認
    「test@ドメイン」にメールを送信し、S3に保存されていることを確認します。

終わりに

バックエンド側があまり分からない為、設定に関しては出来たかと思っています。Amazonの買い物でも使用されているサービスで、構築するケースも多いのでしっかり理解していきたいです。

Discussion