SPFとは?SPFによるメール認証の仕組みやSPFレコードの設定方法を分かりやすく解説
今回は、メール配信設定において重要な項目の一つである送信ドメイン認証技術 「SPF」について解説します。本コラムで「SPF」について正しく学び、メール配信のセキュリティ対策をしておきましょう。
目次[非表示]
- 1.SPF (Sender Policy Framework)とは?
- 1.1.SPFが注目される背景
- 1.2.SPFの仕組み
- 1.3.SPFレコードを設定しないと「なりすましメール」扱いに
- 2.SPFの課題とは?
- 2.1.メール転送時に認証に失敗してしまう
- 2.2.第三者サーバ利用問題
- 3.SPFレコードの確認・設定方法
- 3.1.SPFレコードの確認方法
- 3.2.SPFレコードの設定方法
- 4.SPFレコードの記述例とポイント
- 4.1.基本的な記述(IPアドレスで記述)
- 4.2.ネットワークで記述
- 4.3.ホスト名で記述
- 4.4.MXレコードに指定したホストで記述
- 4.5.includeを使った記述(外部のメール配信サービスを利用している場合)
- 4.6.redirect を使った記述(複数ドメインを扱っているメールシステムの場合)
- 4.7.メールサーバが沢山あるドメインの記述
- 5.SPFレコードで間違いやすい例と対処法
- 5.1.①バージョンが間違っているケース
- 5.2.②機構が省略されているケース
- 5.3.③1つのドメインに複数のspf1レコードを公開しているケース
- 5.4.④タイプミスしているケース
- 5.5.⑤空白文字(SP)が抜けているケース
- 5.6.⑥redirectやincludeの先がないケース
- 6.アララ メッセージで迷惑メール対策
- 7.まとめ
SPF (Sender Policy Framework)とは?
SPF(Sender Policy Framework)とは、正規のIPアドレスからメールが送信されたかどうかを認証する送信ドメインの認証の一つです。メールの送信元IPアドレスと送信元ドメインに紐づくSPFレコードに記載されたIPアドレスを比較することで送信元のIPアドレスを確認し、差出人のメールアドレスが他のドメイン名になりすましされていないかを確認することができます。
SPFが注目される背景
SPFのような送信元ドメイン認証が注目される背景には、迷惑メールの増加が挙げられます。
迷惑メールは、送信者が受信者に送信元を突き止められないよう、送信元メールアドレスを偽称しているケースが多いです。
この送信元メールアドレスには、受信メールボックス上で表示される「ヘッダーFrom」と、実際に送信した差出人(送信元)にあたる「エンベロープFrom」の2種類があります。
多くの迷惑メールは、「ヘッダーFrom」を偽称して配信されています。
メール配信の規則においても、「エンベロープFrom」と「ヘッダーFrom」の2つが同じである必要はありません。任意のアドレスを指定できるため、送信者を簡単に偽称できる仕組みになっているのです。
しかし、SPFを利用することで、実際の差出人にあたる「エンベロープfrom」のドメインから送られてきたものかどうかを確認できるため、迷惑メール対策の1つとして注目されているのです。
SPFの仕組み
SPFは、メール送信元IPアドレスを送信側のDNSサーバへあらかじめ登録することで、メールを受信した受信側メールサーバが怪しいメールでないかを送信側のDNSサーバに確認する仕組みです。
DNSサーバはドメイン名とIPアドレスを紐づけるデータベースを管理しているため、ドメイン名の問い合わせに対してIPアドレスを答える役割を担っています。
なお、DNSサーバへ登録する情報を「SPFレコード」と呼びます。
受信者はメールを受信した際に、送信元のDNSサーバへSPFレコードを要求し、その回答と実際の送信元IPアドレスが一致するか確認することで、送信ドメインの認証を実施します。
SPFレコードを設定しないと「なりすましメール」扱いに
昨今、大きな問題となっている迷惑メールの一種「なりすましメール」は、第三者が有名企業や公的機関を装い送信するメールのことを言います。
送信元となる差出人やアドレスを偽り受信者にメールを開封させることで、ランサムウェアなどのウイルス感染やフィッシング詐欺などをおこなうことが目的です。
「なりすましメール」は、差出人やアドレスは詐称しますが、メール送信サーバを乗っ取っているわけではありません。
そのため、受信側のメールサーバはメールを受信した際、送信サーバのIPアドレスを確認することで、「なりすましメール」か否か判断することができます。
しかし、DNSサーバへSPFレコードを設定せず、そのまま配信した場合、受信側のメールサーバは受信したメールのIPアドレスが送信元のIPアドレスと一致しているか確認することができません。
そこで、「なりすましメール」の可能性があると判断し、迷惑メール判定をしてしまうのです。
逆に、受信したメールの送信元IPアドレスとSPFレコードに登録されたIPアドレスを照合し、適合すれば"なりすましメールではない"と判断されます。
メールを送信する際には、SPFが確実に設定されているかを確認するようにしてください。
SPFの課題とは?
SPFが迷惑メール対策に有効な理由をご紹介してきましたが、一方でSPFには課題もあります。
SPFが抱える課題を2つご紹介します。
メール転送時に認証に失敗してしまう
先にもご紹介した通り、SPFはIPアドレスで送信元ドメインの認証をおこなっています。
しかし、メールが転送された場合、メールのFromは変わりませんが、メール送信するサーバのIPアドレスが変わってしまうため、なりすましメールでなくても認証に失敗してしまうという課題があります。
転送する際に、受信者のメールアドレスをエンベロープFromとして置き換えて送信するなどの対処をおこないましょう。
第三者サーバ利用問題
出張先のホテルや自宅など自身がプライベートで利用している第三者のメールサーバから、会社で利用しているメールアドレスを使い送信すると、エンベロープFromのドメインに紐付くSPFレコードには第三者のメールサーバのIPアドレスは含まれていないため、認証に失敗します。
ただし、このような使い方は潜在的に情報漏洩につながる可能性が高く、非常に危険です。
会社の正規メールサーバを利用できるよう、VPNやSSL通信を利用したサブミッションポートでのメール配信がおこなえる仕組みを社内で構築しましょう。
SPFレコードの確認・設定方法
SPFレコードの確認・設定方法をご紹介します。
SPFレコードの確認方法
SPFレコードを調べる方法を2つご紹介します。
【1】SPFレコードチェックツールを利用する
▼SPFレコードチェックツール
https://mxtoolbox.com/spf.aspx
1.「Domain Name」に差出人ドメイン名を記載します。
2.「SPF Record Lookup」をクリックします。
【2】コマンドプロンプトを利用する
Windowsの場合は、搭載されているシステムツール「コマンドプロンプト」で調べることができます。
1.Windowsのスタートメニューから「コマンドプロンプト」を起動する。
2.以下のコマンドを入力する。
「nslookup -q=txt ドメイン名」
例:nslookup -q=txt arara.com
表示されている「v=spf」から始まる部分がSPFレコ―ドとなります。
SPFレコードの設定方法
SPFレコードの設定は、差出人となるアドレスを運用しているDNSサーバーでおこなう必要があります。
DNSサーバを自社で管理している場合は、社内のサーバ管理者に確認してください。
サーバ管理会社に管理を委託している場合は、サーバ管理会社へSPFレコードの設定が可能かどうか確認してみましょう。
なお、SPFレコードの設定方法は、使用しているDNSサーバによって異なります。
契約しているサーバの管理画面から自身で設定する場合もあります。
以下は、その一例です。
|
SPFレコードの記述例とポイント
SPFレコードを設定する際は、ミスが無いようなるべくシンプルに記載することが大切です。
以下に、SPFレコードの記述例とそのポイントを解説します。
基本的な記述(IPアドレスで記述)
[ドメイン]. IN TXT "v=spf1 +ip4:[IPアドレス] ~all" 例1)example.co.jp. IN TXT "v=spf1 +ip4:192.xxx.xxx.xx ~all" |
送信するメールサーバのIPアドレスを直接記述する方式で、最も基本的な方法となります。
ドメイン「example.co.jp」のIPアドレス「192.xxx.xxx.xx」から送信されたメールを認証させたいときは、上記のようなSPFレコードを追記します。
複数ある場合は、例2のように1行で記載してください。
ネットワークで記述
[ドメイン]. IN TXT "v=spf1 +ip4:[ネットワーク] ~all" 例1)example.co.jp. IN TXT "v=spf1 +ip4:192.xx.xx.x/24-all" |
送信する可能性のあるメールサーバのネットワークを CIDR 方式で記述する方法です。
広範囲のネットワークを指定してしまうと、SPF レコード自体の効果がなくなってしまうため、ネットワークで記述する場合は、最小限の範囲を指定してください。
また、例2のように、IPアドレスの直接指定とネットワーク指定を組み合わせて設定することも可能です。
ホスト名で記述
[ドメイン]. IN TXT "v=spf1 a:[ホスト名] ~all" 例)example.co.jp. IN TXT "v=spf1 a:mx01.example.co.jp -all" |
IPアドレスの代わりにホスト名を指定する記載方法です。ホスト名は必ずFQDNで記載してください。
IPアドレスを直接指定することに比べてメンテナンスは簡単になりますが、DNSへの負荷が少し増える可能性があります。
MXレコードに指定したホストで記述
[ドメイン]. IN TXT "v=spf1 mx ~all" 例)example.co.jp. IN TXT "v=spf1 mx -all" |
MX レコードに登録したメールサーバーからしかメールを送信しない場合は、MXを記述することで、メンテナンスが楽になります。
ただし、こちらもDNSへの負荷が少し増える可能性があります。
includeを使った記述(外部のメール配信サービスを利用している場合)
[ドメイン]. IN TXT "v=spf1 include: [外部サービス指定のドメイン] ~all" 例1)example.co.jp. IN TXT "v=spf1 include:spf.example.jp ~all" |
例1,2のように外部のメール配信サービスのSPFレコードが「spf.example.jp」に公開されている場合、「spf.example.jp」のSPFレコードを参照して認証できます。
外部のメール送信業者を利用する場合は、普段利用しているものと異なるサーバからメールが送られるため「include」を使用する必要があります。
redirect を使った記述(複数ドメインを扱っているメールシステムの場合)
[ドメイン①]. IN TXT "v=spf1 include: [IPアドレス] ~all" 例)example.co.jp. IN TXT "v=spf1 ip4:192.xxx.xxx.xx ip4:192.xxx.xxx.xx -all" |
一つの企業で複数のドメインを利用しており、この複数のドメインのメールを1つのメールシステムを共有する場合、redirect を利用して共有化を図ることができます。
これによって、複数あるドメインすべてを変更する手間が省け、メンテナンスを簡単にできます。
ただし、相互参照によって参照のループを発生さないように、参照先のレコードではincludeやredirectを利用しないようにしてください。
メールサーバが沢山あるドメインの記述
例)example.co.jp. IN TXT "v=spf1 include:_spf-a.example.com include:_spf-b.example.com include:_spf-c.example.com -all" _spf-a.example.co.jp. IN TXT "v=spf1 ip4: xxx.xxx.xx ip4: xxx.xxx.xx ip4: xxx.xxx.xx ip4: xxx.xxx.xx -all" _spf-b.example.co.jp. IN TXT "v=spf1 ip4: xxx.xxx.xx ip4: xxx.xxx.xx ip4: xxx.xxx.xx ip4: xxx.xxx.xx -all" _spf-c.example.co.jp. IN TXT "v=spf1 ip4: xxx.xxx.xx ip4: xxx.xxx.xx ip4: xxx.xxx.xx ip4: xxx.xxx.xx -all" |
RFCでは、連結したあとの1つのレコードが450バイト以下であることが目安とされています。
450バイトを超えるような長いレコードを記述するのはあまりおすすめできませんが、1つの SPF レコードが複数の文字列で構成されている場合、受信側ではその文字列はすべてつなぎ合わせて1つの文字列として認証処理します。
ただし、複数の文字列を1つの文字列に連結するとき、そのつなぎ目に空白文字は挿入されないので注意してください。
SPFレコードで間違いやすい例と対処法
先に説明した通り、SPFレコードには様々な記述方法があります。
そのため間違いやすく、間違った SPF レコードを公開しても受信側では PermError と扱われ、正しく認証ができません。
以下に、間違いやすい例を説明します。
①バージョンが間違っているケース
【誤】example.co.jp. IN TXT "v=spf1.0 include:spf.example.jp ~all |
【正】example.co.jp. IN TXT "v=spf1 include:spf.example.jp ~all |
SPFのバージョンは、必ず"v=spf1"で記載をしてください。
②機構が省略されているケース
【誤】example.co.jp. IN TXT "v=spf1 mx01 mx02 ~all" |
【正】example.co.jp. IN TXT "v=spf1 +a:mx01.example.co.jp +a:mx02.example.co.jp ~all" |
機構は省略せず、必ずFQDNを使い「+a:ホスト名(FQDN)」と記述するようにしてください。
③1つのドメインに複数のspf1レコードを公開しているケース
【誤】example.co.jp. IN TXT "v=spf1 ip4:192.xxx.xxx.xx ip4:192.xxx.xxx.xx ~all" example.co.jp. IN TXT "v=spf1 a:mx01.example.co.jp ?~all" example.co.jp. IN TXT "v=spf1 a:mx02.example.co.jp ?~all" |
【正】example.co.jp. IN TXT "v=spf1 ip4:192.xxx.xxx.xx ip4:192.xxx.xxx.xx a:mx01.example.co.jp a:mx02.example.co.jp ~all" |
SPFレコードは1つのドメインに対して1行になるように記述してください。
複数公開すると、エラーとなります。
④タイプミスしているケース
【誤】example.co.jp. IN TXT "v=spf1 ipv4:192.xxx.xxx.xx mx ~all" 【誤】example.co.jp. IN TXT "v=spf1 ip:192.xxx.xxx.xx mx ~all" 【誤】example.co.jp. IN TXT "v=spf1 ip192.xxx.xxx.xx mx ~all" |
【正】example.co.jp. IN TXT "v=spf1 ip4:192.xxx.xxx.xx mx ~all" |
IPv4アドレスを使用する時「ip4」ではなく「ipv4」と記載したり、「:」を忘れたりなど、タイプミスによってエラーとなってしまうケースは非常に多くあります。
タイプミスが無いように、確認をしながら記述をおこないましょう。
⑤空白文字(SP)が抜けているケース
【誤】example.co.jp. IN TXT "v=spf1 ip4:192.xx.xx.x/24" "ip4:192.xxx.xxx.xx ~all" |
【正】example.co.jp. IN TXT "v=spf1 ip4:192.xx.xx.x/24 ip4:192.xxx.xxx.xx ~all" |
二重引用符で複数に分けて記述することはできますが、その際
"ip4:192.xx.xx.x/24"と"ip4:192.xxx.xxx.xx ~all"は"v=spf1 ip4:192.xx.xx.x/24ip4:192.xxx.xxx.xx ~all"という大きな1つのレコードとして扱われます。
" " でくくられた2つの部分を接続する際、空白文字は補われないため、区切り文字として空白文字(SP)が入りませんので注意してください。
⑥redirectやincludeの先がないケース
【誤】example.co.jp. IN TXT "v=spf1 include:_spf.example.jp ~all" * Can’t find _spf.exmaple.org: Non-exisitent domain |
include している _spf.example.jp のレコードが存在していない場合は上記のようなエラーとなります。
SPF レコードを公開した当初から参照先が変わった際に反映していないことなどが原因として考えられます。
アララ メッセージで迷惑メール対策
これまで説明してきたように、SPFレコードをFromドメインのDNSに公開することで、迷惑メールの1つである「なりすましメール」 を防ぐことができます。
メールを配信する際は、SPFレコードの設定をおこない、迷惑メール扱いされないようなメール配信を実施しましょう。
さらに、当社が提供する「アララ メッセージ」は、メールの大量・高速配信や到達性の確保をサポートするだけでなく、SPFをはじめとするDKIMやS/MIMEなど迷惑メール対策が十分に施されたメール配信システムです。
配信しているメールが迷惑メール扱いされてしまい悩んでいる方はもちろん、これからメール配信をはじめる方もご検討ください。
■その他セキュリティ対策記事
・DKIMとは?迷惑メール対策に
・STARTTLSとは?メールを暗号化する仕組みをご紹介
・S/MIMEとは?電子メールのセキュリティ対策!
まとめ
SPFについての理解は深まりましたか。
SPFは、送信元のドメインが詐称されていないかを検証する送信ドメイン認証方式で、メールを送信するうえで欠かせない迷惑メール対策の1つです。
しかし、SPFも万能ではなく課題もあるので、注意が必要です。
また、SPFレコードを設定する際は、まちがいやすく、正しく設定できないとエラーとなってしまいますので、本コラムの記述方法を参考にしながら設定をしてみてください。
SPFをはじめとする迷惑メール対策を兼ね備えたメール配信システムをお求めの企業様は、ぜひ「アララ メッセージ」をご検討ください。
関連コラム