Open9
メールサービスとDNS

SPF
送信元メールサーバーのIPが一致する(include先ドメインでも可)場合に認証OKにする
弄れるDNSを元にしてFrom詐称されるとなりすましても見抜けない

DKIM
公開鍵認証
メールを暗号化して鍵の情報をDNSに乗っけて検証して貰う

DMARC
SPFとDKIM認証の結果どう処理するかを送信側から指定できるポリシー

特徴/側面 | SPF (RFC 7208) | DKIM (RFC 6376) | DMARC (RFC 7489) |
---|---|---|---|
主な目的 | 送信元IPアドレスの正当性検証 | メールの改ざん検知と送信ドメインの正当性検証(署名経由) | SPF/DKIM結果に基づくポリシー適用とレポーティング |
何を認証するか | エンベロープFrom (MAIL FROM) ドメインの送信許可IP | メッセージ内容と一部ヘッダー(電子署名経由) | SPF/DKIM認証ドメインとヘッダーFromドメインのアライメント(整合性) |
仕組み | DNSのTXTレコードに許可IPリストを公開 | 送信時に秘密鍵で署名、受信時にDNSの公開鍵で検証 | DNSのTXTレコードにポリシーを公開、SPF/DKIM結果とアライメントに基づき処理、レポート送信 |
主な限界 | メール転送で失敗しやすい、ヘッダーFromを直接認証しない | メッセージ本文が僅かでも変更されると失敗する可能性 | SPF/DKIMが正しく設定・運用されていないと効果を発揮しにくい |
DNSレコードタイプ | TXT | TXT (公開鍵用) | TXT (ポリシー用、例: _dmarc.example.com) |
郵便に例えると | 差出人住所が正当か | 封が開けられていないか | 審査結果に基づき配達するか決定 |

Route53の TXT レコードの1つの文字列の文字数は255※RFC 1035にて規定されているDNS上の制限
文字列は「”」連結することができ、TXT レコード内の値の、最大長は 4,000 文字※RFC 1035にて定められている文字列連結に関する規定
- Route 53のTXTレコードで255文字以上登録するときは二重引用符(")で分割する
- 分割に際しスペース区切りにしなくても大丈夫だがスペース区切りにしておいた方が安全
- ドキュメントでもスペース区切りにしている
- 改行は各レコードの区切り文字なので分割した文字列の途中で使ってはいけない
- レコードを分ける時だけ改行を入れる

SPFレコードは非推奨、TXTレコードに従来のSPFレコードの値を入れる

SES BlackBelt 各種レコードについて言及アリ

べスプラ

図が綺麗