[AWS] SES(Simple Email Service)でメールを受信する - お試し編

# はじめに

AWS SESを使用して、メールを受信してみます（送信ではありません）。

まずはシンプルにS3へ保存する設定をAWSコンソールからやってみます。

（SESでのメール受信って、2015年からサポートされているんですね。知らなかった。。。）

# AWSコンソールから設定

## リージョンを選ぶ

今のところ、メール受信は[3つのリージョン](https://docs.aws.amazon.com/ses/latest/dg/regions.html#region-receive-email)が対応しているそうです。

* US East (N. Virginia)
* US West (Oregon)
* Europe (Ireland)

どれか使い勝手の良いリージョンを選びます。

## SESサービスを開く


SESサービスを開くと、**Email receiving** というメニューがあるので選びます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/59475/c89bdf49-a383-6ac0-0587-b7b6efd55173.png)

## ドメイン所有者確認

始める前に、[ドメイン名を検証しろ](https://docs.aws.amazon.com/ses/latest/dg/receiving-email-verification.html)というメッセージが表示されました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/59475/99d8025e-2336-4c1c-5d09-bfef62721120.png)

画面に従い **Create Identity** をクリックします。

こんな画面になりました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/59475/95f9d0fd-3081-6519-f670-d8b7f24de1fd.png)

メールサーバはまだないので、**Domain** を選びました。ドメイン名も入力します。

他のオプションは送信時用なのでそのままです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/59475/16738db4-923f-ff73-2171-bd9edf8d846f.png)

DKIM使うみたいです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/59475/0fc62b02-ab30-f0f8-8379-ad85a281737c.png)


# DKIMを設定

というわけで、いったんAWSコンソールを離れてDKIMを設定します。

既に設定されている場合や、Route53を使っている場合はスルーでよろ。

## 秘密鍵を生成

とりあえず何も考えずRSA 2048ビットでドンと作ります。

```console
openssl genrsa -f4 -out private.key 2048
```

**-f4** は公開指数(public exponent)を 0x10001 = 65537 にするオプションです。

（公開指数がなんぞやというのは、[「RSA鍵の要素と暗号化」](https://qiita.com/ch7821/items/4b315902c0c5f84083ab) がわかりやすかったです）

## 公開鍵を生成

```console
openssl rsa -in private.key  -pubout -out public.key
```

## DNSにTXTレコードを追加

以下のようなDNSレコードを追加します。

<dl>
<dt>名前
<dd> <i>セレクタ</i>._domainkey.<i>ドメイン名</i>
<dt>種類
<dd>TXT
<dt>値
<dd>p=<i>公開鍵</i>
</dl>

*セレクタ* は、適当な一意の名前です。サービスごとにDKIM使い分けたり、秘密鍵を更新したりしたいときに、区別するために使います。

こんな風に追加しました。
これはとあるDNSサービスの管理画面です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/59475/01108d1b-761e-b64f-db2e-dca613fed6bb.png)

:::note info
opensslの生成するファイルは、改行等が入っていますので、こんな感じに削除するとよいかもです。

```console
grep -v '\-\-' < public.key | tr -d '\n'
```
:::

# AWSコンソールに戻りまして

## ドメイン所有者確認（続き）

**Advanced DKIM settings**を開いて、**Provide DKIM authentication token (BYODKIM) を選びます。

Route 53を使っている場合は、**Easy DKIM**を選ぶと万事よろしくやってくれるみたいです。

秘密鍵とセレクタを入力します。秘密鍵は頭とお尻の----の行と、改行を取り除いて入力します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/59475/26f3c2dc-8377-1923-876c-3c7af144f834.png)

**Create Identity**ボタンをクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/59475/4045089c-ac9f-0609-e506-52b679740691.png)


できました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/59475/4ce14a9e-3b88-dec8-b3fc-7e3a6ac53a1a.png)




## メール受信ルールを作成

### ルールセットを作成

あらてめまして **Email receiving** の画面にやってきまして、**Create rule set**をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/59475/5f16ad45-e345-0b69-76cc-0e359b96c1dd.png)

ルールセット名を入力します。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/59475/17607822-81f7-caed-15db-b9cc3eba2366.png)

ルールセットが作成されました。続いてルールを作成します。

### ルールを作成

**Create rule**をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/59475/c9976cfe-74ba-70b4-47d5-fd8c5ff1ac9b.png)

#### ルール名を入力

ルール名を入力します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/59475/786587e2-7e9e-f0ef-38d3-e292908c1720.png)

#### 条件を設定

サブドメインも含めて全部受信するため、条件を2行追加します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/59475/8b1b5aa1-3844-4391-0112-b5fffbc7d310.png)


#### 処理を設定

お試しということで、S3へ保存するアクションを追加します。**Deliver to S3 bucekt**を選びます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/59475/15d9f230-4a3f-fbac-3c5d-b5ecdb286b6e.png)

既存のS3 bucketを選択するか、新たに作成します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/59475/6b1e9ee9-9be7-afb1-9751-ec74cbe04d85.png)

既存のバケットを選択したときは、SESからのPutObjectを許可するようにパーミッションを設定しておきます。

#### レビュー

最後にレビューして**Create rule**をクリックします。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/59475/84211941-e32d-ac20-de45-9d75cb71d84c.png)


### ルールセットをアクティブにする

作成したルールセットをアクティブにします。**Set as active**をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/59475/2d0fff63-eacf-0165-3bcd-4f7fdc996957.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/59475/b95f48ae-2ace-ebde-36b9-c7a038a6287d.png)


# MXレコードを設定

再びDNSに戻りまして、MXレコードを追加します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/59475/863012fe-c8ab-c669-cd6b-9fbd82d753b7.png)

MXのホスト名は下記にあります。

https://docs.aws.amazon.com/ses/latest/dg/regions.html#region-receive-email

# テスト

適当にメールを送ると、S3へ保存されました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/59475/2fa17087-b537-0161-4d9f-6e18ae573769.png)