はじめに
AWSのメールサービスであるAmazon SESについて、業務で使用している中で学んだことを備忘を兼ねてまとめます。
Amazon SESとは?
Amazon SESはクラウドベースのEメールサービスプロバイダであり、オンプレミスの簡易メール転送プロトコル(SMTP)システムがなくても、アプリケーションと統合して大量のメールを送信することが可能です。
Amazon SESの初期設定
SESの初期設定として、ドメインIDの作成と本番環境への適用が必要です。
ドメインIDを作成する
SESの検証済みIDのタブから、IDを作成します。
ドメインまたはアドレスで作成することが可能です。
SESサービスを本番環境にする
SESのアカウント開始時点では、アカウントはSESサンドボックス内に配置されます。
サンドボックス内にある場合は、次の制限が適用されてしまうため、サンドボックス外に移動するようにしましょう。
E メールの送信先は、検証済み E メールアドレスおよびドメイン、または Amazon SES メールボックスシミュレーターに制限されます。
最大で 24 時間あたり 200 メッセージを送信できます。
最大で 1 秒あたり 1 メッセージを送信できます。
送信承認に関して、ユーザーも代理送信者も、検証されていない E メールアドレスに E メールを送信することができません。
アカウントレベルのサプレッションでは、サプレッションリスト管理に関連する一括アクションと SES API コールが無効になります。
https://docs.aws.amazon.com/ja_jp/ses/latest/dg/request-production-access.html
サンドボックス外に移動するには、コンソールの下記画面の「本稼働アクセスのリクエスト」を選択し、アカウントをサンドボックスから削除するようにリクエストします。
【必須】メール認証3つ(DKIM、SPF、DMARC)
SESでバウンス対策・苦情対策の一つとして有効な3つのメール認証について説明します。
SESでは、バウンスメールや苦情メールの計測をしており、バウンス率が5%以上、または、苦情率が0.5%以上となるとアカウントがレビュー対象になり、メール送信を一時停止されてしまう可能性があります。
そのようなことにならないように、認証をクリアしておくことが重要です。
DKIM認証
DKIM認証とは
送信中にEメールが改ざんされるのを防ぐためのものです。
公開鍵/秘密鍵暗号を使用して、Eメールメッセージに署名するためのメール認証基準です。
DKIMを使用し、EメールがDKIM鍵の関連付けられたドメインから送信されたこと、送信中にメールが変更されていないことを確認できます。
Amazon SESにおけるDKIM認証方法
SESのEasy DKIMを使用すると、パブリックキーとプライベートキーのペアが生成され、指定のIDから送信するすべてのメッセージにDKIM署名が追加されます。
SESのコンソールの「検証済みID」から該当のIDを選択し、「認証」タブからDKIMの設定で
- Easy DKIM
- RSA_2048_BIT or RSA_1024_BIT
- 有効化をチェック
を選択し、保存する。
この後、CNAMEレコードが生成されるため、使用するDNSホストプロバイダーのDNS設定にこのCNAMEレコードを追加します。
DNSホストプロバイダによって追加方法が違うため、それぞれのプロバイダごとに方法を確認して追加します。
SPF認証
SPFとは
未承認の送信者によるなりすましを防ぐための、ドメインベースのEメール認証規格です。
ドメイン所有者は、そのドメインを名乗ってEメールを送信することを認めたサーバのIPアドレスを承認します。
それ以外のIPアドレスのメールサーバがそのドメインを使用してメールを送信しようとした場合にSPF認証が合格しないことになります。
Amazon SESにおけるSPF認証方法
- SESでは、MAIL FROMドメインとして、amazonses.com のサブドメインが自動的に使用されます(※自動的にSPF認証に合格します)
- デフォルトのMAIL FROMドメインを使用せず、独自に使用しているドメインのサブドメイン(カスタムMAIL FROMドメイン)を使用したい場合、MXレコード/TXTレコードを追加する必要があります
カスタムMAIL FROMドメインを使用して、Amazon SESでSPFポリシーを設定するには、下記のようにTXTレコード/MXレコードを追加する必要があります。
(※DNSサービスの提供元がRoute53の場合は、コンソール上で[Route53を使用してレコードを公開する]を選択することで自動的に適用されます)
名前 | タイプ | 値 |
subdomain.domain.com | MX | 10 feedback-smtp.region.amazonses.com |
subdomain.domain.com | TXT | “v-spf1 include:amazonses.com ~all” |
DMARC認証
DMARC認証とは
DMARCは送信ドメインの認証技術で、ビジネスメール詐欺やフィッシング攻撃、なりすましメールなどの攻撃に対して防御できます。
DMARCはSPFやDKIMをベースにしており、メールに表示される送信元アドレス「Header-from」ドメインがなりすまされていないか、信頼できるものかどうかを判断することができます。
ドメイン所有者はドメインネームシステム(DNS)でDMARCレコードを公開し、認証に失敗したメールをどうするかを受信者に伝えるためのポリシーを作成できます。
DMARC認証へ準拠するには
SPFまたはDKIMのいずれか、または両方で認証される必要があります。
Amazon SESにおけるDMARC認証方法(SPF)
Amazon SESでDMARCポリシーを設定するには、Route53で下記のようにTXTレコードを追加する必要があります。
名前 | タイプ | 値 |
_dmarc.your_domain.com | TXT | “v=DMARC1;p=quarantine;pct=25;rua=mailto:dmarcreports@example.com” |
「your_domain」の部分は使用するドメイン名に置き換えてください。
値に関して詳しく見ていきます。
設定項目 | 概要 | 必須/ 省略可 | 設定値 | 備考 |
v | DMARCレコードのバージョン番号 | 必須 | DMARC1 | |
p | 認証に失敗したメールに対して受信側に実行してほしいアクション | 必須 | none/quarantine/reject | 何もしない/隔離する/拒否する |
pct | フィルターの対象となるメッセージの割合(%) | 省略可 | <パーセンテージ> | p=none以外のポリシーが設定されている場合に適用される |
rua | DMARCレポートを受信するメールアドレス | 省略可 | <mailto:メールアドレス> |
DMARCレポートとは
- p=noneにして監視モードにすると、ドメイン所有者はドメインに関するEメールのトラフィックを含むDMARCレポートを確認できます。
- DMARCが完全に適用された際(p=reject)に隔離または拒否される可能性のある失敗メッセージを識別し、監視対象のドメインからEメールを送るシステムとサービスに関する情報が表示されます
- 新しいドメインからメール送信を始める際は、p=noneから始め、qurantineに移行してpctを上げながら、最終的にpct=100になった時点でp=rejectに移行すると良いです
DMARCレポートで提供される情報
XMLファイルで、次の情報が提供されます
- 各IPアドレスからのメッセージ数
- これらのメールがDMARCポリシーによってどのように処理されたか
- SPFの結果
- DKIMの結果
Amazon SESにおけるDMARC認証方法(DKIM)
SESにおけるDKIM認証で「Easy DKIM」を使用している場合は、SESは自動的にEメールに署名し、DMARC認証に準拠されます。
メール送信結果の通知手法
SESにはメールの送信結果として2つの通知方法があります。
どちらもSNS(Amazon Simple Notification Service)を通じて結果を受信することが可能です。
(②はCloudWatchやKinesis Data Firehoseにも通知が可能)
①フィードバック通知(Bounce, Delivery, Complaitの3種類のイベント)
②イベント通知(Bounce, Delivery, Complait, Send, Reject, Open, Click, Rendering, Failure, DeliveryDelay, Subscriptionの11種類のイベント)
②を通知する場合は、設定セットを作成し、通知するイベントタイプや送信先を選択する必要があります。
Virtual Deliverability Manage(VDM)
2022年11月より、Amazon SES コンソールの新しい機能 Virtual Deliverability Manager(VDM)が登場しました。
この機能を使うと、マネジメントコンソールでメールの送信者、送信日、配信ステータス、件名、開封およびクリックのステータスなど、様々な条件を指定してEメールを検索することができます。
一定期間(最長30日)確認することができ、料金も現時点では送信メール1000件あたり $0.07と比較的低価格なため、有効化しておいて損はない機能だと思います。
さいごに
いかがでしたでしょうか?
気軽にアプリと統合してメール機能を使用できるのが便利だなと思います。
SESを導入する際の参考になれば幸いです。
コメント