aws で独自ドメインのメール送受信サーバーが欲しいと思った時

aws

選択肢は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 の既存のロールについて
https://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
になるので、実質問題はありません。

概要だけの説明ですが、みなさんクラウドで快適なメール生活を送ってください。

タイトルとURLをコピーしました