25
29

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

AWS SESでバウンスメールをハンドリングしてみた

Posted at

はじめに

AWS-SESって使ってますか?
簡単にメール送信サービスを作成することはできるが、
やれ東京リージョンにはないわ、サンドボックスになってるわと中々にめんどくさい子です。
特にバウンスメール(送信失敗)や迷惑メール扱いされることをAWSは嫌っており、
下手にバウンスメールを大量に送信してしまうと、最悪AWS使用停止すらありえます。
そうならないように、きちんとハンドリングする必要があるわけです。

今回やること

SESのバウンスをハンドリングして、Lambdaまでデータを送ります。
そこまでやっちゃえば、あとはLambdaでよしなにできますからね。
図にすると、こんな感じです。
SES.jpg

図にするとスゴク=シンプル!

Lambdaの設定

送信される順番の逆側から設定する必要があるので、まずはLambdaを作成します。
といっても、普通に作るだけなんで詳細は省略します。
今回はハンドリングするだけなので、コードも以下の通りです(Python3.7で作成)

import json

def lambda_handler(event, context):
    print(event)
    print(context)
    return {
        'statusCode': 200,
        'body': json.dumps('Hello from Lambda!')
    }

はい、初期のHello from Lambdaにeventとcontextを出力するようにしただけです。

SNSの設定

SESを作成予定のリージョンと同じリージョンを選択し、新規にトピックを作成します。
ses-1.png
名前を任意に入力して作成します
ses-2.png
作成されたSNSトピックを選択しサブスクリクションを作成します。
ses-3.png
プロトコルでLambdaを選択し、作成したLambdaをエンドポイントに設定します。あとはデフォルトで問題ありません。
ses-4.png
以上です。簡単ですね!

SESの設定

SNSを作成したリージョンと同じリージョンで、新規にSESを作成します。
画像にある「Verify a New Email Address」選択するとメールアドレスを入力するポップアップが表示されます。
SESで送信したいメールアドレスを入力してください。確認メールが届くのでメール本文にあるURLをクリックすることで使用できるようになります。
ses-5.png
作成されたSESトピックを選択し、Notificationsの「Edit Configuratiuon」を選択します。
ses-6.png
すると下のような図が表示されます。
Bouncesを選択すると、作成したSNSを選択できるはずなので選択肢て保存します。
ses-7.png
設定は以上です。

実際にやってみた

「Send a Test Email」から「bounce@simulator.amazonses.com」を送信するとバウンスメールのテストができます。
CloudWatchから、作成したLambdaのログを確認して、上記のメールアドレスをハンドリングできたら処理は正常です。
あとはLambdaでよしなに処理していただければと。

おわりに

やってみるとすこぶる簡単なんですが(ポチポチするだけでできちゃうし)、
あまりしっかり解説されてなかったので、今回記事にしてみました。
AWSに怒られないように楽しいAWS-SESライフをすごしましょう。

25
29
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
25
29

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?