One or more "include" mechanisms in your SPF record point to a domain that does not have a valid SPF record or does not resolve in DNS.
Verify the include domain exists and has a valid SPF record, or remove it if the service is no longer used.
When an SPF evaluator encounters an include mechanism, it looks up the SPF record of the included domain. If that domain does not exist, has no SPF record, or returns an error, the include fails. If too many void lookups occur (RFC 7208 recommends a limit of 2), the entire SPF check returns PermError.
A failing include can cause your SPF record to return errors, which means emails from legitimate senders covered by other working includes may also fail authentication. It also wastes one of your 10 DNS lookups on a dead reference.
Check each included domain individually to find the one that does not resolve.
# Check each include domain:
dig +short TXT _spf.google.com
dig +short TXT sendgrid.net
dig +short TXT spf.oldemailservice.com # This one might failDetermine if you still send email through the service associated with the failing include.
If the service is no longer used, remove the include. If it is still used, check with the provider for the correct include domain.
v=spf1 include:_spf.google.com include:spf.oldemailservice.com include:sendgrid.net -allv=spf1 include:_spf.google.com include:sendgrid.net -allVerify the updated SPF record resolves cleanly and all remaining includes are valid.
dig +short TXT yourdomain.com | grep "v=spf1"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.
The most common reasons are: the email service provider changed their SPF include domain, the provider shut down, or there was a typo in the include domain from the start.
The include mechanism returns a "none" result, which is treated as a failed match. If this triggers the void lookup limit, the entire SPF check may return PermError.
RFC 7208 recommends a limit of 2 void lookups (lookups that return no records). Exceeding this limit should result in a PermError, though enforcement varies by receiver.