Adding a new sender to SPF safely
A short routine for onboarding a new mail vendor: check the lookup budget first, publish second, verify third.
A new vendor sends you a setup page telling you to add an include to your SPF record. That instruction is correct but incomplete. It assumes you have lookup budget to spare and that nothing else about your record matters.
Before you edit
- Count your current lookups. If adding the vendor's include would take you past ten, fix that first, because the new sender would otherwise break every existing one.
- Check whether the vendor also needs DKIM records. Adding SPF alone leaves you dependent on the envelope sender aligning, which for most vendors it does not.
- Decide whether the sender belongs on the root domain at all. Bulk and transactional mail is often cleaner on a dedicated subdomain.
Making the change
Before and after
v=spf1 include:_spf.google.com -all
v=spf1 include:_spf.google.com include:vendor.example.net -allAdd the include before the all mechanism. Anything after all is dead text, because evaluation never reaches it.
After you edit
- Wait for the old record's TTL to expire, then confirm the new record is live from more than one resolver.
- Re-count lookups against the live record, not the one you intended to publish.
- Send a test message through the new service and read the Authentication-Results header on arrival.
- Check the next DMARC aggregate report for the vendor's IPs showing a pass.
Lower the TTL on the record a day before a planned change. A 24-hour TTL turns a one-minute fix into a one-day outage when the edit is wrong.
More on SPF
What SPF actually does
SPF authorises servers, not messages, and it checks the envelope sender rather than the From address your recipient sees. That explains most SPF confusion.
Reading an SPF record, mechanism by mechanism
A walk through every mechanism and modifier you are likely to meet in a real SPF record.
The SPF ten-lookup limit, and how to stay under it
SPF evaluation is capped at ten DNS lookups. Exceed it and the result is permerror, which most receivers treat as a failure, including DMARC.