SPF Softfail Explained: What ~all Means and When It's Fine

JSsec Security TeamPublishedApril 20, 2026TopicEmail Authentication

Threat analysts and researchers sharing practical guidance on phishing response, digital risk monitoring, and incident workflows.

SPF softfail is one of the most misread signals in email authentication. Many tools flag it as a problem. It is not always one.

Understanding what softfail actually does — and when it is appropriate — is important before changing anything in your DNS.


What SPF softfail means

An SPF record ends with a catch-all mechanism that tells receiving mail servers what to do when an email arrives from a sender not listed in the record. There are four options:

QualifierMechanismMeaning
++allPass — accept all senders (insecure, rarely used)
~~allSoftfail — accept but flag as suspicious
--allFail — reject senders not in the record
??allNeutral — make no assertion

When your SPF record ends with ~all, any email from a server not listed in the record is delivered but marked as a softfail. Receiving mail servers may use this flag to adjust spam scoring, but they are not required to reject the message.


Why softfail exists

Softfail was designed as a transition mechanism, not a permanent weakness.

When an organisation first publishes an SPF record, they often do not have a complete picture of every system that sends email on their behalf — third-party marketing platforms, ticketing systems, CRM tools, automated notifications, and so on.

Setting ~all during this discovery period allows legitimate mail to keep flowing while the organisation identifies all sending sources. It prevents broken delivery caused by an incomplete record.


When softfail is appropriate

Softfail makes sense in several situations:

  • During initial SPF deployment — you are still auditing your sending services and do not yet want to risk rejecting legitimate mail
  • Complex sending environments — many systems send on your behalf and your record changes frequently; softfail provides a safety margin while the record stabilises
  • Before moving DMARC to enforcement — if your DMARC policy is p=none or p=quarantine, the practical difference between softfail and hardfail is small; changing SPF before DMARC enforcement is ready adds risk without benefit

When softfail is a problem

Softfail becomes a concern when it is permanent rather than transitional.

If your DMARC policy is p=reject and you want strong enforcement against spoofing, your SPF record should ideally end with -all to make the rejection signal unambiguous. Some receiving mail servers also have configurations that treat a DMARC pass differently depending on whether the underlying SPF result was a fail or a softfail.

The other scenario where softfail causes issues is when it is used with no DMARC record at all. Without DMARC, the softfail signal from SPF is advisory only — receiving servers vary widely in how much weight they give it.


The right approach

Rather than treating softfail as something to fix immediately, treat it as a signal to investigate:

  1. Check your DMARC policy — if you are at p=reject, review whether all your legitimate senders are listed in SPF and whether changing to -all would affect delivery
  2. Audit your sending sources — use DMARC aggregate reports (rua) to identify all systems sending as your domain before tightening SPF
  3. Move deliberately — change ~all to -all only once you are confident your SPF record is complete and your DMARC policy is enforced

Rushing from softfail to hardfail without a complete picture of your sending environment is one of the most common causes of broken email delivery.


Summary

Softfail (~all)Hardfail (-all)
Non-listed sendersDelivered, may be flaggedRejected
Risk of broken deliveryLowHigher if record is incomplete
Appropriate whenAuditing senders, DMARC not yet enforcedRecord is complete, DMARC at p=reject
Protection against spoofingPartial — relies on recipient handlingStronger — instructs rejection

Softfail is not a misconfiguration. It is a deliberate posture that is correct in many environments. What matters is whether it is intentional, whether it is paired with a DMARC record, and whether there is a plan to move to stricter enforcement once the sending environment is understood.

If you are unsure whether your current SPF and DMARC configuration is appropriate for your risk level, JSsec can review it.