SPF Fail と SoftFail の違い・対処早見表
目次
この記事でわかること
-all(Fail)と~all(SoftFail)が受信側に対してどう違うか- SPF の判定結果 7 種類(pass / fail / softfail / neutral / none / permerror / temperror)の見分け方
- Gmail / Outlook での実質的な扱いの差
- DMARC を併用すると
~allでも実質-all相当になる仕組み - 安全に
~all→-allへ切り替える手順 - 「softfail のまま放置してよいか」への答え(よくある質問)
本記事は修飾子どうしの違いと切替判断を扱います。いま実際に spf=softfail が出ていて原因を突き止めたい場合は、SPF softfail の原因と対処で送信元 IP からの切り分け手順を解説しています。
SPF 末尾修飾子の意味
SPF レコードの末尾には必ず ?all ~all -all +all のいずれかが付きます。これは「許可リストに無い IP から送られたメールをどう扱うか」を示すヒントです。
| 修飾子 | 意味 | 推奨度 |
|---|---|---|
+all |
全許可 | ❌ 絶対 NG |
?all |
Neutral(判定保留) | ❌ 意味薄い |
~all |
SoftFail(疑わしいが受信側判断) | ⚠️ 過渡期 |
-all |
Fail(拒否を強く推奨) | ✅ 推奨 |
SPF の判定結果は 7 種類ある
末尾修飾子は「送信側がどう宣言するか」ですが、実際にメールが届いたときに受信側が出す判定結果は別の語彙です。ヘッダで見かける値は次の 7 つで、softfail はそのうちの 1 つにすぎません。
| 判定結果 | 何が起きたか | 送信側がすべきこと |
|---|---|---|
pass |
送信元 IP が SPF に含まれていた | なし |
fail |
SPF に無い IP から送られ、末尾が -all |
送信元を SPF に追加する |
softfail |
SPF に無い IP から送られ、末尾が ~all |
原因による(下記) |
neutral |
末尾が ?all で、判定を放棄している |
~all か -all にする |
none |
そのドメインに SPF レコードが無い | SPF を設定する |
permerror |
SPF の書式エラー。10 ルックアップ超過が典型 | 10 個制限の対処へ |
temperror |
DNS 問い合わせが一時的に失敗した | 時間をおいて再確認。設定の問題ではない |
間違えやすいのは none と fail の違いです。none は「SPF が無い」、fail は「SPF はあるが、その IP は許可されていない」。前者は設定漏れ、後者は設定の不足で、直す場所が違います。
permerror も要注意で、書式が壊れていると SPF は「失敗」ではなく「評価不能」になります。DMARC からは pass しなかったものとして扱われるため、実質 fail と同じ影響が出ます。
受信側の挙動
-all(Fail): 認証失敗を強く示すシグナル。SPF 単体評価でも spam フォルダ行きの判定に強く影響。
~all(SoftFail): 「許可リスト外だが、拒否までは要請しない」。受信側は spam スコアに加点する程度の扱いが一般的で、配送自体は通る場合が多い。
ただし、DMARC を併用している場合は挙動が変わります。
DMARC は ~all も -all も「SPF アラインメント fail」として同等に扱います。つまり DMARC p=reject が効いている場合、~all でも実質 -all 相当になります。逆に DMARC が p=none なら ~all は実質ほぼ意味なし。
どちらを使うべきか
- DMARC
p=rejectが運用中:~allでも-allでも実質同じ。ただし将来の DMARC ポリシー後退や、SPF 単独評価を行う一部古いメールサーバへの配慮として-all推奨 - DMARC
p=none/ 未設定:~allは実質的にほぼ機能しない。-allに設定する必要がある - DMARC 段階強化中: SPF も
~all→-allに同時に進めるのが整合的
~all → -all への安全な切替手順
- DMARC レポート(rua)を 2 週間観察: 認証失敗している正規送信元(マーケツール、CRM、決済通知など)を洗い出す
- すべての正規送信元を SPF に include 追加: 漏れがあれば追加(SPF 設定ガイド 参照)
- DMARC を
p=quarantineに強化: ここで挙動を 1 週間確認 - SPF を
-allに切替: 同時に DMARC をp=rejectに進める
逆順に進めない(先に -all だけ切替えると正規メールが弾かれます)。
よくある質問
softfail が出ていますが、放置して問題ありませんか
原因によります。 転送されたメールや、第三者が勝手に自社ドメインを騙って送ったメールが softfail になるのは正常な動作で、~all のままでも構いません。一方、自社が実際に使っている送信サービスが SPF に書かれていないために softfail になっているなら、それは設定漏れで、放置すると迷惑メール判定が増えます。切り分けはSPF softfail の原因と対処を参照してください。
~all のままでもメールは届きますか
多くの場合は届きます。softfail は「拒否してよい」ではなく「疑わしいので受信側の判断に任せる」という宣言だからです。ただし受信側で迷惑メールスコアに加点されるため、他の要因(本文の内容、送信 IP の評判)と重なると迷惑メールフォルダに入ります。
DMARC を設定していれば ~all でも大丈夫ですか
DMARC のポリシー次第です。 p=reject / p=quarantine が効いていれば、DMARC は ~all も -all も同じ「SPF アラインメント fail」として扱うため、実質的な差はありません。逆に p=none のままだと ~all はほとんど機能しません。上の「どちらを使うべきか」を参照してください。
受信したメールが softfail かどうかは、どこで分かりますか
メールヘッダの Received-SPF: または Authentication-Results: に判定結果が入っています。読み方はAuthentication-Results ヘッダの読み方とReceived-SPF ヘッダの読み方で解説しています。
-all にしたら自社のメールが届かなくなりました
送信元をすべて SPF に書き切れていない状態で -all にすると起こります。 上の切替手順のとおり、まず DMARC のレポートで送信元を洗い出してから切り替えてください。急いで戻す場合は ~all に戻せば、判定は softfail に緩みます。
まずは現状を把握しましょう
自社の SPF レコード末尾が ~all のままになっていないか、無料のドメイン診断で確認できます。判断に迷う場合はお問い合わせからご相談ください。
関連記事: SPF 設定ガイド / SPF include 10 個制限の対処 / DMARC ポリシーを quarantine に強化する手順