// how to fix
SPF ends with +all or ?all (too permissive)
An SPF record ending with +all lets the whole internet send as you, and ?all protects nothing. Replace the ending with ~all or -all.
What it means
An SPF record lists the servers allowed to send email for your domain, and ends with a rule for all other servers. That last part is the all mechanism, and the symbol before it decides what happens:
-all(fail): other servers are not allowed.~all(soft fail): other servers are suspicious.?all(neutral): no opinion about other servers.+all(pass), or justall: every server in the world is allowed.
For example, this record looks fine at first sight but authorises everyone:
v=spf1 include:_spf.google.com +all
Why it matters
- With
+all, a spammer's server passes SPF for your domain. Your record no longer protects you, and receivers see it as a sign of careless setup. - With
?all, SPF gives no useful result for unknown servers, so it adds nothing against spoofing. - Some spam filters add points to emails from domains with these endings.
These endings are usually added "to make things work" when an email was failing SPF. The real fix is to list the missing sender.
How to check
Scan your domain at /domain-scanner to see your SPF record. Or send a test email to your address on the home page (/): the SPF section shows the record used.
How to fix it
- List every service that sends email for you: your mailbox provider, newsletter tool, online shop, CRM, invoicing tool, website contact form, your own servers.
- Make sure each one is in the record, with the
include:value from its help pages or anip4:for your own server. - Replace the ending at your DNS provider. Edit the existing TXT record; do not create a second SPF record.
Safe starting point:
v=spf1 include:_spf.google.com include:spf.newsletter-example.com ~all
Once you are sure the list is complete:
v=spf1 include:_spf.google.com include:spf.newsletter-example.com -all
Which one to choose?
~allis a good choice while you are still finding all your senders, and works well with DMARC.-allis the strictest. Use it once your DMARC reports show that all your real senders pass.- For a domain that never sends email:
v=spf1 -all.
Watch for problems after the change
If a forgotten service was relying on +all, its emails will now fail SPF. DMARC aggregate reports are the easiest way to spot it: they show every IP sending with your domain and whether it passed. The paid dashboard's DMARC monitoring reads these reports for you.
Check that it is fixed
Wait for DNS to update, usually a few minutes to a few hours. Run /domain-scanner again: the record should end with ~all or -all. Then send a test from each of your sending services to the home page address and check that SPF still passes for all of them.
Check that it is fixed
DNS changes can take from a few minutes to a few hours. Then send a new test email or scan your domain again.
Related guides
- No SPF record on your domainYour domain does not say which servers may send email for it. Add one TXT record and receivers can tell your real emails from fakes.
- SPF error: too many DNS lookups (permerror)SPF allows at most 10 DNS lookups. Above that, the whole record breaks and receivers treat it as invalid. Here is how to slim it down.
- Several SPF records on one domainA domain must have only one SPF record. With two or more, SPF breaks for every email. Merge them into a single line.
- SPF fails: the sending server is not authorizedYour domain has an SPF record, but the server that sent your email is not in it. Find which service sent the email and add it.
- No DKIM signature on your emailsDKIM adds a digital signature that proves an email really comes from your domain. Turn it on in your email provider and publish its key in DNS.