はじめに
AWS SESを使用して、メールを受信してみます(送信ではありません)。
まずはシンプルにS3へ保存する設定をAWSコンソールからやってみます。
(SESでのメール受信って、2015年からサポートされているんですね。知らなかった。。。)
AWSコンソールから設定
リージョンを選ぶ
今のところ、メール受信は3つのリージョンが対応しているそうです。
- US East (N. Virginia)
- US West (Oregon)
- Europe (Ireland)
どれか使い勝手の良いリージョンを選びます。
SESサービスを開く
SESサービスを開くと、Email receiving というメニューがあるので選びます。
ドメイン所有者確認
始める前に、ドメイン名を検証しろというメッセージが表示されました。
画面に従い Create Identity をクリックします。
こんな画面になりました。
メールサーバはまだないので、Domain を選びました。ドメイン名も入力します。
他のオプションは送信時用なのでそのままです。
DKIM使うみたいです。
DKIMを設定
というわけで、いったんAWSコンソールを離れてDKIMを設定します。
既に設定されている場合や、Route53を使っている場合はスルーでよろ。
秘密鍵を生成
とりあえず何も考えずRSA 2048ビットでドンと作ります。
openssl genrsa -f4 -out private.key 2048
-f4 は公開指数(public exponent)を 0x10001 = 65537 にするオプションです。
(公開指数がなんぞやというのは、「RSA鍵の要素と暗号化」 がわかりやすかったです)
公開鍵を生成
openssl rsa -in private.key -pubout -out public.key
DNSにTXTレコードを追加
以下のようなDNSレコードを追加します。
- 名前
- セレクタ._domainkey.ドメイン名
- 種類
- TXT
- 値
- p=公開鍵
セレクタ は、適当な一意の名前です。サービスごとにDKIM使い分けたり、秘密鍵を更新したりしたいときに、区別するために使います。
こんな風に追加しました。
これはとあるDNSサービスの管理画面です。
opensslの生成するファイルは、改行等が入っていますので、こんな感じに削除するとよいかもです。
grep -v '\-\-' < public.key | tr -d '\n'
AWSコンソールに戻りまして
ドメイン所有者確認(続き)
Advanced DKIM settingsを開いて、**Provide DKIM authentication token (BYODKIM) を選びます。
Route 53を使っている場合は、Easy DKIMを選ぶと万事よろしくやってくれるみたいです。
秘密鍵とセレクタを入力します。秘密鍵は頭とお尻の----の行と、改行を取り除いて入力します。
Create Identityボタンをクリックします。
できました。
メール受信ルールを作成
ルールセットを作成
あらてめまして Email receiving の画面にやってきまして、Create rule setをクリックします。
ルールセット名を入力します。
ルールセットが作成されました。続いてルールを作成します。
ルールを作成
Create ruleをクリックします。
ルール名を入力
ルール名を入力します。
条件を設定
サブドメインも含めて全部受信するため、条件を2行追加します。
処理を設定
お試しということで、S3へ保存するアクションを追加します。Deliver to S3 bucektを選びます。
既存のS3 bucketを選択するか、新たに作成します。
既存のバケットを選択したときは、SESからのPutObjectを許可するようにパーミッションを設定しておきます。
レビュー
最後にレビューしてCreate ruleをクリックします。
ルールセットをアクティブにする
作成したルールセットをアクティブにします。Set as activeをクリックします。
MXレコードを設定
再びDNSに戻りまして、MXレコードを追加します。
MXのホスト名は下記にあります。
テスト
適当にメールを送ると、S3へ保存されました。