AmazonSESを使って無料で独自ドメインのメールを送受信する
これまでAmazonのWorkMailを利用して独自ドメインのメールを送受信していたのですが、1つのドメインにつき毎月400円を定額で支払う必要があり、ちょっと高いと感じています。
そこで、無料でメールの送信・受信が行えるようSESとRoute 53、Lambdaを試すことにしました。最終的にはSMTPなどを利用し、Gmailのアカウントでストレスなく送受信できるようにすることが目標です。
*無料と紹介していますが、リクエスト数や送受信量によっては料金が発生します。
通常、独自ドメインのメールを扱うためにはメールサーバーが必要です。一から作るとなると、メールサーバー用にEC2をセットアップしなければならず、コストと時間がかかります。しかしSESを使えばサーバーを利用しなくて済みますし、メンテナンスも必要ないため、低コストで運用が可能です。
この記事ではAmazonSESの設定を行い、S3で受信するまでの手順をまとめました。
Route 53の設定
Route 53でホストゾーンの作成をしていない場合はあらかじめ設定しておく必要があります。すでに設定している場合は不要です。
S3バケットの作成
次はS3のバケットを用意します。受信したメールをこのバケットに保管します。すでに存在しているバケットを利用したい場合は新たに作成する必要はないです。
SESとRoute 53の接続
ドメインをSESに認証させます。
メールを受信できるようにするためにはEmail Receiving Recordにチェックを入れなければいけません。このチェックを入れると、自動でMXレコードをRoute53のホストゾーンに追加してくれます。
設定が完了すると1分ほどでステータスがverifiedに変わり、使用できるようになります。
メールの送信テスト
SESとRoute53の設定ができたら、メールを送信できるかテストします。うまく行かない場合はRoute53、SESが正しく設定されているか見直します。
SESとS3の接続
最後に、SESの受信ルールを作成し、メールをS3のバケットで受け取れるようにします。
既存のルールセットがある場合はそのルールセットをクリックしてCreate Rule。
ない場合はCreate Receipt Ruleというボタンをクリックします。
受信のメールアドレスを追加します。追加するアドレスはhogehoge@example.comとかです。hogehogeの部分はなんでも好きな文字列を設定できます。何も追加しない場合は、@example.comである全てのメールが受信されます。
S3のバケットをActionに指定します。Object key prefixを設定すると、その設定した文字列でバケット配下にフォルダを作成し、その中にメールを入れてくれます。Encrypt Messageはメールを暗号化するオプションです。暗号化されたメールはSESのマスターキーを使って復号化します。そこまでセキュリティを強固にする必要がなければ外しておいて大丈夫です。
ルールの名前とルールセットを指定し、レビューして完了です。設定が正しければAMAZON_SES_SETUP_NOTIFICATIONという名前のオブジェクトがバケットに作成されます。
最後に、ルールセットがアクティブになっているか確認します。アクティブになっていなければ、Set as Active Rule Setをクリックし、ルールセットを有効にします。
メールの受信テスト
Gmailなど、利用しているメーラーから設定したメールアドレスへ送信し、ちゃんとメールが受け取れているか確認します。
バケットにオブジェクトが作成されない(受信できない)場合は次の点を見直します。私は受信ルールが有効になっておらず、ハマりました。
- Route 53にMXレコードが設定されているか
- 受信ルールセットがアクティブになっているか
まとめ
SESとRoute53、S3を使って、独自ドメインのメールをサーバーレスで送受信できるようになりましたー。やったね!次はGmailで使えるようにしますー。