こんにちは西山です。
メール配信サービスとしてAWSではAmazon SES(以降SES)が用意されています。
SESは簡単に使い始めることができますが、運用していく中ではバウンスメールや苦情メールを管理していく必要があります。
ギークフィードでは社内システムやYouWireなどの自社サービスでSESを利用しており、どのようにバウンスメール、苦情メールを管理しているかをご紹介します。
苦情メールもバウンスメールと同様に管理しているので、この記事ではバウンスメールについてのみ記載しています。
アイキャッチ画像はGoogle Geminiで生成しました。
目次
なぜバウンスメールを管理する必要があるのか
Amazon SESを利用すると、メールはAmazonから送信先となるEメールプロバイダーへ送られ受信者に届けられます。
Eメールというのはスパムや迷惑メールの温床で、送信元のメールサーバーや送信元ドメインを評価し、信頼できない送信元とみなされた場合には送信先からブロックされたり場合によっては法的措置をとられます。
その評価の指標としてバウンス率や苦情率というものがあります。
- バウンスとは:メールが正常に送信先に届かないとバウンスが発生します。ハードバウンスとソフトバウンスがあり、ハードバウンスは永続的に届かない(例えば相手のメールアドレスが存在しない場合など)もので、ソフトバウンスは一時的に届かない(相手側のメールサーバーがダウンしているなど)ものです。
- 苦情とは:受信者がメールをスパムや迷惑メールとしてマークすると苦情が発生します。GmailやYahooメールの画面にあるようなスパム報告ボタンをクリックすると発生します。
メールサーバーとして、送信しているメール数に対してこれらのバウンスや苦情の割合が上がってくると、そのメールサーバーは品質の低いメールを送るサーバーとして評価が落ちてしまいます。
ですので、AmazonはSES利用者に対してバウンスや苦情になったメールの情報を公開し、利用者側にそれらの管理を求めています。
もし一定以上のバウンス率、苦情率になるとその送信元AWSアカウントがレビュー対象となり、メール送信が停止されてしまいます。
参考:自分の Amazon SES の送信アカウントがレビュー対象になっている、またはメールを送信する機能が一時停止されています。どうすればこれを解決できますか。
メール送信を維持してくためにSES利用者はバウンスメール、苦情メールを管理する必要があります。
いれるべき通知
管理をするといっても常に送信メールをチェックする必要はありません。アラート通知や設定を入れておき必要なときに対処をすればよいです。
必須設定とオプション設定が全部で3つあるので紹介します。
必須設定
- バウンス率、苦情率のCloudWatchアラーム
- バウンスメール、苦情メールを保存する設定
前述したようにバウンス率と苦情率が上がってしまうとアカウントのメール送信が停止されてしまうため、それぞれの率のメトリクスのアラームは必須です。
SESはメール送信ログがデフォルトでは残らず、CloudTrailにも残らないので、アラームをつけても、いざアラームが起きた際にどのメールが対象なのかがわからず対処ができないという問題があります。そのため、問題であるメールをS3バケットに保存することで、対象のドメインやメールアドレスに対しての送信を停止するといった対処を行うことができるようになります。
オプション通知
- 個別バウンスメールの通知
バウンスが起きた際に1件1件個別に通知する設定はオプションになります。
例えばメーリングリストに対してのマーケティングメールであれば、不特定多数に送信するため不要でしょう。
しかし、自社サービス提供をしていて顧客担当者のメールアドレスを登録している場合に、担当者の退職後にメールアドレスが変更されおらず、メールアドレス自体が存在しなくなりサービスの重要なお知らせが相手方に届かないといったことが起きることもあります。
特定の相手に対して重要なメールを送る場合ようなケースでは、この通知設定をいれることで安定したサービス提供やサポートを行うことができます。
CloudWatch Alarmの設定
CloudWatchのメトリクスである、Reputation.BounceRate、Reputation.ComplaintRateがそれぞれAWSアカウントのバウンス率と苦情率にあたります。
これらに対して、
- BounceRate: 0.05%以上になると通知する
- ComplaintRate: 0.001%以上になると通知する
というアラーム設定にすることが推奨されています。
参考:CloudWatch を使用して評価モニタリングアラームを作成する
設定セットでのメール保存
設定セットはSESのID(ドメイン)ごとに設定可能な、ドメインに対して行う設定やイベント通知設定をまとめたものです。
設定セットはメール送信の細かいイベントに対して複数の送信先を設定することができます。
イベント送信先としてはCloudWatchやSNSも利用できますが、Amazon Data Firehoseも選べるため、
SES→Firehose→S3という構成にすることで最も安価に長期保存することができます。
このように配信、ハードバウンス、苦情メールをFirehoseへ送信することで、ほぼすべてのメール送信ログをS3に保存することができ、必要なときに調査材料として利用することができます。
個別バウンスメールの通知
ID(ドメイン)単位で設定セットを使わずにより簡単にSNSへ通知設定を行うことができます。
上記では保存のためにFirehoseへイベントを送信しましたが、個別のバウンスメールを通知する場合にはこの設定を使うと簡単です。
ドメインの通知タブからバウンス、苦情のイベントを送信するSNSトピックを指定することができます。
Slack通知を行う場合の注意点
このIDの通知設定でSNS→Chatbot→Slackの通知を行うことができません。ChatbotがSESのイベントに対応していないため、設定自体は行うことができるのですがSlackへメッセージは送信されません。
ですので、Slackへ通知を行いたい場合には、送信先Slackチャンネルのメールアドレスを発行し、SNSトピックにEメールサブスクリプションをする形で登録する必要があります。
おわりに
SES運用でバウンスメールを管理するために設定すべき通知、保存設定をご紹介しました。
SESは簡単に使い始めることができますが運用もとても重要ですので、もしやっていないものがあれば導入を検討してみてください。
参考になれば幸いです。
メンバー募集中!
ギークフィードでは一緒にAWSビジネス、自社サービス、受託開発、新規事業を推進するメンバーを募集しています。
直近で行動指針を更新したので、自分に合いそう!だとか興味ある!という方はぜひお気軽にカジュアル面談からお話させていただければと思います。
- 組織内のAWSコスト最適化のためにやっている7つのこと - 2024-12-01
- Amazon Connect Contact Lens + iPaaSで生成AI活用&他サービス連携を簡単に実現!– Amazon Connect アドベントカレンダー 2024 - 2024-12-01
- AWS Step Functionsの基本を再学習しました - 2024-09-23
- Amazon SESでバウンスメールを管理する - 2024-07-07
- TEAMをv1.1.1にアップデートしカスタムドメインを設定する - 2024-02-17