2020/03/29

AWS SESを利用したメール配信とバウンスメール対策の設計案

はじめに

とあるサービスのアプリケーションからのメール配信を AWS SES に切り替えるため、全体的なアーキテクチャを検討した。内容としては参考サイトの内容と被っているが、自分の理解のためにまとめた。

現状

  • アプリケーションからは Dovecot + Postfix で構築したメールサーバーを利用してメール配信をしている
  • バウンスメール対応が出来ていない
  • OS のサポート期限が迫っている

要求

  • OS のサポート期限問題を解決したい
  • マネージドサービスを利用してインフラ運用の手間を減らしたい = サービス開発に注力したい
  • バウンスメール対応をしたい

アーキテクチャー

上記の現状と要求と満たすため、AWS のドキュメント・各種ブログの記事を参考にして、AWS SES を利用したメール配信アーキテクチャにしたい。

ポイント

  • SES を利用することでメールサーバーの構築・運用が不要
  • App からのメール配信は AWS SES 経由で行う
  • AWS SES ではメール送信の結果をバウンス(不達)、苦情、配達の3つを受け取ることができる。それらの結果は、AWS SNS トピックの HTTP エンドポイントのリクエストを利用して、App に送信する
  • App は AWS SNS より受けたリクエストの種類に応じて処理。バウンス・苦情のメールアドレスは、送信失敗メールアドレスとして DB などに保持。
  • App からメール配信時は、送信失敗メールアドレスのリストと比較して、対象メールアドレスには送信しないようにする。それ以外の場合は正常なメールアドレスとしてメール送信しても良い。

おわりに

全体的なアーキテクチャとしては実現できそうなイメージとなった。個々の細かい仕様や設定方法は随時調べる必要はあるが、多分どうにかなるだろう。あとは頑張るのみ。

参考


Makoto Chiba

都内で働くWebアプリケーションエンジニア。主にサーバーサイド。最近はRuby/Railsでコードを書くのが楽しい。