Suped

Should SPF hardfail be enforced if DMARC is in place?

Published 31 Jul 2025
Updated 20 Oct 2026
11 min read
Summarize with
SPF hardfail (-all) and DMARC enforcement for active sending domains.
Updated on 20 Oct 2026: We clarified SPF hardfail handling with DMARC and added steps for diagnosing early SMTP rejections.
No, SPF hardfail is not required for DMARC enforcement. For active sending domains, receivers should evaluate DKIM and DMARC before rejecting solely on SPF fail. Normal spam and abuse filtering still applies after a DMARC pass.
Publishing -all is a separate choice. For most active sending domains using DMARC, ~all reduces the risk of early SPF-only rejection without changing the DMARC pass or fail test. -all remains appropriate for domains that send no email and for deliberate cases where the operator accepts the delivery risk.
If SPF fails against a record ending in -all but an aligned DKIM signature passes, DMARC passes. Rejecting at the SMTP MAIL FROM stage prevents that later result from being calculated, which is why SPF fail alone should not override an eventual DMARC pass.
Suped's DMARC monitoring separates sources that pass through SPF, sources that pass through DKIM, and sources that fail alignment. That report data supports sender inventory work; combine it with SMTP bounce logs because aggregate reports cannot reveal messages rejected before DATA.

How receivers should handle SPF hardfail

A receiver should delay any DMARC-based disposition until DMARC can be evaluated. SPF checks the envelope sender during the SMTP transaction. DMARC evaluates the visible From domain after the headers and signed message content are available.
  1. Do not reject early solely because SPF returned fail. A valid aligned DKIM signature can still make DMARC pass.
  2. Use SPF fail as a risk signal, especially when DKIM is missing, invalid, or unaligned.
  3. Calculate DMARC after authentication results are available, then consider the published policy alongside local filtering when DMARC fails.
  4. Continue local filtering because a DMARC pass confirms domain authorization, not message safety or inbox placement.
The term "hardfail" (or "hard fail") sounds like a mandatory rejection instruction, but RFC 7208 calls the result "fail" and leaves disposition to receiver policy. It means the connecting IP is not authorized for the SPF identity. That identity is normally the envelope sender, not necessarily the visible From domain the recipient sees. SPF softfail (~all) is a weaker statement that the host is probably unauthorized; receivers should not reject solely on that result.
DMARC adds visible-domain protection through identifier alignment. It passes when either SPF passes for an aligned MAIL FROM domain or DKIM passes for an aligned signing domain. SPF often fails after forwarding or relaying, while DKIM can survive when the signed headers and body remain unchanged. Mailing-list modifications can still break DKIM.

SPF result

DKIM result

DMARC result

Receiver action

Fail or softfail
Aligned pass
Pass
Continue local filtering
Fail or softfail
Fail or unaligned
Fail
Apply DMARC and local policy
Pass, unaligned
Fail or unaligned
Fail
Apply DMARC and local policy
Aligned pass
Fail or unaligned
Pass
Continue local filtering
Aligned pass
Aligned pass
Pass
Continue local filtering
How SPF and DKIM results affect DMARC.

Why SPF hardfail is not a DMARC policy layer

SPF checks whether the connecting IP is permitted to send for an SMTP identity. DMARC uses the SPF-authenticated RFC5321 MAIL FROM domain, which later appears in Return-Path. A separate HELO or EHLO pass does not satisfy DMARC. When MAIL FROM is empty, SPF constructs its MAIL FROM identity using postmaster and the HELO domain; that domain can support DMARC if SPF passes with identifier alignment. DMARC compares the authenticated MAIL FROM or DKIM signing domain with the RFC5322 From domain shown to the recipient.
That sequence creates a timing problem. At the MAIL FROM stage, the receiver has not seen the header From domain, DKIM signature, or body hash. It cannot make a DMARC decision. A rejection on SPF hardfail at that stage is an SPF-only local-policy decision.
SPF, DKIM, and DMARC checks before the receiver chooses a policy action.
SPF, DKIM, and DMARC checks before the receiver chooses a policy action.
SPF hardfail first
  1. The receiver can reject before headers, DKIM, and DMARC are evaluated.
  2. Forwarding can make SPF fail. A vendor bounce domain can pass SPF without DMARC alignment.
  3. A valid DKIM-authenticated message can be blocked before its aligned signature is checked.
DMARC after authentication
  1. The receiver has the visible From domain plus SPF and DKIM results before calculating DMARC.
  2. The domain owner publishes none, quarantine, or reject as the requested handling for DMARC failure.
  3. An aligned DKIM pass can preserve DMARC authentication when SPF fails after a routing change.
Publishing an SPF record and forcing SPF-only rejection are separate decisions. A domain owner can publish -all while receivers retain discretion over how they handle the resulting fail. The domain owner should still account for receivers that reject early.

What RFC 9989 says about -all

