SPFレコード作成ツール

メールを送信するサービスを選ぶだけで、SPFレコードの書き方に迷わず、SPF設定を1つのレコードにまとめられます。受信サーバーにかかるDNSルックアップの回数も、作成しながらリアルタイムで数えます。

RFC 7208に沿ったルックアップの追跡(当サイトのSPFレコードチェッカーと同じ) · 71の送信サービスが公開しているinclude · ブラウザ内で作成
例

example.comのレコード例

上にドメインを入力すると現在公開している内容から始められます。下の項目も自由に変更できます。右のレコードは変更に合わせて更新されます。

example.comとしてメールを送るのは?
自社サーバー
IPv4アドレスまたは範囲
IPv6アドレスまたは範囲
その他のinclude
ベンダーからincludeするよう指示されたドメイン。
allその他のサーバーからのメール

記載のないサーバーは拒否されず、疑わしいと判定されます。DMARCがquarantineかrejectなら、判定はDMARCがDKIMをもとに行います。M3AAWGは~allを推奨しています。

このドメインはメールを送信しない
v=spf1 -all:どのサーバーもこのドメインとして送信できません。

このレコードで受信サーバーにかかる負担

10回のルックアップ上限 · example.comvoid 0 / 2

/ 10 回のルックアップを使用

110

DNSルックアップ 空の応答(void)

includeを数えています…

ルックアップの内訳

include:_spf.google.comGoogle Workspace1

公開する前に

公開の準備完了

レコードは1つで、受信サーバーが無視したり誤読したりする部分はありません。

良好

どこに貼り付ける?

DNSホストを選ぶと、下の各欄がそのフォームに合わせた形で表示されます。

ゾーンファイルの行
example.com. 3600 IN TXT "v=spf1 include:_spf.google.com ~all"

公開した後に

詳細チェック: example.comリンクにはこの設定が含まれますが、鍵は含まれません。 ブラウザから問い合わせています:CloudflareのリゾルバーとGoogleのリゾルバー(確認用)。

SPFレコードの書き方:作成と設定の手順は?

このドメインとしてメールを送るサービスをすべて洗い出し、それぞれのinclude:の項目と自社サーバーのアドレスを、ドメインのTXTレコード1つにまとめ、最後を~allで終えます。

コストの小さい項目を先に書きます。IPアドレスはDNSルックアップを使わず、aとmxは1回ずつ、includeは1回にその中身の分が加わります。

次に数えます。受信サーバーはDNSルックアップが10回に達すると止まります。作成ツールは各includeをリアルタイムでたどるため、表示される数は受信サーバーが見る数と同じです。

送信元Google WorkspaceMailjet192.0.2.25
受信サーバーが読む順序のレコード
v=spf1ip4:192.0.2.250 ルックアップinclude:_spf.google.com1 ルックアップinclude:spf.mailjet.com1 ルックアップ~all0 ルックアップ
送信元から1つのレコードへ
SPFレコード作成ツールが上限10回を超えたレコードのDNSルックアップを数え、多く使っている送信元を表示している画面SPFレコード作成ツールが上限10回を超えたレコードのDNSルックアップを数え、多く使っている送信元を表示している画面受信サーバーが到達する回数各includeをブラウザからリアルタイムでたどります。ネストしたものも、受信サーバーと同じ数え方です。ルックアップ1回につき1マス使っている送信元ごとに色分けされ、10回を超えるマスには斜線が入ります。その場合は恒久的エラーです。ルックアップの内訳各項目を、その印、ネストしたinclude、コストとともに表示します。多く使っているもの10回を超えた場合は、使用量の多い送信元と、フラット化の落とし穴を含めた現実的な解決策を表示します。別の場所に置く送信元SPFをサブドメインに置く、またはどこにも置かないサービスについて、その設定先を示します。
Microsoft 365、Freshdesk、Salesforce、Zendesk、Mimecastを1つのレコードに入れた例:各includeをブラウザからリアルタイムでたどり、上限の10回を大きく超えています。多く使っている送信元と、10回以内に戻す方法も表示します。

SPFレコードには何を書きますか(書き方の基本)

送信を許可する相手を示すメカニズム(ip4、ip6、a、mx、include、exists)と、末尾のall、またはredirectのどちらか1つを、それぞれ修飾子とともに書きます。DNSに問い合わせる項目はすべて、10回の上限のうち1回を使います。

修飾子は、一致したときの意味を決めます。+ はpass(既定)、- はfail、~ はsoftfail、? はneutralです。受信サーバーは左から順に読み、最初に一致した項目で止まります。

ptrは非推奨で処理も遅いため、使わないでください。

項目例DNSルックアップ用途
ip4ip4:192.0.2.0/240自社のIPv4サーバー
ip6ip6:2001:db8::/320自社のIPv6サーバー
aa1ドメイン自身のアドレス
mxmx1 + 最大10個の名前送信も行う受信メールサーバー
includeinclude:_spf.google.com1 + その中身送信サービスのレコード
existsexists:%{i}._spf.example.com1アドレスごとの確認(マクロ)
redirectredirect=_spf.example.com1別のドメインのレコード全体を使う
all~all0それ以外すべて(末尾)
+pass-fail~softfail?neutral
すべてのメカニズムとそのコスト

Google Workspace、Microsoft 365などのSPFレコード

Google Workspaceはinclude:_spf.google.com、Microsoft 365はinclude:spf.protection.outlook.comです。ほとんどのサービスはinclude:の項目を1つ公開していますが、レコードに何も追加しなくてよいものもあります。

下のコストは、各サービスの公開中のレコードで実測したもので、その中にネストしているものもすべて含みます。受信サーバーが使うのは、この数です。

「別の場所」と表示されたサービスは、自社専用のReturn-Pathか、自分のサブドメインから送信するため、SPFはそちらに置きます。

サービスレコードに追加する内容ルックアップ設定先
Google Workspaceinclude:_spf.google.com1自分のレコード
Microsoft 365include:spf.protection.outlook.com1自分のレコード
Zoho Mailinclude:zohomail.com2自分のレコード
Amazon SESinclude:amazonses.com1サブドメイン
SendGridinclude:sendgrid.net2サブドメイン
Mailguninclude:mailgun.org5サブドメイン
Mailchimp——追加不要
Brevo—1追加不要
HubSpotinclude:<HubID>.spf0N.hubspotemail.net—自分のレコード
Salesforceinclude:_spf.salesforce.com2自分のレコード
Zendeskinclude:mail.zendesk.com1自分のレコード
Freshdeskinclude:email.freshdesk.com7自分のレコード
Postmark—1追加不要
Mimecast (global)include:_netblocks.mimecast.com9自分のレコード
Proton Mailinclude:_spf.protonmail.ch2自分のレコード
Fastmailinclude:spf.messagingengine.com1自分のレコード
送信元、そのinclude、コスト

SPFの10回のルックアップ上限とは

受信サーバーは、DNSに問い合わせる項目がネストしたincludeも含めて10個に達すると止まり、その後はすべてのメールでSPFが恒久的エラーで失敗します。空の応答を返すルックアップが3つ目になった場合も失敗します(RFC 7208)。

上限以内に戻すには、送信元を専用のレコードを持つサブドメインに移す、送信しないサーバーならaやmxを外す、ベンダーにより範囲の狭いincludeがないか尋ねる、のいずれかです。

フラット化(includeをIPアドレスに置き換えること)でルックアップは減らせますが、ベンダーがアドレスを変えた日から古くなります。毎月確認し直してください。

12 / 10 · 恒久的エラー

mx1include:spf.protection.outlook.com1include:email.freshdesk.com7include:_spf.salesforce.com2include:mail.zendesk.com1
サブドメインa・mxを外す範囲の狭いincludeフラット化(古くなる)
送信元5つ、ルックアップ12回

SPFの末尾は~allと-allのどちらにしますか

メールを送るドメインは~all、送らないドメインは-allにします。DMARCを強制している場合、~allならDMARCがDKIMで判断しますが、-allでは転送されたメールがDMARCの判定の前に拒否されることがあります。

