DMARCは、SPFとDKIMの認証結果を活用し、なりすましメールへの対処方法を指定する仕組みです。メールセキュリティの要となる重要な設定です。
DMARCとは
DMARC(Domain-based Message Authentication, Reporting and Conformance)は、以下の3つの機能を提供します。
- 認証: SPFとDKIMの結果を統合して判定
- ポリシー: 認証失敗時の処理方法を指定
- レポート: 認証結果のレポートを受信
DMARCが必要な理由
SPFとDKIMだけでは、認証に失敗したメールをどう処理するかを指定できません。DMARCを設定することで:
- なりすましメールを確実にブロック
- 自社ドメインの悪用状況を把握
- メール配信の問題を早期発見
DMARCレコードの構造
DMARCレコードは _dmarc.ドメイン名 に登録します。
_dmarc.example.com TXT "v=DMARC1; p=reject; rua=mailto:dmarc@example.com"
主要なタグ
| タグ | 説明 | 必須 | 例 |
|---|---|---|---|
| v | バージョン | 必須 | DMARC1 |
| p | ポリシー | 必須 | none, quarantine, reject |
| rua | 集計レポート送信先 | 推奨 | mailto:dmarc@example.com |
| ruf | フォレンジックレポート送信先 | 任意 | mailto:forensic@example.com |
| pct | ポリシー適用率 | 任意 | 100(デフォルト) |
| sp | サブドメインポリシー | 任意 | none, quarantine, reject |
| adkim | DKIMアライメント | 任意 | r(緩和), s(厳格) |
| aspf | SPFアライメント | 任意 | r(緩和), s(厳格) |
DMARCポリシーの選び方
p=none(監視モード)
v=DMARC1; p=none; rua=mailto:dmarc@example.com
- 認証失敗してもメールは通常通り配信
- レポートで現状を把握
- 導入初期に推奨
p=quarantine(隔離)
v=DMARC1; p=quarantine; pct=50; rua=mailto:dmarc@example.com
- 認証失敗メールを迷惑メールフォルダへ
- pctで適用率を調整可能
- 中間段階に推奨
p=reject(拒否)
v=DMARC1; p=reject; rua=mailto:dmarc@example.com
- 認証失敗メールを完全にブロック
- 最も強力な保護
- 最終目標
段階的な導入手順
Step 1: 前提条件の確認
DMARCを設定する前に、以下が正しく設定されていることを確認:
- SPFレコードが設定済み
- DKIMが有効化されている
- 正規のメール送信元がすべて把握できている
Step 2: p=noneで開始
_dmarc.example.com TXT "v=DMARC1; p=none; rua=mailto:dmarc-reports@example.com"
2〜4週間レポートを収集し、以下を確認:
- 正規のメールがすべてPASSしているか
- 不正な送信元がないか
- 設定漏れがないか
Step 3: p=quarantine(段階的に)
# まず10%から
v=DMARC1; p=quarantine; pct=10; rua=mailto:dmarc-reports@example.com
# 問題なければ50%に
v=DMARC1; p=quarantine; pct=50; rua=mailto:dmarc-reports@example.com
# 最終的に100%
v=DMARC1; p=quarantine; pct=100; rua=mailto:dmarc-reports@example.com
Step 4: p=rejectへ移行
# まず25%から
v=DMARC1; p=reject; pct=25; rua=mailto:dmarc-reports@example.com
# 段階的に100%へ
v=DMARC1; p=reject; pct=100; rua=mailto:dmarc-reports@example.com
DMARCレポートの読み方
集計レポート(RUA)
XMLファイルで毎日送られてくるレポートです。
<record>
<row>
<source_ip>203.0.113.1</source_ip>
<count>150</count>
<policy_evaluated>
<disposition>none</disposition>
<dkim>pass</dkim>
<spf>pass</spf>
</policy_evaluated>
</row>
</record>
| 項目 | 意味 |
|---|---|
| source_ip | 送信元IPアドレス |
| count | メール数 |
| disposition | 適用された処理 |
| dkim | DKIM認証結果 |
| spf | SPF認証結果 |
レポート解析ツール
生のXMLは読みにくいため、以下のツールを活用:
- DMARC Analyzer: 商用サービス
- dmarcian: 無料プランあり
- Postmark DMARC: 無料
アライメントについて
DMARCでは、SPF/DKIMの認証ドメインとFromヘッダーのドメインが一致する必要があります。
緩和モード(r)
サブドメインも許可
From: news@mail.example.com
SPF: example.com → PASS
厳格モード(s)
完全一致が必要
From: news@mail.example.com
SPF: mail.example.com → PASS(example.comではNG)
よくある問題と対処法
正規のメールが失敗する
原因1: メール配信サービスがSPF/DKIMに対応していない
対処法:
- 配信サービスのDKIM設定を有効化
- SPFにサービスのIPを追加
原因2: メーリングリスト経由でFromが書き換わる
対処法:
- ARC(Authenticated Received Chain)対応のMLを使用
- 緩和モード(adkim=r, aspf=r)を使用
レポートが届かない
原因: メールボックスの容量不足、迷惑メール判定
対処法:
- 専用のメールアドレスを使用
- 外部のDMARC解析サービスを利用
サブドメインからのメールが失敗
対処法: サブドメインポリシー(sp)を設定
v=DMARC1; p=reject; sp=quarantine; rua=mailto:dmarc@example.com
推奨設定例
導入初期
v=DMARC1; p=none; rua=mailto:dmarc@example.com; ruf=mailto:dmarc@example.com
運用安定後
v=DMARC1; p=reject; sp=reject; adkim=s; aspf=s; pct=100; rua=mailto:dmarc@example.com
まとめ
| フェーズ | ポリシー | 期間目安 |
|---|---|---|
| 監視 | p=none | 2〜4週間 |
| 隔離 | p=quarantine | 2〜4週間 |
| 拒否 | p=reject | 最終目標 |
DMARCの導入は段階的に行うことが重要です。いきなりp=rejectを設定すると、正規のメールもブロックされる可能性があります。
RiskLensでは、DMARC設定の診断と改善提案を自動で行います。まずは無料診断で現状を確認してみましょう。