この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。
こんにちは、2017年初投稿の棚旬です。今回は、メール配信を行っているサービスで重要となってくるバウンスメール(何らかの原因で配信エラーになったメール)対策について記載しようと思います。バウンスメール対策は、AWSが提供しているサービスを使用すると簡単にバウンスメールの処理が可能です。この記事ではAWS周りの設定について記載しています。AWSが提供しているAPIを利用してバウンスとなったメールを取得する方法については別の記事で記載しようと思います。
AWSの各サービスについて
バウンスメール対策を行うにあたり、今回は3つのAWSサービスを使用していきます。各サービスについてはリンク先の説明で確認しましょう。
SES
Amazon SES は、ユーザー自身の E メールアドレスとドメインを使用して E メールを送受信するための、簡単で費用効率の高い方法を提供する E メールプラットフォームです。
Simple Email Service-Amazon Web Services
SNS
Amazon Simple Notification Service (Amazon SNS) は、高速かつ柔軟な完全マネージド型のプッシュ通知サービスです。このサービスを使用すると、個々のメッセージを送信したり、多数の受信者にメッセージをファンアウトしたりできます。Amazon SNS により、簡単かつコスト効率の高い方法で、モバイルデバイスユーザーおよびメール受信者にプッシュ通知を送信したり、他の分散サービスにメッセージを送信したりできます。
Simple Notification Service-Amazon Web Services
SQS
Amazon Simple Queue Service(SQS)は、高速で、信頼性が高く、スケーラビリティに優れ、十分に管理されたメッセージキューサービスです。
Simple Queue Service-Amazon Web Services
はい、では早速設定していきましょう。
SNSの作成
- AWSコンソールからSNSを選択(リージョンはバージニア北部)
- Create Topicを選択
3.【Topic name】【Display name】を入力 【Display name】は10文字以内の制限があるのと、バウンスを受信した時の宛名になるので分かりやすく判別しやすい名前にしましょう。
SESにアドレスの登録
- AWSコンソールからSESを選択(リージョンはバージニア北部)
- SES Home からEmail Addressesを選択し、Verify a New Email Addressを選択
- Email Address を入力する
- 認証メールが届くので確認。SESのアドレス一覧で認証されたアドレスのStatusがverifiedに変わる
SNSのサブスクリプション登録
- SNSのメニューからTopicsを選択し、topic名を選択
- create subscription を選択
- 【Protocol】Email【Endpoint】SESに登録したアドレスを入力 【Topic ARN】は作成したSNSの詳細に明記されている値を使用
- 認証メールが届くので確認
click here to unsubscribeをクリックするとサブスクリプションが解除されてしまうので注意。(コンソールからでも削除可能)SESとSNSの連携 - アドレスの詳細からNotificationsのEdit Configurationを選択
- SNS Topic Configuration
【Bounces】【Complaints】は作成したSNSを選択
※BouncesとComplaintsの両方を選択しないと、Email Feedback Forwarding が選択不可となり、通知設定の解除がAPI経由で変更できない
Email Feedback ForwardingはDisabledを選択
SQSの作成
- AWSコンソールからSQSを選択(リージョンは東京)
- 新しいキューの作成を選択
- 【キュー名】を入力する。キューの属性はデフォルトで良い。
- SNSからの受信設定 アクセス許可タブの【アクセス許可の追加】を選択
- 作成したキューへのアクセス許可
【効果】許可 【プリンシパル】全員 【アクション】SendMessage 【限定条件】None 【条件】ArnEquals 【キー】aws:SourceArn 【値】作成したSNSのARN値
SNSとSQSの連携(SNSにサブスクリプションの登録)
- AWSコンソールからSNSを選択(リージョンはバージニア北部)
- 作成したSNSトピック詳細からCreate subscriotionを選択
- 【Protocol】Amazon SQS 【Endpoint】作成したSQSのARN値
IAMユーザの作成
- AWSコンソールからIAMを選択
- メニューのユーザーから【ユーザーを追加】を選択
- 【ユーザー名】、【アクセスの種類】はプログラムによるアクセスを選択
- 【既存のポリシーを直接アタッチ】を選択(2回目からはアクセス権限を既存ユーザーからコピーで可能)
- SQSで検索し、AmazonSQSFullAccessを選択 同様にSESで検索し、AmazonSESFullAccessを選択
- .csvのダウンロードを選択 アクセスキーとシークレットアクセスキーを控える
設定確認
設定が終了したのでテストメールを送ってみましょう。
1. SESに登録したメールアドレスを選択し、Send a Test Emailを選択
2. Toにバウンス扱いになるメールアドレス(bounce@simulator.amazonses.com)を入力。Subject、Bodyは任意。
3. Send Test Mailを選択
4. 作成したSQSを選択し詳細をチェック
利用可能なメッセージ(可視)が1になっていたら正しく設定ができています。また、SESに登録したアドレスはSNSにサブスクリプション登録しているので、以下のようなメールも届いているはずです。