M3AAWGは、送信するドメインには~all、メールを送らないドメインには-allを推奨しています。GoogleはWorkspaceで~allを案内し、MicrosoftはMicrosoft 365で-allを案内しています。

~allsoftfail受信はされるが疑わしいと判定。DMARCがDKIMで判断
-allfailDKIMがパスしても、すぐに拒否されることがある
?allneutralSPFがない場合と同じ扱い
記載していないサーバーからのメール

SPFレコードに含めなくてよい送信元はどれですか

Mailchimp、Postmark、SparkPost、Klaviyo、Shopifyのように自社専用のReturn-Pathで送信するサービスは、SPFを先方のドメインでパスします。Amazon SES、SendGrid、Mailgunは、自分の送信用サブドメインに設定します。

SPFが確認するのは、人に見えるFromのアドレスではなく、エンベロープ送信者(Return-Path)です。DMARCでは、これらのサービスはDKIMでアライメントを取るため、代わりにDKIMレコードを公開してください。

From(人に見える部分)From: news@example.com
Return-Path(SPFが確認する部分)Return-Path: bounce@esp.example.net

ここには追加不要

MailchimpMandrillPostmarkSparkPostBrevoKlaviyoShopifyDynamics 365

自分のサブドメインに設定

Amazon SESSendGridMailgun
SPFが確認するのはFromの行ではなくReturn-Path

1つのドメインにSPFレコードを2つ置けますか

置けません。同じ名前にv=spf1のレコードが2つあると、受信サーバーは恒久的エラーで止まり、SPFが失敗します。1つのレコードにまとめてください。

両方の送信元をすべて残し、末尾は1つにして、まとめたレコードのルックアップ数を数え直してください。それぞれは収まっていても、合わせると10回を超えることがあります。

example.orgで公開v=spf1 include:_spf.google.com ~allv=spf1 include:spf.protection.outlook.com -all
1つのレコードv=spf1 include:_spf.google.com include:spf.protection.outlook.com ~all
2つのレコードを1つにまとめる

長いSPFレコードはDNSホストでどう扱われますか

TXTの文字列は1つ255バイトまでです。それより長いレコードは複数の文字列に分割され、受信サーバーが間に何も挟まずに連結します。ほとんどのDNSホストは、自動で分割してくれます。

CloudflareとAzureは値全体を1つの欄で受け付けます。Route 53とGoogle Cloud DNSは、引用符で囲んだ255バイトの文字列を求めます。RFC 7208は、応答全体を450バイト未満に抑えるよう求めています。

v=spf1 ip4:198.51.100.1 ip4:198.51.100.2 ip4:198.51.100.3 ip4:198.51.100.4 ip4:198.51.100.5 ip4:198.51.100.6 ip4:198.51.100.7 ip4:198.51.100.8 ip4:198.51.100.9 ip4:198.51.100.10 ip4:198.51.100.11 ip4:198.51.100.12 ip4:203.0.113.20 ip4:203.0.113.21 ip4:203.0.113.22 ip4:203.0.113.23 ip4:203.0.113.24 include:_spf.google.com ~all
1255 B272 B
example.com. 3600 IN TXT ( "v=spf1 ip4:198.51.100.1 ip4:198.51.100.2 ip4:198.51.100.3 ip4:198.51.100.4 ip4:198.51.100.5 ip4:198.51.100.6 ip4:198.51.100.7 ip4:198.51.100.8 ip4:198.51.100.9 ip4:198.51.100.10 ip4:198.51.100.11 ip4:198.51.100.12 ip4:203.0.113.20 ip4:203.0.113.21 ip4:203"
	".0.113.22 ip4:203.0.113.23 ip4:203.0.113.24 include:_spf.google.com ~all" )
DNSに格納される長いレコード

SPFレコード作成ツールのよくある質問

SPFレコードとは何ですか

