SPF, DKIM, DMARC:メール到達率を100%に導く「メール認証の3点セット」

Security tutorial - IT technology blog
Security tutorial - IT technology blog

5分で完了:クイック設定チェックリスト

お急ぎで、今すぐGmailやOutlookのスパム判定を回避したいですか?以下の3つのDNSレコードをドメイン管理画面に追加してください。1.2.3.4はサーバーのIPアドレスに、yourdomain.comは実際のドメイン名に置き換えるのを忘れないでください。

  1. SPFレコード(TXTレコード):メール送信を許可するIPアドレスを宣言します。
    v=spf1 ip4:1.2.3.4 include:_spf.google.com ~all
  2. DKIMレコード(TXTレコード):Workspace、Zoho、またはメールサーバーから公開鍵を取得します。
    v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA...
  3. DMARCレコード(TXTレコード):SPF/DKIMの認証に失敗した際の処理を決定します。
    _dmarc.yourdomain.com TXT "v=DMARC1; p=none; rua=mailto:[email protected]"

なぜこれらの設定が必要なのか?

実のところ、SMTPプロトコルは非常に古く、脆弱です。攻撃者は簡単に[email protected]になりすまし、経理担当者に送金を促すメールを送ることができます。Verizonのレポートによると、企業への攻撃の90%は、このようなフィッシングメールから始まっています。

以前、笑うに笑えない事例を扱ったことがあります。ある取引先企業のメールがなりすまされ、身に覚えのない口座への支払いを要求されました。わずか数行のDNS設定が欠けていたために、10年かけて築き上げた信頼が危うく崩れ去るところでした。これらを放置すると、サーバーのIPアドレスはすぐに世界中のスパム対策団体によってブラックリスト(blacklist)に登録されてしまいます。

仕組みを正しく理解して設定する

1. SPF (Sender Policy Framework) – 招待客リスト

SPFは、守衛所に置かれた「招待客リスト」のようなものだと考えてください。受信サーバーはメールを受け取ると、DNSをチェックします。「このIP 1.2.3.4は、yourdomain.comの送信許可リストに載っているか?」と。

  • v=spf1:設定バージョン。
  • ip4:1.2.3.4:サーバーのIPアドレス。
  • ~all(Soft Fail):IPが一致しなくても受信はするが、疑わしいとしてマークする。
  • -all(Hard Fail):IPが一致しない場合は即座に拒否し、受け入れない。

2. DKIM (DomainKeys Identified Mail) – 封印の印(電子署名)

DKIMは公開鍵/秘密鍵のペアを使用してデジタル署名を行います。送信サーバーは秘密鍵を使って各メールのヘッダーに署名を付与し、受信サーバーはDNSから公開鍵を取得してそれを検証します。一致すれば、メールの内容が途中で改ざんされていないことが保証されます。

注意:このレコードを適当に作成することはできません。メール管理画面にアクセスするか、Linux上のOpenDKIMを使用して正規の文字列を生成してください。

3. DMARC (Domain-based Message Authentication) – 現場監督

DMARCは、SPFとDKIMの認証結果をどう扱うかを調整する役割を担います。レポート送信機能(RUA)を備えており、非常に強力です。レポートを通じて、誰が自分のドメインになりすまそうとしているかを毎日正確に把握できます。

DMARCレコードにおいて、p(policy)パラメータが最も重要です:

  • p=none:監視のみで干渉しない(初心者向け)。
  • p=quarantine:疑わしいメールをスパムフォルダに振り分ける。
  • p=reject:なりすましメールを入口で完全に遮断する。

アップグレードのロードマップ:監視から完全遮断へ

多くのエンジニアがp=noneのまま何年も放置してしまうというミスを犯しています。これでは単なる観察に留まり、保護にはなっていません。理想的なロードマップは以下の通りです:

  1. 最初の7日間はp=noneを設定し、レポートを監視する。
  2. DMARC Advisorなどのツールを使用して、XML形式のレポートを読みやすく可視化する。
  3. 自社システムからのメールが正しく認証されていることを確認したら、p=quarantineに引き上げる。
  4. 最終的にp=rejectへ移行し、あらゆるなりすましの試みを完全に封じ込める。

最も厳格な設定は、通常次のようになります:

v=DMARC1; p=reject; pct=100; rua=mailto:[email protected]

設定後のクイックテストのコツ

DNS設定がすぐに反映されるとは限りません。以下の3つの「神ツール」を使って結果を確認しましょう:

  • Mail-Tester.com:テストメールを1通送信し、10/10のスコアが出れば成功です。
  • MXToolbox:レコードに構文エラーや重複がないかを確認します。
  • Google Admin Toolbox:Workspaceユーザー向けの、非常に詳細なエラーチェックツールです。

最後に、DNSの反映(伝播)には時間がかかることを覚えておいてください。変更直後に結果が出なくても焦る必要はありません。ゆっくりコーヒーでも飲みながら30分ほど待ち、再度確認してみてください。設定の成功を祈っています!

Share: