SPFメール認証

SPF Fail と SoftFail の違い・対処早見表

ドメイン番人5 分で読めます
目次

この記事でわかること

  • -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 末尾修飾子の強度

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 問い合わせが一時的に失敗した 時間をおいて再確認。設定の問題ではない

間違えやすいのは nonefail の違いです。none は「SPF が無い」、fail は「SPF はあるが、その IP は許可されていない」。前者は設定漏れ、後者は設定の不足で、直す場所が違います。

permerror も要注意で、書式が壊れていると SPF は「失敗」ではなく「評価不能」になります。DMARC からは pass しなかったものとして扱われるため、実質 fail と同じ影響が出ます。

受信側の挙動

-all(Fail): 認証失敗を強く示すシグナル。SPF 単体評価でも spam フォルダ行きの判定に強く影響。

~all(SoftFail): 「許可リスト外だが、拒否までは要請しない」。受信側は spam スコアに加点する程度の扱いが一般的で、配送自体は通る場合が多い。

ただし、DMARC を併用している場合は挙動が変わります

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 への安全な切替手順

  1. DMARC レポート(rua)を 2 週間観察: 認証失敗している正規送信元(マーケツール、CRM、決済通知など)を洗い出す
  2. すべての正規送信元を SPF に include 追加: 漏れがあれば追加(SPF 設定ガイド 参照)
  3. DMARC を p=quarantine に強化: ここで挙動を 1 週間確認
  4. 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 に強化する手順

次の一歩は無料診断から。