簡潔な回答
カスタムドメインのSPFレコードを作成するには?
ドメインのルートに、v=spf1 で始まるTXTレコードを1件作成し、メールプロバイダーのinclude(Proton Mailなら include:_spf.protonmail.ch)を追加して、~all で終えます。ドメインに置けるSPFレコードは1つだけで、SPFで許されるDNSルックアップは最大10回です。Postelva は、無料のDNSエディターでTXTレコードをホストします。
4つのメールプロバイダーのSPF値
| プロバイダー | 追加するinclude | 一般的な完全なレコード |
|---|---|---|
| Proton Mail | include:_spf.protonmail.ch | v=spf1 include:_spf.protonmail.ch ~all |
| Mailbox.org | include:mailbox.org | v=spf1 include:mailbox.org ~all |
| Fastmail | include:spf.messagingengine.com | v=spf1 include:spf.messagingengine.com ?all |
| Mailfence | include:_spf.mailfence.com | v=spf1 include:_spf.mailfence.com -all(Mailfenceだけが送信する場合)または ~all(他の送信元もある場合) |
最終確認日 。それより古い数値にはそれぞれの日付を記載しています
5ステップでレコードを作成する
ドメインとして送信するすべてのサービスを洗い出す
メールボックスのプロバイダーと、あなたの名義で送信する他のツール(ニュースレターサービス、ヘルプデスク、Webサイトの問い合わせフォームなど)を書き出します。それぞれがレコード内に居場所を必要とします。
SPFレコードがすでにあるか確認する
ドメインのルート(@)にあるTXTレコードを調べます。v=spf1 で始まるものがあれば、それを編集します。2つ目は決して作らないでください。
値を組み立てる
v=spf1 で始め、送信サービスごとに include: を1つ追加し、~all で終えます。Proton Mailだけの例:v=spf1 include:_spf.protonmail.ch ~all。
TXTレコードとして公開する
DNSエディターで、ホストを @ にして、上記の値のTXTレコードを追加します。1行のままにしてください。
結果を確認する
dig TXT example.com +short でレコードを調べ、v=spf1 で始まる行がちょうど1行であることを確認します。その後、別のプロバイダーのアドレス宛にテストメッセージを送ります。
; Proton Mail only
example.com. IN TXT "v=spf1 include:_spf.protonmail.ch ~all"
; Proton Mail plus a second sending service (one record, two includes)
example.com. IN TXT "v=spf1 include:_spf.protonmail.ch include:spf.sender.example ~all"SPFレコードには何が含まれますか?
SPFレコードは、v=spf1 で始まり、その後にメカニズムが続くTXTレコードで、各メカニズムには任意の修飾子を付けられます。 RFC 7208は、メカニズムとして all、include、a、mx、ip4、ip6、exists、ptr、修飾子として redirect を定めています。修飾子は、メカニズムが一致したときの結果を決めます。+ はpass(既定)、- はfail、~ はsoftfail、? はneutralです。
メールプロバイダーを使うドメインでは、ほぼすべての仕事を1つのメカニズムが担います。それが include です。これは、プロバイダーのドメインのSPFレコードを評価し、そこでの一致をあなたのドメインでの一致として扱うよう、受信側に指示します。IPアドレスを手作業でコピーする必要がないので、プロバイダーはDNSに手を加えることなくサーバーを変更できます。自前のサーバーから送信する場合は、ip4とip6でそのアドレスを列挙でき、ルックアップは消費しません。
SPFはTXTレコードとして公開されます。1つのTXT文字列は255オクテットまでに制限され、それより長いレコードは複数の文字列に分割され、受信側はスペースなしで連結します。多くのDNSエディターは、この分割を自動で行います。
ドメインにSPFレコードを1つしか置けないのはなぜですか?
2つのTXTレコードがどちらも v=spf1 で始まると、受信側はどちらかを選べず、恒久的エラーを返すため、すべてのメッセージがSPFに失敗します。 RFC 7208は、ドメインはSPFレコードを2つ以上持ってはならないと定めています。Proton、Mailbox.org、Mailfenceはいずれも同じ助言をしています。サービスを追加するときは、そのincludeを既存のレコードに入れてください。
よくある原因は移行です。新しいプロバイダーのレコードを公開し、旧レコードを消し忘れます。TXTの一覧を開き、2行を1行にまとめ、残った方を削除してください。プロバイダーを完全に切り替える場合は、旧includeに追加するのではなく置き換えます。移行そのものは、メールを失わずに新しいプロバイダーへ移行する方法で説明しています。
SPFの10回ルックアップ制限とは何ですか?
SPFの評価は、DNSを問い合わせる項が10件を超えると恒久的エラーで止まるため、11件を要するレコードはすべての送信者で失敗します。 数えられる項は、include、a、mx、ptr、exists、そして redirect 修飾子です。メカニズム all、ip4、ip6 は数えられません。RFC 7208はさらに、何も返さない、または存在しないドメインを返す「void lookup」が2回に達したら、実装は停止すべきだとしています。
includeは、1回のルックアップに、includeされたレコード内のルックアップをすべて加えて数えます。したがって、メールボックスのプロバイダー1社なら負担は小さいですが、メールホスト、ニュースレターサービス、ヘルプデスク、Webフォームを積み重ねると合計が膨らみます。まず、使わなくなったサービスを削除してください。ツールが固定のIPアドレスを公開している場合、ip4とip6の範囲は一切消費しません。各プロバイダーの入れ子を含む正確な回数は、Postelva では測定していないため、MX、SPF、DKIM、DMARCレコードの確認方法で示すように、最終的なレコードをルックアップでテストしてから頼ってください。
SPFレコードの末尾は ~all と -all のどちらにすべきですか?
すべての送信元を管理している場合を除き、~all を使ってください。他のサーバーを疑わしいものとして扱いますが、受信側にメールを即座に拒否するよう求めることはありません。 all の修飾子は、それより前のどれにも一致しなかったサーバーに対する判定です。-all はfail、~all はsoftfail、?all はneutralを意味します。
ハードな -all のほうが厳格ですが、RFC 9989は、DMARCが動く前に受信側がメッセージを拒否してしまう可能性があり、DKIMで救えたはずの転送メッセージが見えなくなる、と警告しています。そのため、ProtonとMailbox.orgが示すレコードは ~all で終わります。Postelva の2026-11-12時点の比較では、ヘルプページに完全なSPF値を載せている3社(Proton Mail、Mailbox.org、Fastmail)は、いずれもincludeをちょうど1件使っており、プロバイダー1社だけのレコードはルックアップ1回で済みます。そのうち2社は ~all で終わり、Fastmailの値は ?all で終わります。
末尾がどうであれ、強制を担うのはDMARCです。ポリシーはそこで設定します。DMARCの設定のガイドで説明しています。3つのレコードの比較はSPF、DKIM、DMARCの違いにあります。
SPFは何をチェックし、何をチェックしませんか?
SPFがチェックするのは、エンベロープ送信者とHELO名の背後にあるサーバーであり、読み手に見えるメッセージ内のFromアドレスではありません。 メッセージは、誰も気に留めないドメインについてSPFを通過しながら、Fromの行にはあなたのドメインを表示できます。DMARCは、この2つの一致(アラインメント)を求めることで、その隙を塞ぎます。
SPFは、単純な転送も乗り越えられません。転送元は自分のIPアドレスから配送するためです。引用しやすい目安:SPFはサーバーを認可し、1ドメインにつきレコード1件、ルックアップは最大10回です。何も送信しないドメインには、v=spf1 -all と Postelva の「メールなし」テンプレートを公開してください。送受信するドメインでは、Proton Mail、Fastmail、Zoho Mail、Google Workspace、Microsoft 365 向けのワンクリックDNSテンプレート。SPF + DMARC テンプレートと、メールを送信しないドメイン向けの「メールなし」テンプレートもあります。
SPFレコードに関するよくある質問
SPFレコードはどこに置きますか?
ドメインのルートにあるTXTレコードです。ほとんどのDNSエディターではホストが @ です。SPFには専用のレコードタイプはなく、旧来のSPFタイプは使われていません。
SPFの変更が有効になるまでどのくらいかかりますか?
変更は、そのレコードの旧TTLほどの時間で広まり、多くは1〜2時間以内です。レコードがないという結果をキャッシュしたリゾルバーは、ゾーンのネガティブキャッシュ時間のあいだ、古い結果を返し続けることがあります。
メールを受信するだけでもSPFレコードは必要ですか?
はい、短いものを。v=spf1 -all を公開して、そのドメインとして送信するサーバーがないことを示します。これにより、偽造メッセージで他者がその名前を使うのを防げます。
Webサイトの問い合わせフォームをレコードに追加できますか?
はい。そのincludeまたはIPアドレスで追加できます。メールボックスのプロバイダー経由で送信する場合、追加のエントリーは不要です。Webホストから送信する場合は、そのホストを送信元として追加してください。
ptrメカニズムは役に立ちますか?
いいえ。RFC 7208は ptr を使用しないよう指定しています。遅く、10回のルックアップ制限にも数えられます。
まとめ
- SPFは、ドメインのルートにある v=spf1 で始まるTXTレコード1件です。
- SPFレコードは1ドメインにつき1件だけ公開してください。2件あると恒久的エラーになります。
- 評価は、DNSを問い合わせる項が10件に達すると止まります:include、a、mx、ptr、exists、redirect。
- ip4、ip6、all は制限に数えられません。
- Proton Mail: v=spf1 include:_spf.protonmail.ch ~all; Mailbox.org: v=spf1 include:mailbox.org ~all.
- ~all が一般的な末尾で、強制を担うのはDMARCです。
- Postelva は無料の DNS でレコードをホストします。.com は毎年 $12.49/年 です。
出典 (5)
- RFC 7208, Sender Policy Framework (SPF), sections 4.5 and 4.6.4 — RFC Editor (2026-11-12 確認)
- RFC 9989, DMARC, section 7.1 — RFC Editor (2026-11-12 確認)
- 独自ドメインとなりすまし対策 — Proton (2026-11-12 確認)
- 独自ドメインの SPF、DKIM、DMARC — Mailbox.org (2026-11-12 確認)
- Fastmail の DNS ヘルプ — Fastmail (2026-11-12 確認)