選択肢は3つくらいあります。
1. EC2 に postfix とかインストールしてメールサーバー運用
メリット: ちゃんと運用できるなら、自由に設定して運用できる。
メアド何個作っても、料金はサーバー代のみ
デメリット: インストール&設定大変、ユーザーが増えたら、
メールボックスの容量とか、迷惑メールのフィルタリング、
EC2からのメール送信制限を気にしたり、
セキュリティアップデートや、
万が一落ちた時の対応など管理負荷が増える
2. Amazon WorkMail を使う
メリット: 設定簡単、webmailも使える
デメリット: ユーザーあたり月4ドルでやや高い
Amazon WorkMail
https://aws.amazon.com/jp/workmail
3. Amazon SES/Lambda でメール送信/受信(転送のみ)
メリット: 設定の難しさ 1 と 2 の中間くらい、
ただし、Lambdaの概要がわかってないと設定しにくい(これメリット?)
一度設定終わってしまえば、基本、メンテナンスフリー
コストが安いはず(SES, Lambda ってメールがそんな大量でなければ、
EC2や、Workmailに比べて屁みたいなもの、と思う)
デメリット: メールボックスを持てない、転送のみ
送信元アドレスが、受信アドレスと同じになる
(ただしReply-to には正しい送信元アドレスが設定されるので、
返信する時には全く問題ない、詳しくは後述)
で、今回は 3 の方法を解説します。
いろいろ参照する記事もありますが、まず大事なのが
・ドメインの設定を Route53 に移管しましょう。(これは必須ではないが、Route53にドメイン設定があると SES の設定が比較的楽)
Lambda では
このソースコードを使います
arithmetric/aws-lambda-ses-forwarder
https://github.com/arithmetric/aws-lambda-ses-forwarder
Lambda のロールについては以下の記事も参考に
aws lamba の既存のロールについて
http://blog.office-aship.info/archives/196
SESでドメイン認証を行なったあと、
最初に送信(SMTP)の設定を行います。
SMTP Settings から、簡単に SMTP サーバーの設定を取得できます。
受信に関しては
Email Receiving -> Rule Sets
から、S3のバケットを作成し、Lambda ファンクションを設定する流れになります。
ただ、Lambda ファンクションの中で、 Rule Sets の中で作成した S3 のバケット名も設定しないといけないので、 SES と Lambda の画面を行き来しながら、設定することになります(笑)
Lambda の設定で S3 のトリガーを設定しますが、これは PUT で大丈夫です。
そもそも、なんでメール転送に S3 を使うのかというと、SES の仕様で、受信したメールは一回 S3 に必ず置くことになってます。
それを SES では転送できないので(めちゃ不便。。)、、しょうがないので、S3 にメールのデータを置かれたのをトリガーにして Lambda で転送する仕組みです。
言い忘れましたが、転送なので、転送先のメールアドレスは持っている前提になります(gmailとかなんでもいい)
冒頭で「送信元アドレスが、受信アドレスと同じになる」と書きましたが、
これは例えば、ユーザーA(aaa@aaa.com) が
自分の独自ドメインのメールアドレス(bbb@example.com)にメールを送ってくれた場合
そのメールは転送先の例えば ccc@gmail.com に転送されるとします。
自分は gmail でこのユーザーAさんのメールを見ますが、
このメールの送信アドレスはなんと ユーザーA
と見えてしまうのです(これは正しくは ユーザーA
ただし、このメールに返信すると
返信先は、正しい ユーザーA
になるので、実質問題はありません。
概要だけの説明ですが、みなさんクラウドで快適なメール生活を送ってください。
コメント