SESルールの設定方法

# やりたいこと
受け取ったファイルを自動でどこかに保管し、管理したい（後続の処理で使いたい）！
- ファイルの受け取り方法: メール
- ファイルの保管場所: どこでも

## 考えた案
保管場所をAmazon S3にして、Amazon SESの Rule Setsを使用する
指定のメールアドレスにメールが送られたら、メールの内容（MIME）をS3にアップロードするよう設定する

### 前提条件
指定のメールアドレスには、Amazon Route53で用意したドメインのメールアドレスを用いる

# 事前準備（SESへ権限追加）
SESからS3にアップロードする際は、S3 バケットに書き込むためのアクセス権限をSES に付与する必要がある。
方法は、 [公式の記事](https://docs.aws.amazon.com/ja_jp/ses/latest/DeveloperGuide/receiving-email-permissions.html) 参照。

※ この事前準備（S3 バケットにSESに権限の付与）をせずにSESの設定を進めると
　後述するStep4 で下記のエラーが出ます。先に設定しましょう。
`Could not write to bucket: XXXXX (Request ID: XXXXXXXXXXXXXXX)`
![us-west-2.console.aws.amazon.com_ses_home_region=us-west-2 (8).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/496890/370820b0-f82a-cc1a-d9b9-025d67f0cd02.png)

# SES Rule の設定を行う
メールが届いたらS3にアップロードするよう、設定を行う場合は
SESのルールと呼ばれるものを設定します。
![us-west-2.console.aws.amazon.com_ses_home_region=us-west-2 (3).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/496890/f068ce17-cc9b-89c6-b338-add7c559704d.png)

リージョンはオレゴンに設定（社内の他のプロダクトに合わせたため）
`Rule Sets`という部分を押下すると、`Create a Receipt Rule`というボタンが出てくるので
そのボタンをクリックでルールの設定を進められます。



## Step 1 : Recipients（受取人）の設定
ここで設定したアドレスにメールが届くと、このルールが適用されます。
`Add Recipients`押下で、メールアドレスがセットされます。
![us-west-2.console.aws.amazon.com_ses_home_region=us-west-2 (3).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/496890/9c22f73c-f8a2-f905-a791-4939092858e8.png)
セットされたアドレスはドメインの検証が必要となるため、`Verify domain`を押下します。
ドメインの検証が終わったら、`Next Step`を押下し、次のステップに進んでください。

### ドメインの検証
ドメインのDNS設定にレコードを追加
↑の画像にある、`Verify domain`を押下すると、モーダル出現します。
SESがドメインを認証するためのTXTレコードが表示されるので、表示されたレコードをDNSへ登録してください。
[前提条件](https://qiita.com/drafts/fcad286ac2c525a62470#%E5%89%8D%E6%8F%90%E6%9D%A1%E4%BB%B6)で述べたとおり、今回はドメインにRoute 53を使用しているので、`Use Route 53`をクリック
![us-west-2.console.aws.amazon.com_ses_home_region=us-west-2 (11).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/496890/09dbf381-5a82-f7ca-4156-90c6bce1889b.png)
※ Use Route 53ボタンが無く押下出来ない場合や、ドメインの管理を他のサービスで行なっている場合は
　値をメモっておき、Route53やその他サービスのドメインにレコード追加すればOKです。

もし、下記のWARNINGが出た場合
「このオプションは、既存のすべてのmxレコードを置き換えますが、問題ないですか？」という確認なので
問題ければ、そのまま`Email Rceiving Record`のチェックボックスにチェックを入れ`Create Records Sets`を押下で
ドメインの検証が完了します・・！
![us-west-2.console.aws.amazon.com_ses_home_region=us-west-2 (12).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/496890/c1d253f5-4558-4ba7-311e-a8bd2ef71a07.png)

### ドメイン検証完了の確認
Route53で、Step1で設定したアドレスのドメイン確認します。
MXレコードとTXTレコードが追加されていればOK！
![スクリーンショット 2019-11-22 16.37.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/496890/d59aa67c-e91d-cfa2-8bc5-81ac644c5af4.png)


### 補足
**ドメインの検証をせずに、ルールの設定を完了してしまった場合・・・**
ドメインの検証は、ルールの設定の最中ではなく後からでも可能です。
SESの「Domains」にて`Verify a New Domain`押下で設定するか、
![スクリーンショット 2019-11-22 16.36.19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/496890/1e546b49-da06-d47c-b377-7d813ab13857.png)

Domain Identiesの一覧にある、ドメインから検証完了していないドメインを選択すると
検証をする画面に遷移するので、ドメイン検証可能です。
![us-west-2.console.aws.amazon.com_ses_home_region=us-west-2 (10).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/496890/a5aa5851-1855-785b-cb64-a1cd5bdce67c.png)


## Step 2 : Actionsの設定
ドメインの検証が終わりモーダルを閉じたら、引き続きルールの設定が可能。
今回は、S3のバケットにアップロードしたいのでS3を選択！
選択したら、`Next Step`押下します。
[us-west-2.console.aws.amazon.com_ses_home_region=us-west-2 (4).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/496890/dd92a826-4221-61d2-8d8f-093b37e35716.png)

次にアップロードするS3バケットと、バケット内のどのに格納するかのkey(ディレクトリ)名を設定します。
![us-west-2.console.aws.amazon.com_ses_home_region=us-west-2 (5).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/496890/4b0de749-23b3-8edb-5f48-89911474a9d9.png)

## Step 3 : Rule Detailsの設定
ルールの詳細を設定できます。
今回は、ルールの名前だけ設定します。
あとはデフォルトのままにしました。（デフォルトのままの部分は、TLS対応やSPAM、ウィルスのスキャンを設定できるそうです。）
![us-west-2.console.aws.amazon.com_ses_home_region=us-west-2 (6).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/496890/167df1cd-09ff-c96e-574c-8323bf36ba78.png)

## Step 4 : ルールの確認
ルールを確認し、問題なければ`Create Rule`を押下。
![us-west-2.console.aws.amazon.com_ses_home_region=us-west-2 (7).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/496890/1f33a7f8-78ee-6da6-a894-9881f2f58db4.png)
これで、SESのRule設定完了です。

# 動作確認方法
Step1で設定したメールアドレス（Recipients）にメールを送信すると
MIMEデータが指定のS3バケット内にアップロードされることが確認できます。

Step2で指定したS3バケットを見に行きましょう。