Your SPF record has a permanent error that prevents it from being evaluated. This can be caused by syntax errors, exceeding the 10 DNS lookup limit, multiple SPF records, or invalid mechanisms.
Fix the syntax error in your SPF record (missing spaces, invalid mechanisms, or exceeding the 10-lookup limit).
A PermError is a permanent, unrecoverable failure in SPF evaluation. Unlike a TempError (which may succeed on retry), a PermError means the SPF record is fundamentally broken and cannot be processed. The receiving server treats the SPF result as a failure.
With a PermError, SPF authentication fails for every single email from your domain. This means DMARC SPF alignment always fails, and your emails are far more likely to be rejected or sent to spam. It is worse than having no SPF record.
Pull your SPF record and look for obvious syntax issues.
dig +short TXT yourdomain.com | grep "v=spf1"Look for these frequent mistakes: missing space between mechanisms, invalid IP format, typos in mechanism names, missing v=spf1 prefix.
v=spf1include:_spf.google.com ip4:192.168.1.0 ~allv=spf1 include:_spf.google.com ip4:192.168.1.0/24 ~allAddress the root cause: merge duplicate records, reduce lookups below 10, fix invalid mechanisms, or correct IP notation.
v=spf1 include:_spf.google.com inlcude:sendgrid.net ip4:10.0.0.1 ~allv=spf1 include:_spf.google.com include:sendgrid.net ip4:10.0.0.1/32 ~allValidate that the record parses without errors, then send a test email and check the Authentication-Results header for spf=pass.
# Send a test email, then check the headers for:
# Authentication-Results: ... spf=pass (sender IP is ...) ...After making changes, use our free scanner to verify the fix is working correctly. DNS changes can take up to 48 hours to propagate, but most propagate within minutes.
A PermError is permanent and means the SPF record itself is broken (syntax error, too many lookups, etc.). A TempError is transient, usually caused by DNS timeouts, and may succeed on retry. PermError always fails; TempError might succeed later.
Yes. If a domain you include via the include mechanism has its own broken SPF record, the PermError propagates up to your record. Check the SPF records of all included domains.
Use an online SPF validation tool or check DMARC aggregate reports. They will typically specify whether the error is due to syntax issues, too many lookups, or a void lookup limit.