AWS SESを利用してメールを送受信するまでの話
はじめに
AWSのサービスであるSESを利用し、メールを送受信できるようになるまでの、設定備忘録です。
メールの送受信をWebシステムで実装するにあたり、ドメイン・Webサイト共にAWSで構築していたためコスト面重視でSESを採用しました。
用語集
-
AWS SESとは
- AWSが提供するクラウドベースの高速・低コストなメール送信/受信サービス
- メールサーバーを自前で構築・管理せずに、アプリケーションから簡単にマーケティングメールや通知メールを送信できる
- ドメインやWebサイトをAWSで管理している場合、親和性が高い
-
メール送信の仕組み
-
なりすましメール対策(SPF, DKIM, DMARC)
作業備忘録
早速やっていきます!!!
ドメインをAWS Route53で管理している場合のやり方になります。
1:送信するドメインを設定する
1-1:SES > ID作成画面にアクセスする
まずはSESにアクセスします。

ホーム画面サイドメニューから「ID」を押下し、一覧画面へ遷移し「IDの作成」から新規IDの作成画面へ遷移します。

1-2:SES > IDを作成する
- IDタイプ
- Emailとドメインの2つから選択できます。
- 今回は取得したほやほやのドメインから送信したいので、「ドメイン」を選択します
- ドメイン
- 利用するドメインを入力します
- カスタムMAIL FROMドメイン
- dmarcに準拠するため、チェックを入れてください
- カスタムMAIL FROMドメイン > DNSレコードのRoute53への発行
- AWS でドメインを管理している場合はチェックを入れてください
- DKIMの設定
- IDタイプ
- Easy DKIMを選択します
- ※違いについてはこちらの記事をご参照ください:https://qiita.com/shi-kishi/items/fb7b3e3c479933226484
- DKIM 署名キーの長さ
- 2048を選択します
- DNSレコードの Route53 への発行
- こちらもAWSでドメイン管理している場合はチェックをお忘れなく
- DKIM 署名
- チェックをお忘れなく!
- Easy DKIMを選択します
- IDタイプ

1-3:本番環境利用のリクエスト
IDを登録しただけではメールの送受信数等に制限のある「サンドボックス」の状態になります。
ダッシュボード上部の「設定をはじめる」ページから、「本番環境利用のリクエスト」をAWSへ送信します。
※通常1分ほどで承認されます
1-4:テスト送信
作成したIDの詳細ページに遷移します。
- IDステータスが「検証済」になっていること
- 「認証」タブでDKIMの設定が「成功」になっていること
を確認してください。
右上の「テストEメール送信」から、宛先メールアドレスを入力しテスト送信を行うことができます!
2:DMARCを設定する
さて、ここまでDKIMおよびSPFの設定が完了しました。
セキュリティ面で設定すべき「DMARC」を設定していきます。
2-1:DNSにTXTレコードを設定する
DNSに以下のTXTレコードを追加します。
今回はAWS Route 53で追加をします。
| 名前 | タイプ | 値 |
|---|---|---|
| _dmarc.example.com | TXT | "v=DMARC1;p=quarantine;rua=mailto:my_dmarc_report@example.com" |
- 値の補足 (AWS公式から引用)
- 認証に失敗したメッセージ
- ポリシーパラメータ p=quarantine で指定されているとおり、スパムフォルダに送信します。その他のオプションには、p=none を使用して何もしない、または p=reject を使用してメッセージを完全に拒否する、などがあります。
- レポートパラメータ
- rua=mailto:my_dmarc_report@example.com (rua は集約レポートのレポート URI の略)
- 失敗したすべての E メールに関するレポートをダイジェスト で送信します。ポリシーはプロバイダーごとに異なりますが、通常、E メールプロバイダーは 1 日 1 回レポートを送信します。
- rua=mailto:my_dmarc_report@example.com (rua は集約レポートのレポート URI の略)
- 認証に失敗したメッセージ
3:受信の設定をする
3-1:受信ルールを作成する
SES > 設定 > Eメール受信ページに遷移します。
「ルールセットの作成」ボタンから、任意の名前を入力しルールの作成をスタートしていきます。

- 1:ルール設定の定義
- 2:受信者条件の追加

- ドメイン内全てのアドレスで受信する場合はドメイン名(example.com)
- 特定のアドレスのみ受信する場合はメールアドレスを指定します(sample\@example.com)
- 3:アクションの追加

- 受信した際にどのような処理をするか選択することができます
- Lambda関数の呼び出しやS3バケットへの配信等
- 今回は簡易にS3バケットへ受信メールを保存しようと思います!
- ※バケットは適宜作成ください
- 4:レビュー
- 設定内容の確認をします
3-2.受信ルールを有効化する
設定ができてもまだ無効の状態です。
受信ルール詳細画面から、「有効として設定」ボタンを押下し有効化を行なってください
3-3.DNSにMXレコードを追加する
さて、AWSで受信するルールができましたが、まだ受信はできません。
最後にDNSに受信するメールサーバーを指定する設定をしていきます。
| 名前 | タイプ | 値 |
|---|---|---|
| example.com | MX | 10 inbound-smtp.ap-northeast-1.amazonaws.com |
- 名前
- メールを受信するドメイン名を入力してください
- 値
- 東京リージョンの場合はap-northeast-1、それ以外の場合はリージョン名を指定してください
3-4.受信を確認する
手元のメールクライアントからメールを送ってみます!!
作成したS3のバケットにメールが届いていることを確認してください。
謝辞
本記事は以下の記事を参考に執筆いたしました。お礼申し上げます。

Discussion