SPFレコードは、ドメインに置くv=spf1で始まるTXTレコードで、エンベロープ送信者にそのドメインを使ってメールを送信してよいサーバーを列挙します。受信サーバーは、送信してきたサーバーをこの一覧と照らし合わせ、pass、softfail、failのいずれかと判定します。RFC 7208で定義されており、ドメインのアライメントが取れている場合は、DMARCがその結果を使います。

Google WorkspaceのSPFレコードはどう書きますか

v=spf1 include:_spf.google.com ~allです。このinclude1つでGoogleの送信サーバーをカバーでき、10回の上限のうちDNSルックアップを1回使います。他のサービスもこのドメインとして送信する場合は、末尾の前にそれぞれのincludeを追加し、レコードは1つに保ってください。v=spf1のレコードが2つあると、全員のSPFが失敗します。

Microsoft 365のSPFレコードはどう書きますか

Microsoftのドキュメントどおり、v=spf1 include:spf.protection.outlook.com -allです。~allでも動作し、転送されたメールにはこちらのほうが穏やかです。このincludeはDNSルックアップを1回使います。政府向けクラウドは、GCC Highのspf.protection.office365.usのように専用のincludeを使い、作成ツールでは別の送信元として一覧にしています。

SPFレコードを2つ設定できますか

できません。同じ名前にv=spf1のレコードが2つあると、受信サーバーは恒久的エラーで止まり、すべてのメールでSPFが失敗します。両方の送信元をすべて、末尾を1つにして1つのレコードにまとめてください。作成ツールにドメインを読み込むと、重複を自動でまとめ、その結果のルックアップ数も数えます。

SPFレコードのルックアップが10回を超えるとどうなりますか

受信サーバーは、DNSに問い合わせる項目の11個目で止まって恒久的エラーを返すため、正規のメールを含むすべてのメールでSPFが失敗します。アライメントの取れたDKIM経由でDMARCがパスすることはありますが、SPFは役に立たなくなります。送信元をサブドメインへ移す、送信しないサーバーのaやmxを外す、ベンダーにより範囲の狭いincludeを尋ねる、のいずれかで対処してください。

~allと-allはどちらを使うべきですか

メールを送るドメインは~all、送らないドメインは-allにします。~allでは、失敗したメールは疑わしいと判定され、DMARCがDKIMで判断します。-allでは、受信サーバーによってはその場で拒否され、転送されたメールがDMARCの判定の前に拒否されることがあります。M3AAWGは、送信するドメインには~allを推奨しています。

サブドメインにも専用のSPFレコードが必要ですか

メールを送るなら必要です。SPFは継承されないため、news.example.comは、example.comではなく、それ自身のTXTレコードで確認されます。何も送らないサブドメインにはv=spf1 -allを公開してください。Amazon SESやMailgunのようなサービスは、一緒に設定した送信用サブドメインにレコードを置くことを求めます。

SPFレコードはどこに追加しますか

DNSホストで、ドメインそのものにTXTレコードとして追加します。名前の欄には@を入力し(Route 53では空欄)、値を貼り付けます。すでにSPFレコードがある場合は、もう1つ追加せず、それを編集してください。作成ツールでDNSホストを選ぶと、その入力欄の名前と、長い値の扱い方が表示されます。

SPFのフラット化とは何ですか。使うべきですか

フラット化は、include項目をその中のIPアドレスに置き換え、レコードに必要なDNSルックアップを減らすことです。効果はありますが、ベンダーがアドレスを変えるたびにコピーが古くなり、新しいアドレスからのメールはSPFに失敗します。サブドメインか、範囲の狭いincludeを優先してください。フラット化するなら、毎月レコードを確認し直してください。

SPFレコード作成ツールは無料ですか。何かが当サイトのサーバーに送られますか

無料で、登録も不要です。レコードはブラウザ内で作成され、各includeの数え上げは、ブラウザからHTTPSでCloudflareのリゾルバー(Cloudflareが遅いときはGoogleのリゾルバー)へ送るDNSの問い合わせで行います。そのため、ドメインやレコードが当サイトのサーバーを通ることはありません。入力した内容は保存されません。

足りないものはありますか?機能や新しいツールを提案する