こんにちは。AWS CLIが好きな福島です。
はじめに
今回は、SESでメール配信可能性を最大化するためにSPF,DKIM,DMARCを設定する方法をご紹介します。
メール配信可能性を最大化するとは?
まず前提として、メールに関する問題の1つにスパムメールがあります。 また、メール受信サービスでは、スパムメールをフィルタリングするための広範な防止策を実行しています。
- インターネット経由の E メールに関する最大の問題の 1 つは、未承諾一括 E メール (スパム) です。
- E メールプロバイダーは、顧客にスパムが送信されないように広範な防止策を実行しています。
- また、Amazon SES では、E メールプロバイダーがお客様の E メールをスパムと見なす可能性を減らすための措置を講じています。
つまり、メール配信可能性を最大化するとは、スパムメールと見なされ、配信したいメールを配信できなくなることを防ぐことと言い換えられます。
メール配信可能性を最大化するための設定
メール配信可能性を最大化するための方法として、以下の設定があります。
- SPF(送信元IPアドレスに基づく認証)
- SPFに基づいたDMARC準拠
- DKIM(送信元の署名に基づく認証)
- DKIMに基づいたDMARC準拠
補足(DMARCとは)
DMARCは以下の通り、SPFおよびDKIMプロトコルをベースにしております。 SPFおよびDKIMに+aすることでメール認証を強化しております。
上記のSPFまたはDKIMに基づいたDMARC準拠というのは、その+aの設定をすることを指しております。
原文をGoogle翻訳
DMARC(Domain-based Message Authentication, Reporting & Conformance)は、メール認証、ポリシー、およびレポート機能を備えたプロトコルです。広く普及しているSPFおよびDKIMプロトコルを基盤とし、送信者(「From:」)ドメイン名との紐付け、認証失敗時の受信者対応に関する公開ポリシー、受信者から送信者へのレポート機能を追加することで、ドメインの不正メールからの保護を強化・監視します。
SPF
Sender Policy Framework(SPF) とは、送信元IPアドレスに基づく認証となります。 イメージ図は以下の通りとなります。
SESから送信されるメールの「Return-Path」は、「xxxxx@ap-northeast-1.amazonses.com」のようになります。
ドメインである「ap-northeast-1.amazonses.com」のTXTレコードを取得し、 その中に含まれるIPアドレスが送信元IPアドレスと合致することで認証されます。
「xxxxx@ap-northeast-1.amazonses.com」のドメインは、AWSが管理しているため、 SESでは、デフォルトでSPFの設定がされております。
後述しますが、SPFによるDMARCへの準拠は別途設定が必要となります。
SPFに基づいたDMARC準拠
前提
実はSPF単体では、「Return-Path」は認証されますが、 「From」(受信者のメールクライアントに表示されるメールアドレス)は認証されません。
「From」も認証させるため(SPFによるDMARCへの準拠)には、 SPF認証に加え、「From」と「Return-Path」のドメインを一致させる必要があります。
補足ですが、SESのデフォルトは以下の通りとなり、ドメインが異なっていることが分かるかと存じます。
項目 | ドメイン |
---|---|
FROM | example.com |
Return-Path | ap-northeast-1.amazonses.com |
SPFによるDMARCへの準拠のイメージ図
メール受信サービスにより以下の検証が行われる
- 「From」と「Return-Path」のドメイン一致の検証
- SPFの検証
- 「Return-Path」のドメイン(return-path.example.com)のレコードを問い合わせする
- 問い合わせ結果に含まれるドメイン(amazonses.com)のレコードを問い合わせする
- TXTレコードに送信元IPが含まれているか確認する
SPFによるDMARCへの準拠をするためのSESの設定
「From」と「Return-Path」のドメインを一致させるためには、 SESの「ID」>「認証」から「カスタム MAIL FROM ドメイン」の設定を行います。
具体的には以下3つの設定を行うだけで簡単に設定が可能です。
- 「カスタム MAIL FROM ドメインの使用」をチェック
- 「MAIL FROM ドメイン」を設定
- 「MX 障害時の動作」の設定
あとは、設定完了後に発行されたレコードをDNSに登録すれば設定完了です。
この設定が完了すれば、「ドメイン(カスタム)」列のようにサブドメインレベルで一致させることができます。 (SPF を通じた DMARC 準拠には複数のレベルがあり、ドメインの完全一致とサブドメインレベルでの一致があります。)
項目 | ドメイン(デフォルト) | ドメイン(カスタム) |
---|---|---|
FROM | example.com | example.com |
Return-Path | ap-northeast-1.amazonses.com | return-path.example.com |
DKIM
Domain Keys Identified Mail (DKIM)とは、送信元の署名に基づく認証となります。 イメージ図は以下の通りとなります。
SESでは、IDを作成する際にDKIMの設定が行えます。 IDを作成する(ドメインを検証する)ためには、DKIMの設定が必要となります。
DKIMに基づいたDMARC準拠
DKIMに基づいたDMARC準拠には、以下の2点を満たす必要があります
- DKIM署名が有効であること
- From アドレスのドメインが、DKIM署名の d= ドメインと一致していること
Amazon SESでは、以下の通り、送信されるメールの From ドメインがDKIM署名の d= ドメインと一致するため、DKIMベースでDMARCに準拠しています。
項目 | 値 |
---|---|
FROM | user-b@example.com |
DKIM-Signature | s=xyz; d=example.com |
補足(DMARCのレポート設定)
冒頭に記載した通り、DMARCはメール認証だけではなく、ポリシー、およびレポート機能を備えています。ポリシーおよびレポートを受け取るための設定は、 以下のようなレコードをDNSに追加します。
_dmarc.example.com TXT "v=DMARC1;p=quarantine;rua=mailto:my_dmarc_report@example.com"
p=の説明
認証に失敗したメッセージについてはすべて、ポリシーパラメータ p=quarantine で指定されているとおり、スパムフォルダに送信します。その他のオプションには、p=none を使用して何もしない、または p=reject を使用してメッセージを完全に拒否する、などがあります。
rua=mailtoの説明
レポートパラメータ rua=my_dmarc_report@example.com (rua は集約レポートのレポート URI の略) で指定されるとおり、認証に失敗したすべての E メールに関するレポートをダイジェスト (つまり、イベントごとに個別のレポートを送信するのではなく、特定の期間のデータを集約したレポート) で送信します。ポリシーはプロバイダーごとに異なりますが、通常、E メールプロバイダーは 1 日 1 回レポートを送信します。
終わりに
今回は、SPF,DKIM,DMARCを設定してメール配信可能性を最大化する方法をご紹介しました。 どなたかのお役に立てれば幸いです。