RFC 9989 is the current DMARC specification and replaces RFC 7489. Section 7.1 keeps the operational warning about SPF hardfail: because SPF can run before message content is transmitted, a receiver can reject a message before DMARC processing and before an aligned DKIM signature can be considered.
DMARC does not give fail, softfail, neutral, or none different paths to a pass. Only an SPF pass for a MAIL FROM domain with identifier alignment can support a DMARC pass. Any aligned DKIM pass can support DMARC independently of the SPF result.
  1. SPF fail and softfail both fail the SPF side of DMARC.
  2. An unaligned SPF pass also cannot support a DMARC pass.
  3. An aligned DKIM pass is enough for DMARC, even when SPF fails.
  4. Final handling remains receiver policy, even after DMARC passes.
Changing -all to ~all does not change the DMARC pass or fail test. The endings still express different SPF authorization statements and can produce different local filtering decisions, especially at receivers that do not evaluate DMARC.
Publishing p=none requests no DMARC quarantine or rejection; it does not disable SPF checks or receiver filtering. Configure rua to request aggregate reports. Using ~all with p=reject is valid: neither SPF fail nor softfail supplies a DMARC pass, so either result still needs an aligned DKIM pass.
Do not confuse p=reject with strict alignment. The aspf=s and adkim=s tags require exact domain matches for their respective methods. Relaxed alignment is the default and permits domains sharing the same Organizational Domain. Either mode still needs only one passing method with identifier alignment.

When -all makes sense

For most active sending domains with DMARC, ~all is the safer default. Receivers should not reject solely on softfail, allowing DKIM and DMARC evaluation without changing the DMARC outcome for mail that does not pass SPF. Consider -all on an active domain only when the source inventory is complete, all important streams have aligned DKIM, and the delivery risk is understood.
Alternative SPF records, publish only one per domaindns
example.com. TXT "v=spf1 include:send.example.net ~all" example.com. TXT "v=spf1 include:send.example.net -all" unused.example. TXT "v=spf1 -all"
The first two records are alternatives: publish only one SPF record at example.com and replace send.example.net with your sender's documented include. SPF records do not inherit to subdomains. Check the actual MAIL FROM domain before changing the apex record.
SPF ending choices
Choose the ending based on mail use and the risk of early SPF-only rejection.
Active sending domain
~all
Use softfail with DMARC so aligned DKIM can be evaluated when SPF fails.
Controlled exception
-all
Use hardfail only after testing and accepting the early-rejection risk.
No-mail domain
-all
Use hardfail with a reject DMARC policy when the domain sends no email.
Unknown sources
~all
Keep softfail while legitimate senders and authentication gaps are identified.
Hardfail often causes trouble when an old SPF record remains in DNS after a sender or vendor changes. The record still says fail, but the current mail flow no longer matches the authorization list. Aggregate reports and bounce logs should be checked after every sending-platform migration.
A domain that sends no mail is the clear exception. Publish an SPF record that authorizes no senders and pair it with DMARC reject. M3AAWG email authentication guidance explicitly permits preemptive SPF rejection for v=spf1 -all, which declares no authorized senders. Suped's record generator can produce the DMARC TXT syntax, which should still be reviewed before publication.
No-mail domain recordsdns
example.com. TXT "v=spf1 -all" _dmarc.example.com. TXT "v=DMARC1; p=reject; rua=mailto:dmarc@example.com"

Why DKIM often carries the DMARC pass

Many sending platforms use their own envelope sender domain for bounce handling. SPF can pass for the platform's domain without having identifier alignment with the brand's visible From domain. The message then depends on aligned DKIM for a DMARC pass. That result is normal.
The mail path can be legitimate even when SPF does not authenticate the domain the recipient sees. DKIM lets the sender authenticate the visible brand domain while the bounce domain belongs to the sending platform. DKIM also survives simple forwarding when intermediaries do not alter signed content.
Audit the visible From domain's DMARC result and identify whether the pass came through SPF, DKIM, or both. An isolated SPF pass does not help DMARC when its authenticated domain lacks identifier alignment.
  1. An aligned SPF-only pass supports DMARC, but it requires an authorized connecting IP and a MAIL FROM domain with identifier alignment.
  2. An aligned DKIM-only pass supports DMARC when the signature validates.
  3. Passing through both methods gives legitimate mail another authentication path if one method later fails.
  4. If neither method passes with alignment, investigate the source and consider the DMARC policy alongside local filtering.
?

What's your domain score?

Deep-scan SPF, DKIM & DMARC records for email deliverability and security issues.

A domain health check shows SPF, DKIM, and DMARC posture together. For a focused record parse, use Suped's DMARC checker, then compare the DNS record with real aggregate reports.
DMARC record detail view showing SPF, DKIM, DMARC, rDNS diagnostics, and DNS records
Suped's product maps authentication failures to sending sources, flags missing DKIM and SPF lookup errors, and provides remediation steps. This makes it possible to fix legitimate sources before changing DMARC policy or the SPF ending.

How to set policy without breaking mail

