ACMでSSL発行するときにメールサーバがないときは、SESを使おう

Pocket

Route53でドメインを取得して、ACM(AWS Certificate Manager)でSSLを無料で発行して、ELB(Elastic Load Balancing)に設定したいなんてことをしようとしたら、ACMでSSL証明書発行時のドメイン認証メールを受け取る環境をつくらなくてなならず、そのためにメールサーバを構築するのもEC2を使うのもめんどくさかったので、SES(Simple Email Service)を使ってメールを受信する環境を用意しました。
今後のために備忘録程度にまとめておきます。

SESでドメインを設定

SESを利用して、メールを受信するために、Route53を使ってドメインのMXレコードをSESのエンドポイントを指定する必要があります。
SESのメール受信のエンドポイントは、こちらで確認できます。
ご覧の通り東京リージョンでは、SESは利用できないので、オレゴンリージョンを使います。
ちなみに、オレゴンのメール受信のエンドポイントは、inbound-smtp.us-west-2.amazonaws.com です

SESで使用したいドメインを設定します。
SES > Domains とたどって、[Verify a New Domain] ボタンをおします。

sesdomains

すると下記のようなポップアップが表示されます。

VerifyaNewDomain

Domainの欄に、Route53で取得したドメインを設定します。

VerifyaNewDomain2

次のページに行って、[Use Route 53]をおします。

useRoute53

すると、Route53に登録するレコード一覧が表示されますので、[Email Receiving Record]の項目をチェックして、[Create Record Sets]をおします。
これでSESでのドメイン設定は完了です。
あとは、Route53で先ほど設定したTXTレコードとMXレコードが登録されているか確認しましょう。

SESでメール受信のルールを設定

SESのホームから、左メニューのRule Setsを選択して、[View Active Rule Set] > [Create Rule]の順に遷移します。
メールを受信するドメイン名を入力し、[Add Recipient]をおしてから、[Next Step]をおします。
ActionにS3を選択して、S3のパケットを選択します。
バケットポリシーには、下記のようにすればOK

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "AllowSESPuts-1466315224036",
            "Effect": "Allow",
            "Principal": {
                "Service": "ses.amazonaws.com"
            },
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::S3バケット名/*",
            "Condition": {
                "StringEquals": {
                    "aws:Referer": "ハイフンなしのAWSアカウントID"
                }
            }
        }
    ]
}

最後に、ルール名を適当に設定して完了。
設定したドメインにメールをとばして、S3のパケットに届いていれば成功!
Good Job!

Pocket

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>