自社メールサービス作ってみた
概要
SESなど使って自社メールサービス作った。
構成
Request => メールAPI => SQS => メール送信Worker => SES => SNS => SQS => メール結果受信Worker
メールサービス
- メールAPI
- メール送信Worker
- ポーリングして、SQSを受け取り、SESに渡す。
- バウンスメール対象アドレスかのバリデーションを行う。
- メール結果受信Worker
- ポーリングして、SQSを受け取り、結果がbounseだったりしたら、DBにバウンスメールアドレスを登録しておく。
- SNSから直接API叩いてもいいけど、めっちゃ来たら困るので、一旦SQSに入れる。
- 下の形のメッセージが渡ってくる。
- https://docs.aws.amazon.com/ja_jp/ses/latest/DeveloperGuide/notification-contents.html
メール分析
SESで、Configure Set を登録すると、開封やクリックを計測できる。
SES => Firehose => Lambda => Redshift に入れて、分析できるようにした。
(Lambdaで欲しい形式にログを修正する)
Amazon SES イベント発行を使用したモニタリング - Amazon Simple Email Service
上のリンクの通りにしたらできるはず。
メール送信
下の記事のように、RailsのAction Mailerでカスタムな delivery_method 作って、送信するやつ作ってみたら簡単だった。 Action Mailerのdelivery_methodに独自の配信方法を追加する - Qiita
注意
Bounce Rate が上がらないように注意が必要。
Cloudwatchでモニタリングできるので、そこをでアラート設定しておく。
大量配信したいならば、あらかじめメールアドレスのクレンジングがほぼ必須。
結局、バウンスレートの関係で、大量送信難しいので、API => SES => SNS => API みたいな感じでも普通に捌けそう。
大量送信ならPinpoint使った方がいいらしいので、今度はそっちを調べてみる。