Without SPF, any server can claim to send as your domain. With a broken SPF record, legitimate mail fails authentication and lands in spam. SPF is also one of the two alignment paths DMARC relies on.
The metrics that matter#
- Authentication pass rate: share of mail passing SPF, DKIM, and DMARC alignment. Healthy: 99% or higher.
- Spam complaint rate: Gmail enforces at 0.3%; stay under 0.1%.
- Hard bounce rate: under 2%; above 5% triggers platform reviews.
- Inbox placement: above 90% across major providers via seed tests.
- Engagement: click and reply rates by segment; opens are unreliable after Mail Privacy Protection.
Where to read them#
- Google Postmaster Tools for Gmail domain reputation, spam rate, and authentication.
- Microsoft SNDS and JMRP for Outlook.com IP reputation and complaints.
- Your ESP's delivery and bounce reports.
- DMARC aggregate reports for authentication by source.
Improving the numbers#
- Inventory every service that sends mail as your domain: your ESP, CRM, helpdesk, billing system, and internal mail server.
- Collect each vendor's SPF include mechanism (for example include:_spf.google.com) from their documentation.
- Publish one TXT record at the root of the domain starting with v=spf1, listing each include, then ending with ~all (softfail) while testing.
- Verify with a lookup tool that the record resolves and stays under 10 DNS lookups and 255 characters per string.
- Move to -all once DMARC reports confirm all legitimate sources pass.
example.com. IN TXT "v=spf1 include:_spf.google.com include:sendgrid.net ip4:203.0.113.10 -all"Frequently asked questions#
Does SPF alone stop spoofing?
No. SPF validates the envelope sender, which spoofers can set to their own domain while forging the visible From. DMARC closes that gap by requiring alignment.
What does ~all versus -all mean?
~all is softfail: receivers mark but usually accept. -all is hardfail: receivers may reject. Start with ~all, graduate to -all once DMARC data is clean.
How do I fix 'too many DNS lookups'?
Remove unused includes, replace includes with ip4/ip6 mechanisms where vendors publish static ranges, or use an SPF flattening service.