hypermkt blog

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

March 29, 2020

はじめに

とあるサービスのアプリケーションからのメール配信を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からメール配信時は、送信失敗メールアドレスのリストと比較して、対象メールアドレスには送信しないようにする。それ以外の場合は正常なメールアドレスとしてメール送信しても良い。

おわりに

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

参考


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