おっす オラ悟空!
うそです、悟空じゃないです。
Qube開発担当のMモンです。よろしくお願いします。
Qubeは、当社が開発・運営をしているBtoBのWebサービスです ▼
今回は、ユーザ様に送信したメールがバウンスされた場合、
Qubeではどのように対処しているかをご紹介したいと思います。
みんな、見てくれよな!
Amazon SESとは
Amazon SES (Amazon Simple Email Service) は、AWS(Amazon Web Services)が提供する、クラウドベースのメール配信サービスです。
Qubeではメール送信にSESを利用しています。
Amazon SES(高可用性で低価格なEメール送信サービス)| AWS
バウンスとは
バウンスとは、メールの受信を拒否した場合を指し、以下の2種類あります。
ハードバウンス (Hard Bounce)
メールが永続的に配信不能な状態です。受信者のメールサーバーによって完全に拒否された場合を指します。
例)無効なメールアドレスである
例)メールアドレスの@以降が存在しないドメインである
ソフトバウンス (Soft Bounce)
メールが一時的に配信不能な状態です。受信者のメールサーバーによって一時的な問題で拒否された場合を指します。
例)受信者のメールボックスが一時的に満杯である
例)受信者のメールサーバーがダウンしている
例)受信者のメールボックスの容量制限に達した
バウンス処理について
SESは以下のことから、バウンス率に注意する必要があります。
- バウンス率が 5% 以上→AWSアカウントがレビュー対象になる
- バウンス率が 10% 以上→ メール送信を一時停止される可能性がある
そう、バウンス率が高いと、システムからメールが送れなくなってしまうかもしれないのです!困る~。
そこで、Qubeではバウンスしたメールアドレスのユーザに対して
次のような対処をしてきました。
対応その1.ハードバウンスしたユーザには一斉メールを送らないようにする
最初はハードバウンスしたメールアドレスに対してのみ、次回からは一斉メールを送らないようにAWSのSNSとLambdaで制御していました。
AWS公式にこんな記述があったからです。↓
Amazon SES における E メール配信可能性の概要 - Amazon Simple Email Service
そして、バウンス後にQubeにログインした際には、メールアドレスの変更・再認証をするよう促す処理を入れました。
対応その2.ソフトバウンスしたユーザにも一斉メールを送らないようにする
しかし、運用してみると、ソフトバウンスしたユーザに一斉メールを送り続けても、ユーザ様がバウンス原因を解消してくださることは少なく、その後のメールもバウンスされ続けることの方が多かったのです。
そこでソフトバウンスもハードバウンスと扱いを同じにした方がいいと判断し、ソフトバウンスしたユーザにも一斉メールを送らないように制御しました。
また、バウンス後にQubeにログインした際には、メールアドレスの変更もしくは再認証をするよう促す処理を入れました。
対応その3.サブプレッションリストから有効なメールアドレスを削除する
しばらく対応その2.までの仕様で運用していました。
が、ハードバウンスし続けるメールアドレスが、有効なメールアドレスであるケースがあったのです。
そのメールアドレスは、サブプレッションリストに入っていることが原因でバウンスされていました。
サブプレッションリストとは?
Amazon SESで、ハードバウンスされたメールアドレスは、サブプレッションリストに自動で登録されます。
※アカウントレベルとグローバルレベルとあるのですが、ここではアカウントレベルのサブプレッションリストについてお話します。
ここに登録されていると、メールを送信してもハードバウンスとなります。
AWSの仕様で、アカウントレベルのサプレッションリストにあるメールアドレスに送信してバウンスされた場合、アカウントのバウンス率に対してカウントしません。
自動で存在しないメールアドレスをリストに登録してくれて、バウンス率が上がらないようにしてくれるのですから、ありがたいですよね。
しかし、存在するメールアドレスが何らかの理由でサブプレッションリストに入っているケースがQubeであったのです。
考えられる原因(なぜ存在するメールアドレスがサブプレッションリストに入っていたか?)
- ハードバウンス時点では存在しなかったが、その後そのメールアドレスで発行された場合
- 本当は存在するが、SMTPサーバの設定等によりハードバウンスと見なされるレスポンスが返ってきてサブプレッションリストに誤って登録されてしまった場合
- 本当は存在するが、SESの何らかの基準でサブプレッションリストに登録されてしまった場合
対処内容
存在するメールアドレスはサブプレッションリストにある限りSESでメール送信できませんので、手動で削除しないといけません。
バウンスされたが、存在するメールアドレスがないかチェック
→あった場合、CSVにリスト化して、AWSのマネジメントコンソールにて、サブプレッションリストから一括削除
という作業を定期的にするようにしました。
以下の方法でサブプレッションリストから削除しています。
- バウンスされたメールアドレスを取得します。
Qubeでは自動でバウンスされたメールアドレスをデータ登録するように
AWSのSNSとLambdaで実装しています。 - バウンスされたメールアドレス内に、存在を確認済みのものがないかチェックします
- 存在するメールアドレスをリストにしたCSVファイルを作成します。
- マネージドコンソールにて、サブプレッションリストからの一括削除を行います。
おわりに
今回はコード等は載せずに、Qube運用での対処内容のみご説明させていただきました。
そのうち機会がありましたら、より具体的な実装内容についてもご紹介させていただければと思っております。
ここまで読んでいただきありがとうございました。
また見てくれよな!
この記事を書いた人
ニックネーム:Mモン
推し:&TEAM【2024年5月8日(水)に1st SINGLE「五月雨」リリース。よかったらMVだけでも見てください】