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)

  1. ドメインを入力し、[Add Recipient] をクリック
  2. [Verify domain] をクリック
  3. SES がドメインを認証するための TXT レコードが表示されます。表示されたレコードを DNS へ登録します
  4. [Close] をクリック
  5. [Next Step] をクリック

受信ルール設定(Actions)

  1. [Add action] -> [S3] -> [S3 bucket] -> [Create S3 bucket]
    1.1. Bucket Name を入力して、 [Create Bucket] をクリック
  2. [Next Step] をクリック
  3. Rule name を入力して、[Next Step] をクリック
  4. 内容を確認して、[Create Rule] をクリック

テストメール送信

テストメールを送信すると、上記で作成した S3 にメールが保存されます。
ダウンロードして内容を確認します。

本文の日本語が確認できない時

S3 からメールをダウンロードして内容を確認すると、日本語が UTF-8(16進文字列) になっていて読めません。
その場合は、xxd を使うと確認できます。

$ echo -n =E3=83=86=E3=82=B9=E3=83=88 | xxd -r -p  
テスト  

SES でメール受信したら SNS 通知

頻繁に使うアドレスではないので、メール受信したら SNSGmail などに通知するようにします。

  1. [SES] -> [Email Receiving] -> [Rule Sets] -> [View Active Rule Set] -> 作成したルールを選択
  2. [Actions] -> [Add action] -> [SNS] -> [SNS topic] -> [Create SNS topic]
    1.1. Topic Name を入力して、[Create Topic] をクリック
  3. [SNS] -> [Topics] を選択し、上記で作成した Topics の ARN をクリック
  4. [Create subscription] をクリック
    1.1. Protocol に Email、Endpoint にお知らせを受信するメールアドレスを入力し、[Create subscription] をクリック
  5. Endpoint に設定したアドレスに [AWS Notification - Subscription Confirmation] というメールが届くので、[Confirm subscription] リンクをクリック
  6. [SES] の [Rule Sets] で、[Save Rule] をクリック

参考