とっしぃのTech Memo

PHPとかサーバとか他色々言語のメモ的な。あとはたまにガジェットとか。

AWSのRoute53とSES、SNS、S3でSSL証明書のメールを受け取るまで

また社内でそこそこの頻度でありそう&大体その時には忘れてる系の事案(エントリタイトルの通り)があったのでメモ。

前提

  • 以前からドメイン取ってるサービスがあって、ドメインはそこで一元管理
  • サービスそのものはAWSで開発、本番運用予定
  • DNSAWSのRoute53を利用

という状態で、SSL証明書取るためのadmin@hogehogeとか受け取りたい

のです。

よくあるドメインレジストラの機能が使えない

んです。

お名前.comとかだと「メール転送サービス」とかありますよね。
こっちでMXレコードとか設定したりメールサーバ用意しなくても、指定したメールアドレスへのメールを届けてくれるやつ。

Route53はシンプルで良いサービスだと思いますが、シンプルなだけにそんな便利な機能はないです。

SESを使ってメールを受信する

なのでAWSのメールサービス、SESを利用します。

とは言っても、SESは基本メール送信のためのサービスで、受信はおまけみたいなもんなのであんまりいい感じにはしてくれません。

ドメインを登録する

f:id:tossy_yukky:20170522114334p:plain
からの
f:id:tossy_yukky:20170522114357p:plain
ですが、メールの受信がしたいだけの場合、

Generate DKIM Settings

のチェックは入れなくて大丈夫です。
DKIMはメール送信時のオプションです。

あとは大体言われるがままで大丈夫だと思います。
大丈夫じゃなかったとしても責任は負いませんが。

「Email Receiving」→Rule Setsで受信ルールを作る

f:id:tossy_yukky:20170522113657p:plain

  • 受信するメールアドレスを指定

f:id:tossy_yukky:20170522113608p:plain

  • 受信した時のアクションを指定

f:id:tossy_yukky:20170522113500p:plain

    • SNSとか
    • S3にファイルとして保存とか
    • Lambdaに渡すとか

大体いつもSNSでメール送信させる&S3にバックアップとしてファイル保存、て感じです。

SNSに渡して、SNSでメール送信させるような

場合、EncodingはBase64にしておかないとあとでハゲます。

SNS

は、Protocolは何でもいいですが、メール受信したい場合ならEmailかEmail-Jsonを選ばないとメール来ません。
当たり前ですが。

受信したメールがわけわからんぞ

base64エンコードされてますからね。デコードしないとダメですよね。

,\"content\":\"〜〜〜〜〜\"}",

って部分を探して、そこを一回デコードすることでメールを全てテキストで取り出すことができます。
そのなかで、メールボディも更にbase64エンコードされているため、文面を日本語で読みたい場合はもう一回デコードしないといけません。

ということで

少々めんどいですが、SSL証明書取る時くらいのメール受信ならまぁなんとか我慢できる範囲でしょうかね。
これが毎日のメールだったら吐きます。

以上、「AWSのRoute53とSES、SNS、S3でSSL証明書のメールを受け取るまで」でした。