SES(Simple Email Service) - AWS
最終更新日: 2026-07-30
TOP(About this memo)) > 一覧(AWS) > SES(Simple Email Service)
SES(Simple Email Service)
Amazon SESは、AWSが提供するメール送受信サービス。トランザクションメール(パスワードリセット、通知メールなど)の送信に使われることが多い。
サンドボックス環境と本番稼働環境
- SESアカウントは作成直後「サンドボックス」状態にあり、以下の制限がかかる。
- 送信先(To/Cc/Bcc)は、あらかじめSESで検証済みのメールアドレス・ドメイン宛にしか送れない。
- 1日あたりの送信数、1秒あたりの送信レートにも低い上限がある(具体的な数値は変わりうるため公式ドキュメントで要確認)。
- 不特定多数の実ユーザー宛にメールを送るには、AWSサポートに「本番稼働アクセス」をリクエストして制限を解除してもらう必要がある(申請には利用目的やバウンス対応方針などの記入が必要で、即時ではなく審査を伴う)。開発中に「検証済みアドレス以外にメールが届かない」と詰まった場合、まずサンドボックス状態でないかを疑うとよい。
ドメイン認証(DNSレコード)
独自ドメインからメールを送信するには、Route53(または他のDNS)に検証用のレコードを追加してドメイン所有権を証明する必要がある。
- ドメイン検証: SES側で発行されるトークンをTXTレコードとして登録する。
- DKIM(送信ドメイン認証): SES側で発行される3つのトークンをそれぞれCNAMEレコードとして登録する。受信側メールサーバーは、このDKIM署名を検証することでメールが改ざん・なりすましされていないかを確認できる。
- カスタムMAIL FROMドメイン: デフォルトではSESの共通ドメインが送信元(Envelope From)になるが、独自のサブドメイン(例:
mail.example.com)を明示的に設定すると、SPF(送信元IPの正当性を検証する仕組み)がより厳密に働き、迷惑メール判定されにくくなる。設定にはMXレコードとSPF用のTXTレコードの登録が必要。
- いずれも設定後、DNSの反映とSES側の検証完了を待つ必要がある(即座には反映されない)。
- SPF/DKIMに加えてDMARC(TXTレコードでSPF/DKIM失敗時の扱いを指定する仕組み)も設定すると、なりすまし対策としてより強固になる(?)。
バウンス・苦情への対応
- 宛先不明などで送信が失敗することを「バウンス」、受信者がメールを迷惑メール報告することを「苦情(Complaint)」と呼ぶ。
- バウンス率・苦情率が一定の閾値を超えると、AWS側からの警告を経て最終的にはSESアカウントの送信が停止されることがある。存在しないアドレスへ送り続けたり、オプトアウトを無視して送り続けたりしないよう、送信リストの管理が重要になる。
- バウンス・苦情の発生をSNS通知やイベント発行(下記Configuration Sets)で受け取り、該当アドレスを送信リストから自動的に除外する仕組みを組み込むのが一般的な運用。
Configuration Sets
- 送信するメールに「設定セット」を紐付けることで、そのメールの配信・開封・クリック・バウンス・苦情などのイベントをCloudWatchメトリクスやSNS、Kinesis Data Firehoseなどに送れるようになる。
- 送信種別(例: 通知メール、マーケティングメールなど)ごとに設定セットを分けておくと、種別ごとの送信状況やバウンス率を個別に把握しやすい。
IAM権限
- アプリケーション(ECSタスクなど)からSESでメールを送信するには、実行者の権限に
ses:SendEmail(定型フォーマットで送信)やses:SendRawEmail(添付ファイル付きなど生のMIME形式で送信)を許可しておく必要がある。
- SESの送信アクションはIAMポリシーのResourceでの絞り込みが効きにくく(検証済みID単位でのリソースベース制御は可能だが)、実務上は
Resource: "*"で許可することも多い。