SPFレコードは一種のDNS TXTレコードで、一般にメール認証に用いられます。送信元ドメインからのメール送信を許可されたIPアドレスリストとドメインのリストを含んでいます。
この記事を読み終えると、以下のことができるようになります。
記事のリンクをコピーする
センダーポリシーフレームワーク(SPF)レコードは、特定ドメインからのメール送信が許されたすべてのサーバーをリスト化した一種のDNS TXTレコードです。DNS TXT(テキスト)レコードは、ドメイン管理者がドメインネームシステム(DNS)に任意のテキストを入力できるようにします。TXTレコードは当初ドメインに関する重要な通知を含める目的で作られましたが、後に他の目的も果たすようになっています。
そもそもSPFレコードが作られたのは、標準的メールプロトコルである簡易メール転送プロトコル(SMTP)がメール送信元アドレスの認証機能を本来持たないものだったからです。つまり、SPFやその他の認証レコードがなければ、攻撃者は簡単に送信者になりすまして受信者を騙し、本来ならとらないであろう行動をとらせたり、共有しないであろう情報を共有させたりできます。
SPFはいわば、ドアマンが管理するゲストリストのようなものとお考え下さい。リストに名前がない人が中に入れないのと同様に、SPFレコードのリストに送信者のIPアドレスやドメインが登録されていなければ、受信側サーバー(ドアマン)はメールを届けないか、スパム判定して届けます。
メールの出所の信頼性をメールサーバーが確認できるようにするDNSベースの機構はたくさんあり、SPFレコードはその1つにすぎません。Domain-based Message Authentication Reporting and Conformance(DMARC)とDomainKeys Identified Mail(DKIM)もメール認証に使われます。
注意したいのは、SPFレコードにはかつて専用のDNSレコードタイプがあったこと。しかし今ではそのレコードタイプは推奨されておらず、TXTレコードだけを使うことになっています。
メールサーバーのSPFレコードチェックは、比較的シンプルなプロセスです。
SPFレコードは、サーバーが内容をどう解釈するか理解できるように、特定の基準に則っていなければなりません。以下は、SPFレコードの核を成す構成要素の例です。
v=spf1 ip4:192.0.2.0 ip4:192.0.2.1 include:examplesender.email -all
この例は、レコードのタイプをサーバーに知らせ、このドメインの承認済みIPアドレスと第三者を記述し、不適合メールの取り扱い方をサーバーに伝えています。具体的にどうやっているのか、構成要素を個別に見ていきましょう。
v=spf1
は、SPFレコードを含むことをサーバーに伝えています。SPFレコードは必ずこの文字列から始めなければなりません。ip4=192.0.2.0
とip4=192.0.2.1
はドメインを代表してメールを送信することを許可されている」旨を伝えています。 include:examplesender.net
はincludeタグの例で、どの第三者組織がこのドメインに代わってメールを送信することを許可されているかをサーバーに伝えています。このタグは、「インクルード(include)されたドメイン(examplesender.net)のSPFレコードの内容をチェックすべきであり、そこに含まれるIPアドレスも許可済みと考えるべきだ」ということを示しています。SPFレコードには複数ドメインを含めることができますが、このタグは有効なドメインにしか使えません。 -all
は、「SPFレコードのリストにないアドレスはメール送信を許可されておらず、拒否すべき」であることをサーバーに伝えています。 ~all
でもよいのですが、その場合は「リストにないメールはセキュアでない、もしくはスパムであると表示されるが、受信はすべき」という意味になります。あまり使われませんが+all
というオプションもあります。これは「お客様のドメインに代わってどのサーバーからでもメールを送信できる」ことを意味します。 この記事で取り上げた例はごくシンプルなものですが、もっと複雑なSPFレコードももちろんあります。SPFレコードの有効性を確保するために覚えておきたいことをいくつか、以下に挙げます。
all
という構成要素にするか、redirect=
という構成要素(そのSPFレコードが別のドメインでホストされていることを意味します)を含めなければなりません。 詳しくは、SPFレコードに関する公式ドキュメンテーションをご確認ください。
ドメインオペレーターがSPFレコードを使う理由はいろいろあります。
CloudflareでSPFレコードを簡単に設定するには、Email Security DNS Wizardを使用します。
メール用DNSレコードの詳細はこちら: