AWS SES設定
はじめに
SESは主にEC2やサーバーレス環境からメール送信したいときに使われるサービスとなっています。
イメージがつかないところもあったので、備忘録として私なりにまとめていこうと思います。
事前準備
今回のデモではメールで使用するドメインを取得していますので、実際にやってみる場合はドメインを準備する必要があります。
IDの作成
SESを使用するリージョンを選び、左にある設定からIDを選択します。
※以前は受信設定がバージニア北部・オレゴン等しかできませんでしたが、東京でも受信設定が出来るようになりました。今回は東京リージョンで作成していきます。
以下クラスメソッド記事参照
メール送信に使用するドメインを記載し、そのほかはデフォルトで作成を選択します。
※メールアドレスに関しては DKIM-based domain verificationが使えない為、基本はドメイン認証を選択できるようドメインを準備します。
IDステータスが検証済みになっていることを確認します。(数分で検証済みに変わりました)
※ドメインがRoute 53で管理されていない場合は自分で該当のドメインに行き、CNAME登録をする必要があります。該当IDのDomainKeys Identified Mail (DKIM)に登録する情報が載っています。
サンドボックスの解除
SESのサービスから左タブのアカウントダッシュボードを選択し、サンドボックスの解除を行います。
※こちら解除しないと登録していないメールアドレスに送信できなかったり、メールの送信回数に制限が出るため、解除する必要があります。
右上の「設定を始める」から「本稼働のリクエスト」を選択します。
以下に必要事項を記入しリクエストの送信をします。
- マーケティング – 購入や情報のダウンロードなどのマーケティングおよびプロモーション コンテンツを含む、見込み客または顧客の対象リストに 1 対多で送信されます。
- トランザクション – 通常、Web サイトでの購入やパスワード リセット要求などのユーザー アクションによってトリガーされ、各受信者に固有の 1 対 1 ベースで送信されます。
詳細な内容は以下AmazonのURLから確認出来ます。
問題ない場合は数日で解除されます。(今回は検証の為解除していません)
バウンス通知・苦情通知の設定
バウンス通知や苦情通知を無視してしまうと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":"*"
}
]
}
詳細は以下公式ページを参照してください。
作成したポリシーを含むIAMロールを作成し、EC2にアタッチします。Amazon SES SMTPインターフェイスを使用してEメールを送信する場合
左にあるSMTP設定からSMTP認証情報の作成を選択します。
ユーザー名を記載し、[.csv ファイルをダウンロード] を選択してこれらの認証情報をダウンロードし、必要な場所に保存します。
こちら認証情報を利用してEメール送信するやり方は参考にこちら掲載します。
送信設定
「検証済みID」タブの画面右上にある「テストEメールの送信」にて送信テストを行います。(バウンスメール動作確認でも実施)
EC2からメール送信設定
※サンドボックスの解除が出来ている場合実施することが出来ます。
以下のコマンドを実施し、サンプル送信します。
詳細は以下公式ページを参照してください。
# 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