Email deliverability, DNS, SPF/DKIM/DMARC
Fix SPF TempError on Outbound Mail Authentication
TempError signals a transient DNS lookup failure during SPF evaluation. Receivers retry but flaky DNS hurts deliverability. Diagnose your nameserver path.
What's happening
TempError is the SPF result code receivers return when DNS resolution of your record (or one of its included records) fails transiently — a SERVFAIL, a timeout, or a DNSSEC validation glitch. RFC 7208 Section 5 instructs receivers to treat it as a soft, retriable failure rather than a permanent rejection.
Unlike PermError, TempError is rarely a problem with the SPF record itself. The record is well-formed and within the lookup limit; something further down the resolution chain (your authoritative nameservers, an included vendor's nameservers, or the receiver's recursive resolver) is failing intermittently.
Receivers handle TempError differently. Gmail logs it but typically defers the message and retries; Microsoft 365 may route the first attempt to junk; strict DMARC policies often treat it as fail. The user-visible symptom is that mail is delayed by minutes to hours, or arrives in spam on the first attempt and inbox on the retry.
Why it matters
Persistent TempError shows up in DMARC aggregate reports as a percentage of messages with spf=temperror — anything above 1-2% indicates a real upstream problem. Microsoft 365 in particular penalizes domains with chronic TempError because it correlates with botnet sending patterns.
Transactional mail (login codes, password resets) is the most affected category — a 5-minute delay on a magic-link email translates to abandonment and support tickets. Outbound notifications from CRM tools that retry less aggressively can be silently dropped.
Compounding effect: TempError can cause DMARC alignment failures on a percentage of mail, which in turn lowers domain reputation in Google Postmaster Tools and contributes to spam-folder placement on mail that did pass auth.
Common causes
- Authoritative nameservers (your domain's NS records) returning SERVFAIL or timing out under load.
- Slow or geographically distant nameservers (a single-region DNS provider answering queries from worldwide receivers).
- DNSSEC validation failures on your zone or on an included vendor's zone.
- An included vendor's SPF record temporarily unresolvable because their nameservers are flapping.
- Receiver-side recursive resolver issues (these are out of your control but show up in your DMARC reports).
- TTL set too low (under 60 seconds) causing constant cache misses and overloading nameservers.
Detect this on your site
Run a quick scan with the Email Checker. The tool surfaces this exact issue with the records and context needed to apply the fix below.
Open Email CheckerHow to fix it
- 1
Quantify the TempError rate
Open your most recent DMARC aggregate report (XML emailed to the rua= address). Count messages with auth_results.spf.result of temperror versus pass. If TempError is above 1% of total volume, escalate. Below 1% is usually receiver-side noise outside your control.
- 2
Test your nameservers from multiple regions
Use dnschecker.org or run dig @8.8.8.8 TXT example.com, dig @1.1.1.1 TXT example.com, and dig @9.9.9.9 TXT example.com from a server in each major region (US, EU, APAC). Any SERVFAIL or timeout indicates a nameserver problem you can fix.
- 3
Check authoritative server response times
Run dig +stats TXT example.com and read the Query time line. Anything over 200ms from a recent recursive resolver is sluggish; over 500ms strongly correlates with TempError. Consider switching to a global anycast DNS provider (Cloudflare DNS, Route 53, NS1, dnsimple).
- 4
Walk every SPF include with dig
For each include in your SPF record, run dig +short TXT include-target.example. Note any that fail or take more than 200ms. Vendor-side problems are common — log a ticket with the ESP if their record consistently TempErrors.
- 5
Verify DNSSEC chain integrity
Run dig +dnssec +cd TXT example.com and confirm the AD bit is present in the response flags. Use dnsviz.net for a visual chain-of-trust check. A broken DNSSEC chain produces SERVFAIL on validating resolvers, which in turn yields TempError.
- 6
Raise TTL and recheck
Bump SPF record TTL from 60-300 seconds to 1800 or 3600 if not already there. Higher TTL means more aggressive caching at recursive resolvers, which directly reduces TempError volume. Re-pull DMARC reports after one week and confirm the rate dropped.
Example
# Test SPF record resolution from major public resolvers for ns in 8.8.8.8 1.1.1.1 9.9.9.9 208.67.222.222; do echo "=== $ns ===" dig @$ns +short TXT example.com done # Confirm DNSSEC AD bit dig +dnssec example.com TXT | grep -E 'flags|status'
Multi-resolver health check for diagnosing intermittent SPF TempError.
Frequently asked
Often the receiver's recursive resolver but DMARC aggregate reports are the only objective signal. If TempError appears in reports from many receivers and clustering by your nameserver region it is your nameservers. If it appears intermittently from one receiver only it is their resolver.
Switch if you are on a single-region or low-tier provider and DMARC reports show consistent TempError above 1%. Cloudflare DNS Route 53 and Google Cloud DNS run global anycast networks with sub-50ms response times worldwide and TempError rates near zero.
Most do but enforcement varies. Gmail and major free providers retry. Strict DMARC reject policies may treat TempError as fail and bounce. Treat persistent TempError as a real deliverability problem not a transient one.
Related fixes
Email deliverability, DNS, SPF/DKIM/DMARC
Fix SPF PermError on Inbound Authentication Checks
Email deliverability, DNS, SPF/DKIM/DMARC
Fix Missing SPF Record on Your Sending Domain
Email deliverability, DNS, SPF/DKIM/DMARC
Fix Broken DNSSEC Chain on Email or Web Domain
Email deliverability, DNS, SPF/DKIM/DMARC
Fix Slow DNS Propagation After a Record Change
Email deliverability, DNS, SPF/DKIM/DMARC
Fix Nameserver Mismatch Between Registrar and DNS Host