ベアメール

資料ダウンロード

blogベアメールブログ

ナレッジ

SPFレコードの書き方とは?記述例を総まとめ

SPF

目次contents

はじめに

Eメールは、多数の顧客へ効率よくアプローチできる仕組みです。しかし、近年、増え続けるスパムメールや迷惑メールの対策としてメールフィルターが強化された結果、内容に問題がないメールにもかかわらず、メールが不達に終わるケースが散見されます。こういったメールの不達を防ぐためにも、送信ドメイン認証の導入が必須といえるでしょう。

とりわけ、送信ドメイン認証の中でも特に普及率が高いSPFについては、具体的な実装方法(SPFレコードの記述方法)も知っておくべきでしょう。ここでは、SPFレコードに関する基礎知識と具体的な書き方について紹介しています。

SPFレコードとは?

SPFレコードは、送信元IPアドレスの正当性を検証する送信ドメイン認証技術「SPF」の設定情報です。一般的にメールを送受信するときはSMTPプロトコルを使用しますが、送信元を偽ることができてしまうという脆弱性があり、なりすましメールが簡単に送れてしまいます。そのため、SPFのような送信ドメイン認証によって、IPアドレス・ドメインの「身元」をはっきりさせるわけです。

送信ドメインのDNSサーバにSPFレコードを設定することで、受信側はメールを受け取る際にこのSPFレコードのマッチングを行い、送信元の正当性を判断します。

スパムメールや迷惑メールフィルターによるメール不達を防ぐには、SPFレコードの正しい記述が必須です。では、SPFレコードとは具体的にどのようなレコードなのでしょうか。

SPFレコードは、送信側サーバの管理者が、DNSサーバに設定する短文のテキストデータです。SPFレコードには厳密に書式(文法)が決められています。誤った書式で設定を行うと受信側サーバで「permerror(無効扱い)」になり、メールが到達しません。

したがって、SPFの運用には、SPFレコードの書式(文法)に関する知識が必須です。では、実際にSPFレコードの具体的な記述例を解説していきます。

SPFレコードの具体的な設定方法、記述例

SPFレコードは、送信メールサーバが参照しているDNSにおいて「TXTレコード」に追記するかたちで設定します。まずは基本書式から見ていきましょう。

SPFレコードの基本書式

SPFレコードの基本書式は、次のとおりです。なお、ひとつの文字列(” ”で囲まれた部分)の最大文字数は255文字です

ドメイン. IN TXT ” 【SPF version】 【qualifier】【mechanism】:【値】

例えば、ドメイン「XXX.co.jp」のIPアドレス「192.168.10.1」から送信されたメールのみを認証させたいときは、次のようなSPFレコードを追記します。

XXX.co.jp. IN TXT ” v=spf1  +ip4:192.168.10.1  –all

この例をもとに、各項目の意味を見ていきましょう。

●【SPF version】

先頭の【SPF version】は、SPF自体のバージョンを記載する部分ですが、原則として「v=spf1」と記載します。「v=spf1.0」といった記載は文法エラーになりますので注意してください。

●【qualifier】

次の 【qualifier】は、後続の【mechanism】にマッチしたとき、その認証結果をどのように処理するのか内容を設定します。記述内容と処理内容の関係は、次のとおりです。

・「+」⇒正常なメールとして処理

・「⁻」⇒不正メールとして処理され、配信拒否の可能性あり

・「~」⇒不正メールとして処理されるが、配信される

・「?」⇒SPF指定なしとして処理される

上の例では、IPアドレス「192.168.10.1」を「+」(正常なメール)として扱い、それ以外のIPアドレスは「-all」で全て拒否しています。

ただし、厳密には受信側サーバの設定に依存するため、「~」を記載しても、メールが到達しない可能性もあります。また、qualifierは省略可能であり、省略した場合は全て「+」(正常なメール)として処理されます。

●【mechanism】および【値】

【mechanism】と【値】は、いわば判定ルールです。この2つに合致していた場合、前述の【qualifier】の内容に従って処理が行われます。主要な設定内容と記載例は次のとおりです。

