📧

俺的私的利用目的Tips Amazon SES

2023/08/04に公開

おばんです。 Mr.oldtypeです。
皆さん個人メールアドレスって何使ってますか?昨今は無料で使えるメールがたくさんあるのでキャリアメール使ってる方も減ってるのかなと思います。
そんな中僕といえば、独自ドメインを契約してAmazon SESをSMTPサーバとして使ってます。
ただの趣味なのですが、ある目的があって使ってる面もあるので、今回はそちらをご紹介したいと思います。

概要図


こんな感じで指定したドメイン宛にきたメールすべてをGmai宛に転送して閲覧しています。
SESメール受信のルールセットで受信者の条件を空欄にすることですべてのメールをトリガーにアクションを実行することが可能です。
※裏返すと意図しないアドレス(aaaaa@~ など適当なエイリアスなど)に対するメールが受信出来てしまうのであんまりいい方法ではないです。

Lambdaコード

こちらのコードを丸パクリしました。圧倒的感謝。
aws-lambda-ses-forwarder

ちなみにこのコードを使ってる理由ですが、SESで受信したメールをGmailに転送してくるだけなら簡単でした。が、そのまま実装すると送信元がSESになってしまい、本来の送信元が分からなくなってしまいました。つまりReplyヘッダーかReply-Toヘッダーに送信元メールアドレスを保持したままメールを転送する必要がありましたので、慣れないJSで書かれたものを使ってます。
表記ルールなどは上記GitHubのReadmeを見てください。

なんでこんなことしてんの

よくぞ聞いてくれました。
冒頭書いた通り90%趣味なのですが、10%理由がありまして。
僕はインターネット上の会員サイトやメールをアドレスを登録する必要があるとき、そのサイトドメイン+規定の文字列をエイリアスとして登録をしています。(例えばAmazonであれば、amazon***@~みたいな)
そうすることでIDを忘れることがないのと、仮にスパムメールが届いた時にどのサイトから流出したのか?当てを付けることが出来ます。
怪しいメールが届いたアドレスで登録してたサイトは直ぐに退会処理などして、更なる被害を(もう手遅れですが)防ぐことが出来る。と思っています。まぁ今のところそういったことは…いやこの前ありました。
一通だけ届いたアドレスが、Amazonで登録してるやつでした。
ただAmazonはAmazon Payを使うため何個かのサイトで登録していたので結局分からず仕舞いでした。(意味ない)
とまぁこんな感じで、自分では結構画期的だなーと思っている使い方をしています。

以前は利用するサイトが増えるごとに都度都度ルールセットにアドレスを書いて有効化をしてたのですが、途中からめんどくさくなったのでルールセットを空にしてます。

WorkMail使えば

確かにわざわざGmailに転送しなくてもWorkMailを使えばメールを見れるのですが、1アドレスごとに1ユーザー必要なので、諦めました。
1アドレスでいいから独自ドメインでメールしたいのであればめっちゃ簡単なのでWorkMailはオススメです。(ただUIはあんまりいけてない)

余談

SESメール受信の「スパムとウイルススキャン」

「スパムとウイルススキャン」を有効化すると、有害なメール受信を未然に防いでくれます。
ただ誤検知も多く、実際僕も通常のメールがいつまで経っても届かないことが多くありました。
よくあったのがSteamのワンタイムパスワード通知と、クレジットカード会社からのメール(いずれもHTML)だったので、ドメインや件名でスパムに使われそうなものを自動判定してるっぽいです。
S3にもログにも残らないので送れてないのか受信拒否してるのか分かりませんでした。
なんか届かないメールあるなーと思ったら一度、この機能を無効化してみてください。

転送されてきたメールに返信する場合

送られてきたメールに返信する場合、なにも考えず返信するとGmailアドレスになってしまうので注意してください。
独自アドレスを送信元アドレスに変更して返信したい場合は、Gmail側でエイリアス設定をしてください。
Gmail でエイリアスからメールを送信する

Virtual Deliverability Manager めっちゃいいのでオススメ

今までCloudWatchから何となくのメトリックしか確認できませんでしたが、それを一元管理できる機能が最近実装されました。
今回の用途では関係ないですが、開封率や送信先ISPなどがダッシュボード化されて、マーケティングに必要な簡単な機能がそろっています。一応有料ですがオススメです。
https://docs.aws.amazon.com/ja_jp/ses/latest/dg/vdm.html

Discussion