この記事について
準備編の続き
https://qiita.com/Sand-River/items/4c0dbb16b70e11ec594a
受信のための設定
前提として準備編でドメインの検証が完了していること。
DNS定義
利用するドメインのMXレコードとして以下の値を設定する。
10 inbound-smtp.regionInboundUrl.amazonaws.com
例)バージニア北部(us-east-1)だと
10 inbound-smtp.us-east-1.amazonaws.com
受信用S3の作成と設定
受信したメールを直接SNSやLambdaに渡す事もできるが、SNSだとサイズの制限(150KB)があったりLambda一発だとロストの心配があったりするので、一旦S3に蓄積する。
重要
Amazon SNS の通知を通じて E メールを受信することを選択した場合、E メールの最大サイズ (ヘッダーを含む) は 150 KB です。それよりも大きいメールはバウンスします。このサイズよりも大きい E メールが予想される場合は、代わりに Amazon S3 バケットに E メールを保存してください。
とりあえずデフォルト設定でS3を作成。バケット名は mail.domain_name とかでええんじゃないかと(適当)
作成したバケットを選択し、アクセス許可のタグからバケットポリシーを編集する。
バケット名(mail.domain_name), AWSのアカウントID(111122223333)の部分は環境に合わせて書き換え。
(ポリシーを書く度に思うんだけど、自分のアカウントIDを指す変数が欲しいなぁ……)
{
"Version":"2012-10-17",
"Statement":[
{
"Sid":"AllowSESPuts",
"Effect":"Allow",
"Principal":{
"Service":"ses.amazonaws.com"
},
"Action":"s3:PutObject",
"Resource":"arn:aws:s3:::mail.domain_name/*",
"Condition":{
"StringEquals":{
"AWS:SourceAccount":"111122223333"
}
}
}
]
}
SESの設定
最終的には転送処理を作成するつもりだが、一旦はS3への格納のみ実施
SESのEmail receivingから「Create rule set」を選択。
(ちなみに、東京リージョンなど、SESが受信に対応していないリージョンで作業を進めていると、ここで「Email receiving」が表示されていないことに気づき愕然とする)
作成したルールセットの詳細画面が開くので、さらに「Create rule」。
ルール名を入力。(その他のオプションはデフォルトのまま)
ルール適用する条件を設定できるが、とりあえずオプションなので何もせずにNext。
Actionで「Deliver to Amazon S3 bucket」を選択し、先程作成したS3 Bucketを選択。
それ以外はデフォルトのまま。
Nextすると確認画面が表示されるので、問題なければ「Create rule」
ルールが作成され、Enabledになっていることを確認。
問題なければ「Set as active」を押してルールセット自体をInactiveからActiveにする。
確認
今回セットアップしたドメインあてにメールを送信するとメッセージIDをオブジェクト名としたオブジェクトがS3バケットに作成されていることが確認できる。