結論: SPF・DKIM・DMARCは、メールの送信元の「なりすまし」を防ぐ、3つの仕組みです。SPFは「送ってよいサーバーの一覧」、DKIMは「電子署名」、DMARCは「失敗した時の扱いのルール」です。DNSに設定し、DMARCは、まず「none」から始めて、段階的に厳しくするのが、安全な進め方です。
なぜ、メール認証が必要なのか
メールの「差出人」は、**簡単に偽れます。**何の対策もしなければ、他人が、あなたのドメインの名前で、メールを送る(なりすまし)ことができてしまいます。フィッシングメールなどに、悪用されます。
そこで、「そのメールは、本当に、そのドメインの持ち主から送られたか」を、受信側が確かめる仕組みが、SPF・DKIM・DMARCです。
3つの役割
| 仕組み | 何を確かめる? | 例えると |
|---|---|---|
| SPF | 送信元のサーバーが、許可されたものか | 「このサーバーから送っていい」という、名簿 |
| DKIM | 署名が正しいか(改ざんされていないか) | 手紙の「封印」 |
| DMARC | SPF・DKIMに失敗したら、どうするか | 「偽物は、捨てて」という指示 |
SPF(Sender Policy Framework)
ドメインの**DNS(TXTレコード)**に、メールの送信を許可するサーバーを登録します。受信側は、届いたメールの送信元サーバーが、その一覧に含まれるかを確認します。
example.com TXT "v=spf1 include:_spf.mail-service.example ~all"
(説明用の例です。実際の値は、利用するメールサービスの案内に従ってください)
- 1つのドメインに、SPFのレコードは1つだけ
- DNSの問い合わせが10回を超えると、失敗として扱われる
DKIM(DomainKeys Identified Mail)
送信側が、メールに、電子署名を付けます。公開鍵を、DNSに登録しておき、受信側が、その公開鍵で、署名を検証します。途中で、改ざんされていないことと、そのドメインの鍵で署名されていることが、分かります。
- 署名に使う鍵の見つけ方を示す名前(セレクタ)を使い、
セレクタ._domainkey.example.comに登録します - 実際の設定値は、メールサービスが、発行します
DMARC(Domain-based Message Authentication, Reporting and Conformance)
SPF・DKIMに失敗した時の扱いを、ドメインの持ち主が、指定します。さらに、**認証の結果の報告(レポート)**を、受け取れます。
_dmarc.example.com TXT "v=DMARC1; p=none; rua=mailto:dmarc@example.com"
DMARCは、SPFかDKIMの、どちらかが合格し、かつ、見かけの送信元(Fromのドメイン)と一致していれば、通過とみなします。
DMARCの3つのポリシー
| ポリシー | 動き | 使いどころ |
|---|---|---|
| p=none | 何もしない。レポートだけ受け取る | 最初の段階。状況の把握 |
| p=quarantine | 怪しいメールを、迷惑メールとして扱わせる | 正規の送信元の確認が済んだあと |
| p=reject | 認証に失敗したメールを、受け取らせない | 運用が安定したあと |
設定の順番
- **送信元を、洗い出す:**自社のメールサーバー、メルマガ配信サービス、問い合わせフォーム、請求システムなど、あなたのドメインで、メールを送るものすべて
- **SPFを設定する:**1のうち、許可するものを、1つのレコードにまとめる
- **DKIMを設定する:**メールサービスが発行する公開鍵を、DNSに登録し、署名を有効にする
- **DMARCを「p=none」で設定する:**レポートの受け取り先を指定する
- **レポートを確認する:**正規の送信元が、すべて認証に通っているか
- 「quarantine」、「reject」へ、段階的に進める
DNSの設定画面は、ドメインを管理している会社(ドメインの管理会社や、DNSのサービス)にあります(ドメインとは、DNSとは)。