What does “spf=permerror” mean?
Your SPF record could not be read, so it protects nothing.
Last read from the sources at the foot of this page.
spf=permerror
What does it mean?
PermError is a permanent error: every message gets the same result until the record is fixed. For DMARC it does not count as an SPF pass.
What exactly does the source say?
permerror: A permanent error occurred. For example, the domain has a badly formatted SPF record.
Why would a small firm see it?
A second SPF record added for a new service, an include for every tool the firm ever tried, or an include that points at a name that no longer exists.
How do I fix it?
- Look up the TXT records at your domain.Count the ones that start v=spf1: there must be one.
- If there are two, put every service from both into one record, then delete the other.
- Check the record again after the change.
Keep one SPF record. Add the service inside the one record you have, before its last word, and keep every service already in it. A second SPF record makes the check fail for every message.
An SPF record may make at most 10 DNS lookups. Each include counts, and so do the includes inside it. Past 10 the check fails, so take out services you no longer use before adding a new one.
What else do the sources say?
spf=<pass (IP address)|fail (IP address)|softfail (reason)|neutral|none|temperror|permerror> smtp.mailfrom=<domain>
A "permerror" result means the domain's published records could not be correctly interpreted.
SPF implementations MUST limit the total number of those terms to 10 during SPF evaluation, to avoid unreasonable load on the DNS. If this limit is exceeded, the implementation MUST return "permerror".
If the resultant record set includes more than one record, check_host() produces the "permerror" result.
SPF implementations SHOULD limit "void lookups" to two. An implementation MAY choose to make such a limit configurable. In this case, a default of two is RECOMMENDED. Exceeding the limit produces a "permerror" result.
Where does this come from?
- Microsoft: Email message headers in Microsoft 365learn.microsoft.comRead 14 October 2026
- RFC 7208, Sender Policy Frameworkrfc-editor.orgRead 14 October 2026
See what is open before anyone else does.
We read from outside, find each way in first, and show it with a check anyone can re-run. No access, nothing tested, no obligation.
- We read your firm from outside.
- You see what is open, with the proof for the lead finding.
- If it is worth it, you order.
What happens if you go ahead. More at getleaktrace.com/see-it-first/.
Read the transcript
- 72 hours. One domain. Nothing to install.
- Discover. Every way in, found from outside.
- Validate. Every finding, proven. Dated and checkable by anyone.
- Close. Forged email: one click per step, where we reach your DNS host and you approve it.
- You get the fix for the rest, step by step, and we re-check until it is closed.
- Monitor. On monitoring: email settings, look-alikes and new host names re-checked every hour. Alerts within the hour.
- Every paid assessment is human-verified before release.
- The AI defense layer for businesses. getleaktrace.com/see-it-first/