Use DMARC data to guide rollout. Start with p=none and a working rua reporting destination, identify legitimate sources, fix DKIM and SPF coverage, then move DMARC toward quarantine or reject. The SPF ending is part of the DNS configuration, but it should not be the main enforcement control.
  1. Inventory every system that sends with the domain in its visible From address. Review a representative sending cycle, including infrequent billing and forwarded mail.
  2. Enable aligned DKIM for each source that supports custom signing. Domains using p=reject must not rely solely on SPF for a DMARC pass.
  3. Remove stale SPF mechanisms and keep evaluated DNS-lookup terms within the limit of 10, including nested includes.
  4. Move DMARC from monitoring to quarantine or reject only after legitimate failures are explained. Test mailing-list traffic because list modifications can break DKIM.
  5. Review the forwarding failure guide when SPF loses alignment after recipient-side forwarding.
For a refresher on the standards, see SPF, DKIM, and DMARC. The important distinction here is that DMARC evaluates authorization for the visible sender domain, while final delivery remains receiver policy.
For an active sending domain, use SPF softfail during discovery and as the usual DMARC-era default. Use hardfail only after testing a specific need, and enforce DMARC after aggregate reports show that legitimate mail has reliable alignment.

How to diagnose SPF hardfail rejections

Start with the sending server's SMTP logs or bounce response. A 550 5.7.1 status alone does not prove SPF caused the rejection; read the diagnostic text and identify whether it happened before DATA or after message content was transmitted.
  1. Identify the sending IP and actual MAIL FROM domain. An SPF change at the visible From domain has no effect when the envelope sender uses a different domain.
  2. Check the SPF result for that identity. Multiple SPF records or an exceeded lookup limit produce permerror, not hardfail; changing -all to ~all does not fix those errors.
  3. For delivered test messages, inspect the receiving system's trusted Authentication-Results header. Compare spf and smtp.mailfrom with dkim and header.d, then check dmarc and header.from.
  4. If the rejection happened before DATA, use SMTP logs to investigate. Those messages never enter DMARC aggregate reports because the receiver has not received the visible From domain.
Correct a missing authorization only for a confirmed legitimate sender using that MAIL FROM domain. If forwarding caused the SPF failure, adding every forwarder to SPF is not a suitable fix. Test aligned DKIM and receiver handling instead. Change the SPF ending separately from the DMARC policy, allow for the existing DNS TTL, and retest the affected route.

Views from the trenches

Best practices
Treat SPF hardfail as a risk signal, then calculate DMARC after DKIM is fully checked.
Use softfail while sender discovery is active, then document any stricter choice.
Rely on aligned DKIM for platform mail that uses a separate envelope sender domain.
Review aggregate reports before policy changes, especially after vendor migrations.
Common pitfalls
Rejecting at MAIL FROM can block aligned DKIM before the DMARC check can run at all.
Copied SPF records with hardfail often remain in DNS after a sending platform changes.
Assuming every sender supports a custom bounce domain creates false SPF expectations in reports.
Treating DMARC quarantine as exact handling ignores receiver policy differences.
Expert tips
For non-sending domains, combine SPF hardfail with DMARC reject and aggregate reports.
Check SMTP bounce logs because messages rejected before DATA never enter DMARC reports.
Check whether each DMARC pass came through SPF or DKIM before changing DNS policy.
Document sender ownership so platform migrations do not leave obsolete SPF includes.

Marketer view

Marketer from Email Geeks says rejecting at MAIL FROM prevents DMARC validation because the visible From domain has not been received yet.
2023-10-20 - Email Geeks

Marketer view

Marketer from Email Geeks says receivers should consider an aligned DKIM pass before acting on SPF fail when DMARC applies.
2023-10-21 - Email Geeks

Frequently asked questions

No. SPF fail says the client is not authorized for the checked SPF identity, but the SPF standard leaves disposition to receiver policy. When DMARC applies, receivers should avoid rejecting before an aligned DKIM result can be evaluated.

Yes. DMARC passes through DKIM when a valid DKIM signing domain has identifier alignment with the visible From domain, regardless of the SPF fail result.

Use softfail for most active sending domains protected by DMARC. Use hardfail for domains that send no email, or as a tested exception when aligned DKIM covers legitimate mail and the early-rejection risk is accepted.

No. The SPF-authenticated MAIL FROM domain must have identifier alignment with the visible From domain. An SPF pass for an unrelated bounce domain does not support a DMARC pass.

Many sending platforms use their own envelope sender domain for bounce handling. SPF can pass for that domain without helping DMARC for the visible From domain, so aligned DKIM becomes the important path.

If DKIM is missing or fails and SPF does not produce an aligned pass, DMARC fails. The receiver should apply the domain's DMARC policy and its own abuse filtering.
DMARC monitoring

Start monitoring your DMARC reports today

Suped DMARC platform dashboard
What you'll get with Suped
Real-time DMARC report monitoring and analysis
Automated alerts for authentication failures
Clear recommendations to improve email deliverability
Protection against phishing and domain spoofing