・「ip4:192.168.10.1」

IPv4 におけるIPアドレス「192.168.10.1」を条件指定する場合。指定したI Pアドレス「192.168.10.1」とメール送信元のI Pアドレスが一致するかを確認。

※ip6 と記載することで、IPv6での指定も可能。

・「a:XXX.co.jp」

ドメイン「XXX.co.jp」のAレコードを条件指定する場合。指定したドメインのAレコードに設定されているI Pアドレスとメール送信元のIPアドレスが一致するかを確認。

・「include:ZZZ.co.jp」

他ドメイン「ZZZ.co.jp」のSPFレコードを参照して認証させる場合。例えば、外部のメール送信業者を利用する場合、普段利用しているものと異なるサーバからメールが送られるため「include」を使用する。

・「redirect=YYY.co.jp」

リダイレクト先「YYY.co.jp」のSPFレコードを用いて認証させる場合。

・末尾に「all」と記載

全て合致と判断させる場合。

実際の記述例

【mechanism】の部分で、include や redirect など、やや特殊な動きをするメカニズムを指定するとエラー判定の温床になります。そのため、できるだけ簡潔に記載することが大切です。

上の例では、IPアドレスを【mechanism】として使用していますが、その他にも「ホスト名」や「ネットワーク指定」「サブドメインへの個別指定」などが可能です。

・FDQN(ホスト+ドメイン名)での記載例

IPアドレスではなく、ホスト名で指定しています。このとき、省略形ではなくFDQN(ホスト+ドメイン名)で記載することを忘れないようにしてください。

XXX.co.jp. IN TXT ”v=spf1  a:www.XXX.co.jp  -all”

・ネットワーク指定での記載例

メールを送信する可能性があるホストが属するネットワークを、CIDR方式を用いて指定します。

XXX.co.jp. IN TXT ”v=spf1  ip4:198.168.10.0/28  -all”

・サブドメインへの個別指定

アナウンスやキャンペーンなど、業務の種類ごとにサブドメインを設けている場合は、サブドメインごとにSPFレコードの個別指定が可能です。

XXX.co.jp. IN TXT” v=spf1  +ip4:192.168.10.1  -all”

shop.announce.XXX.co.jp. IN TXT”v=spf1  +ip4:192.168.10.2  -all”

エラーを回避するためのポイント

よくある誤記載の例としては、次のようなものが挙げられます。いずれもごく単純な内容ですが、それだけに見逃されがちなポイントです。

・ひとつのドメインに対して複数行の設定がある

SPFレコードは1つのドメインに対して1行になるように記載します。したがって、複数行にわたる記載はエラーになります。

誤)

XXX.co.jp. IN TXT ”v=spf1  +ip4:192.168.10.1  -all”

          ”v=spf1  +ip4:192.168.10.2  -all”

正)

XXX.co.jp. IN TXT ”v=spf1  +ip4:192.168.10.1  +ip4:192.168.10.2 -all”

・勘違いによる記載ミス

IPv4アドレスを使用する時「ip4」ではなく「ipv4」と記載したり、ホスト名をFQDN(ホスト+ドメイン名)ではなく省略形で記載したりするなど、思い込みによる記載ミスに注意しましょう。

・相互参照によるループ

<mechanism>の部分でincludeを指定すると、他のドメインで指定したSPFを流用できるため、設定作業の簡略化が可能です。しかし、相互参照に陥ってしまうと処理がループし、エラーになります。

例)

XXX.co.jp. IN TXT ”v=spf1  include:ZZZ.co.jp  -all”

ZZZ.co.jp. IN TXT ”v=spf1  include:XXX.co.jp  -all”

まとめ

本稿では、SPFレコードの記述例について解説してきました。メール到達率は、マーケティングや広報、顧客とのコミュニケーションの質に影響するため、きわめて重要な指標です。しかし、送信ドメイン認証が正しく機能していなければ、メール到達率は改善しません。メール到達率が思わしくない場合は、まずSPFレコードの設定を見直してみてはいかがでしょうか。

この記事を読んだ人へオススメrecommended