企業のドメインを偽装した「なりすましメール」による犯罪が、世界中で発生しています。たとえば取引先のドメインを装った偽の送金指示メールに従ってお金を振り込んでしまった例など、「ビジネスメール」詐欺の被害報告も少なくありません。
そんななか、なりすましメールを予防するために使われている代表的な技術の1つが、DNSを使ったSPFという技術です。昨今ではSPFレコードを登録していないことで、自社から送信したメールが迷惑メールと判定されてしまうこともあります。メールを安全に利用するためにも、SPFは覚えておきたい技術です。
この記事ではSPFやSPFレコードは何かといった基本から、SPFレコードの正しい書き方まで詳しく解説しています。
目次
「なりすましメール」を防ぐSPFレコードとは?
SPF(= Sender Policy Framework)とは、メールの送信元(Sender)ドメインが詐称されていないことを証明するための技術です。SPFレコードを正しく記載することによって、自社から送信したメールが、ドメインを詐称した迷惑メールではないことを相手に分かってもらえます。さらにSPFレコードに記載された内容と、送信メールの情報に差異がある場合は、そのメールがなりすましメールの可能性があると判定することもできます。
そもそも、なぜメールのなりすましが発生するのか?
それでは、そもそもなぜ送信元のドメインをなりすました迷惑メールを送ることができてしまうのでしょうか。その理由は、メールに記載される送信元メールアドレスが1種類ではないことにあります。
まず、メールソフトのFrom欄に記載される送信元メールアドレスのことを「ヘッダFrom」と呼び、これは郵便にたとえると便せんに書かれた差出人名に該当します。たいして、もう1つの送信元メールアドレスが「エンベロープFrom」です。
SPFレコードによって「なりすましメール」を防げる理由
SPFレコードとは、そのドメインを送信元としたメールを配送する、正当なメールサーバーの情報(IPアドレス等)をまとめたDNSレコードのことです。
送信先のメールサーバーは、メールが配送されてきたときにSPFレコードを照合します。そうしてメールの送信元(通常、エンベロープFrom)に指定されたドメインとSPFレコードの情報と整合性がとれなければ、なりすましメールである(または、可能性がある)と判断するわけです。
SPFレコードがないと「なりすましメール」と判定されてしまう理由
メールサーバーによっては、SPFレコードが存在しないドメインのメールを「なりすましメールの可能性がある」と判断することがあります。そうして、そのメールが迷惑メールと判定されてしまうために相手に届かないことがあるわけです。
さらに同様の判定が続くと、その送信元のメールサーバーについても「迷惑メールを頻繁に送るメールサーバー」と登録されてしまうこともあります。結果、なりすましメールではないのに迷惑メールと判定されやすくなることもあるのです。
そうした誤解を防ぎ、なりすましメールと判定されないようにするためにも、SPFレコードを登録しておいた方が安心です。
>コントロールパネルからSPFを簡単に設定できるKAGOYAメールプラン
SPFレコードの正しい書き方・設定方法
それではSPFレコードはどのように記述し、設定すればよいのでしょうか。ここではSPFレコードの正しい書き方と設定方法について、簡単に解説します。
▽SPFレコードはDNSサーバーに登録すると使えるようになる
まずSPFレコードについては、お使いのドメインを管理するDNSサーバーに登録することで利用できるようになります。DNSサーバーにおいて、DNS情報のうち「TXTレコード」にSPFレコードを登録することによって、SPFレコードが有効となります。
DNSサーバーの登録方法はサーバーによって異なりますが、ここでは参考までにカゴヤのDNSサーバーに登録する場合の例を紹介します。
【カゴヤのDNSサーバーによるSPFレコードの登録方法】
1) コントロールパネルにアクセスし、アカウント名とパスワードを入力後、「ログイン」をクリックします。
2) コントロールパネルが表示されます。「ドメイン」→「DNSレコード設定」をクリックします。
3) 「DNSレコード設定」画面が表示されます。「ドメイン名」欄で設定対象のドメインを選択します。次に「TXTレコード」欄にSPFレコードを入力し「追加」をクリックします。
※SPFレコードの書き方は後述します。
4) 画面が遷移し「DNSレコードが追加されました」と表示されれば登録完了です。
基本的な書き方・記述方法
SPFレコードの記述方法にはいくつかのルールがありますが、まずは基本的な例をみていきましょう。最もスタンダードな書き方だけ把握しておけば十分である場合も多いですし、必要に応じて応用も簡単です。
以下の記述例をご覧ください。
1) example.jp. IN TXT "v=spf1 +ip4:192.168.100.0/24 ~all"
2) example.jp. IN TXT "v=spf1 include:kagoya.net ~all"
1)・2)いずれも、@example.jpを送信元としてメールを送る際の、正当なメールサーバーの情報を示しています。それぞれ、以下が「正当なメールサーバー」と指定されています。
1) の場合
IPアドレスが「192.168.100.0/24」に該当するメールサーバー
2) の場合
kagoya.netのSPFレコードに記載されたメールサーバー
※こちらの場合は、改めてkagoya.netのSPFレコードを参照する必要があります。
この2つの記述例だけでも覚えておけば、正しくSPFレコードを記載できるケースが多いです。次の項では、その他の主な記述例を紹介します。
いろいろな記述例
前述の基本的なSPFレコードの書き方を把握していることを前提として、ここではその他の記述例をいくつか紹介します。
1) 単独のIPアドレスで指定する方法
example.jp. IN TXT "v=spf1 ip4:192.168.100.3 ~all"
これは「正当なメールサーバー」のIPアドレスが1つ(例では「192.168.100.3」)しかない場合の記述例です。「ip4」とIPv4アドレスによる指定であることを示しています。
2) AレコードやMXレコードで指定する方法
example.jp. IN TXT "v=spf1 a:mail.example.jp ~all"
example.jp. IN TXT "v=spf1 mx ~all"
DNSに登録されたAレコードやMXレコードで指定した例です。
上は「mail.example.jp」のAレコードで、下は「example.jp」のMXレコードで指定されたメールサーバーが「正当なメールサーバー」であるという意味になります。
3)「~all」ではなく「-all」で指定する方法
example.jp. IN TXT "v=spf1 +ip4:192.168.100.0/24 -all"
example.jp. IN TXT "v=spf1 include:kagoya.net -all"
違いが分かり辛いかもしれませんが、前項で「~all(チルダオール)」と記述していた部分を、「-all(ハイフンオール)」に変えています。
それぞれの意味は以下の通りです。
・「~all」:送信元メールアドレスは詐称されている可能性がある
・「-all」:送信元メールアドレスは詐称されている
「~all」と比較すると「-all」は、より断定した指定方法というと分かりやすいでしょうか。
メールは様々なメールサーバーから配送される可能性があります。(メールマガジンのみ、外部のメールサーバーを利用するなど)そういった例外なく、必ずSPFレコードで指定されたメールサーバーからしか該当ドメインを送信元とするメールが送られないのであれば、「-all」を指定します。
一方、その他のメールサーバーからも送信される可能性があるなら、「~all」で指定しましょう。一般的には、「~all」が選ばれる例の方が多いです。
1つのドメインに複数のSPFレコードを登録する方法
外部のサービスを利用してメールマガジンを配信する場合のように、メールサーバーのホスト名やIPアドレス範囲等が複数にわたる場合があります。その場合は、SPFレコードに複数の指定をする必要があります。
しかし、以下のように行を分けて登録してはいけません。正しく判定されなくなってしまいます。
【誤った記述例】
example.jp. IN TXT "v=spf1 +ip4:192.168.10.0/24 ~all"
"v=spf1 +ip4:10.1.2.0/24 ~all"
複数の指定をする場合は、以下のように、1行にまとめて記載する必要があります。
【正しい記述例】
example.jp. IN TXT "v=spf1 +ip4:192.168.10.0/24 +ip4:10.1.2.0/24 ~all"
SPFレコードが正しく記述されているか確認する方法
SPFレコードを登録しても、書式などに誤りがないか不安になる方も多いことでしょう。この場合、インターネットで無料公開されている、SPFレコードのチェックツールを使って確認することをおすすめします。
たとえば、以下は「Domain name」欄にドメインを入力して「Get SPF Record」をクリックするだけで、正しく診断できているか無料でチェックできるウェブツールです。
SPF Record Testing Tools
https://www.kitterman.com/spf/validate.html
SPFレコードが正しく登録されている場合、以下のように結果表示されます。
SPF record passed validation test with pySPF (Python SPF library)!
逆に書き方に誤りがある場合は以下の表示となりますので、SPFレコードを見直してみてください。
Results – PermError SPF Permanent Error: Too many DNS lookups
まとめ
SPFを利用することで、相手から送られたメールが「正当なメールサーバー」から配信されているか確かめることができます。そのため自社が送信したメールが「なりすましメールではない」ことを証明するためにも、SPFレコードをDNSレコードに登録しておくことが強く推奨されます。
なおSPFレコードを登録する際は、記述例を参考にするとよいです。送信メールサーバーの情報を記述例にあてはめるだめで、自社用のSPFレコードを作成できます。無料のオンラインチェックツールを使い、記述が間違っていないか確認することも可能です。
KAGOYAのメールプランにはメールサーバー1台を専有できるだけではなく、ビジネス利用には必須となっているSPF/DKIM/DMARCがすべてコンパネから簡単設定が可能なタイプを取り揃えています。
さらにメールアドレス数は無制限で高い法人利用率をほこる高コスパなプランとなっています。