AWS SES でメール受信
承認メールとか受信するためだけに、独自ドメインでメールサーバを運用していましたが、いろいろ面倒になってきたので AWS SES を使うことにしました。
2017 年9 月時点で SES が使えるのは以下のリージョンなので、今回は US East (N. Virginia) を使うことにしました。
- SES が使えるリージョン
- US East (N. Virginia)
- US West (Oregon)
- EU (Ireland)
独自ドメインを持っていることと、DNS 設定を変更できることが前提になります。
SES メール受信設定
特定ドメイン(独自ドメイン)宛てのメールは全て S3 に保存されることになります。
- [SES] -> [Email Receiving] -> [Rule Sets] -> [Create a Receipt Rule]
ドメイン設定(Recipients)
- ドメインを入力し、[Add Recipient] をクリック
- [Verify domain] をクリック
- SES がドメインを認証するための TXT レコードが表示されます。表示されたレコードを DNS へ登録します
- [Close] をクリック
- [Next Step] をクリック
受信ルール設定(Actions)
- [Add action] -> [S3] -> [S3 bucket] -> [Create S3 bucket]
1.1. Bucket Name を入力して、 [Create Bucket] をクリック - [Next Step] をクリック
- Rule name を入力して、[Next Step] をクリック
- 内容を確認して、[Create Rule] をクリック
テストメール送信
テストメールを送信すると、上記で作成した S3 にメールが保存されます。
ダウンロードして内容を確認します。
本文の日本語が確認できない時
S3 からメールをダウンロードして内容を確認すると、日本語が UTF-8(16進文字列) になっていて読めません。
その場合は、xxd を使うと確認できます。
$ echo -n =E3=83=86=E3=82=B9=E3=83=88 | xxd -r -p テスト
SES でメール受信したら SNS 通知
頻繁に使うアドレスではないので、メール受信したら SNS で Gmail などに通知するようにします。
- [SES] -> [Email Receiving] -> [Rule Sets] -> [View Active Rule Set] -> 作成したルールを選択
- [Actions] -> [Add action] -> [SNS] -> [SNS topic] -> [Create SNS topic]
1.1. Topic Name を入力して、[Create Topic] をクリック - [SNS] -> [Topics] を選択し、上記で作成した Topics の ARN をクリック
- [Create subscription] をクリック
1.1. Protocol に Email、Endpoint にお知らせを受信するメールアドレスを入力し、[Create subscription] をクリック - Endpoint に設定したアドレスに [AWS Notification - Subscription Confirmation] というメールが届くので、[Confirm subscription] リンクをクリック
- [SES] の [Rule Sets] で、[Save Rule] をクリック