送信ドメイン認証
送信ドメイン認証とは、電子メールの送信者の「なりすまし」を防ぐ技術です。送信ドメイン認証は、送信者のアドレス(Fromアドレス)のドメインを見て、それが正規のサーバから発信されているか否かを検証します。
電子メール(以下、メール)には次の2つのFromアドレスが存在します。
-
- エンベロープFrom(Envelope-From)アドレス
送信プロトコルであるSMTPが利用する本当のFromアドレスで、このアドレスが正しくないと送信ができません。郵送物に例えると、封筒に書かれている差出人名です。 - ヘッダFrom(Header-From)アドレス
メールクライアントの文面のヘッダ欄に表示されるFromアドレスで、実際の差出人とは異なる名前を設定することができます。郵送物に例えると、便箋に書かれている差出人名です。
- エンベロープFrom(Envelope-From)アドレス
なりすましメールは、ヘッダFromアドレスが不正に変更されたメールです。そのため、なりすましメールを防ぐためには、エンベロープFromアドレスが正しいドメインから送信されたものか確認する必要があります。
SPF
SPF(Sender Policy Framework)では、メールの送信者は、予めDNSサーバのSPFレコードに送信元IPアドレスを設置します。
メールの受信者は、送信者のDNSサーバにアクセスし、SPFレコードを確認することで、正しい送信者かどうか判断します。SPFは、RFC7208で定められています。
SPF認証の流れは以下になります。
- メール送信者は、予めDNSサーバのSPFレコードに、メールサーバのIPアドレスを設定する。
- メール受信者は、メールのエンベロープFrom(MAIL FROM)のドメインのDNSサーバにアクセスする。
- SFPレコードのIPアドレスと、実際の送信元メールサーバのIPアドレスが一致するか確認する。
IPアドレスが一致しない場合は、なりすましであると考えられます。SPFの設定例は以下になります(xx.~はIPアドレス)。
v=spf1 ip4:xx.xx.xx.xx/24 -all |
Sender ID
SFPとSender IDの違いは、SFPがエンベロープFromからドメインを判断するのに対し、Sender IDでは、ヘッダ情報のPRA(Purported Responsible Address)からドメインを判断します。
DKIM
DKIM(DomainKeys Identified Mail)では、メールの送信者は、予めDNSサーバに公開鍵を設置し、メールヘッダに電子署名を付与して送信します。
メールの受信者は、送信者のDNSサーバにアクセスし、取得した公開鍵を使って検証することで、正しい送信者かどうか判断します。DKIMは、RFC4871で定められています。
DKIMの流れは以下になります。
- 送信者は、予めDNSサーバに公開鍵とSSP(Sender Signing Practice)を登録します。
- 受信者は、電子署名のドメインのDNSサーバから、公開鍵を取り出します。
- 取得した公開鍵で電子署名を検証し、認証に成功すればメールを受取ります。
- 認証に失敗した場合は、SSPに従って処理します。
DMARC
DMARC(Domain-based Message Authentication、Reporting and Conformance)は、SPFやDKIMの認証が失敗した場合の処理を定めたものです。そのため、SPFやDKIMの対応が前提となります。
SPFとDKIMの問題点は、メールの送信者は受信者が正しく認証が行えたか分からないし、受信者は仮に問題を発見しても、なりすましか技術的な問題が分からないことです。
メールの送信側は、DNSサーバのADSP(Author Domain Signing Practices)レコードに、受信側で認証に失敗した場合の対応(DMARCポリシ)を記述することができます。DMARCの設定例は以下になります。
v=DMARC1; p=quarantine(隔離)/reject(拒否)/none(何もしない); rua=(報告メールの送信先アドレス) |
受信側の対応には、隔離(棄却)・拒否・何もしない(受け取る)などがあります。「何もしない」の場合は、一旦受信した後で利用者が判断を行います。また、「rua」には受信者の認証結果を受け取る窓口を設定します。