技術解説 · 出典付きの回答
メールのなりすましを防ぐ方法:SPF・DKIM・DMARCガイド
メールのなりすましを防ぐには、SPF、DKIM、DMARCのDNSレコードを組み合わせて導入する必要があります。これらのプロトコルは、送信サーバーがドメインに代わってメールを送信する権限を持っていることを検証し、配送中にメッセージの内容が改変されていないことを保証します。
SPFレコードを設定する
Sender Policy Framework(SPF)は、ドメインのメール送信を許可されたすべてのIPアドレスとドメインを列挙するDNSレコードです。受信サーバーはメールを受け取ると、Fromアドレスのドメインに設定されたSPFレコードを確認します。送信元IPが記載されていない場合、そのメールは迷惑メールと判定されるか拒否されることがあります。SendHQの無料ツール(https://sendhq.cc/tools)を使ってSPFの構文を検証し、許可していないIPが含まれていないことを確認してください。
DKIM署名を設定する
DomainKeys Identified Mail(DKIM)は、メールヘッダーに暗号署名を追加します。送信サーバーは秘密鍵でメッセージに署名し、受信サーバーはDNSレコードに公開された公開鍵を使ってその署名を検証します。これにより、攻撃者が配送中にメールの内容を改変することを防ぎ、メールが実際に自社のインフラから送信されたことを証明できます。
DMARCポリシーを適用する
Domain-based Message Authentication, Reporting, and Conformance(DMARC)は、SPFとDKIMを結び付けるものです。メールがSPFやDKIMのチェックに失敗した場合にどう処理すべきかを受信サーバーに指示します。ポリシーはnone(監視)、quarantine(迷惑メールフォルダへ)、reject(完全にブロック)のいずれかに設定できます。DMARCはドメイン所有者にレポートも送るため、なりすましの試みや設定ミスを特定できます。
DNSを適切に保守する
なりすましを防ぐには、DNSレコードを継続的に保守する必要があります。SPFレコードを定期的に見直して使わなくなった外部の送信者を削除し、セキュリティを維持するためにDKIMキーを定期的にローテーションしてください。なりすましメールがユーザーの受信トレイに届くのを完全に止めるため、DMARCポリシーは最終的にnoneからrejectへ移行させましょう。
安全なSMTP拡張を使う
DNSレコードに加えて、STARTTLSを使ってメールサーバー間の接続を暗号化してください。これにより、中間者攻撃による認証情報の傍受や配送中のメールの改変を防げます。SMTP認証を導入すれば、許可されたユーザーだけがサーバー経由でメールをリレーできるようになり、内部からのなりすましのリスクを減らせます。
よく寄せられる質問
SPFとDKIMの違いは何ですか?
SPFはDNS上のリストによって特定のサーバーにメール送信を許可するもので、DKIMは暗号署名を使って送信者を検証し、メッセージの完全性を保証するものです。
DMARCはSPFやDKIMの代わりになりますか?
いいえ、DMARCはSPFとDKIMに依存しています。DMARCは、これら2つの認証チェックに失敗したメールをどう扱うかというポリシーの指示を提供するものです。
最初からp=rejectポリシーを使えますか?
まずはp=noneから始めてトラフィックを監視し、正当なメールがブロックされないことを確認してから、p=quarantine、最終的にp=rejectへ移行することをおすすめします。
SPFレコードが複数あるとどうなりますか?
SPFレコードが複数あると構文エラーとなり、SPFは失敗します。許可するすべての送信者を1つのTXTレコードにまとめる必要があります。
一次情報源
- RFC 7208:送信者ポリシーフレームワーク(SPF) — RFC Editor
- RFC 6376:DomainKeys Identified Mail(DKIM)の仕様 — RFC Editor
- RFC 7489:ドメインベースのメッセージ認証・レポート・適合(DMARC) — RFC Editor