Rules that cause trouble
A domain must have a single SPF record; two records give a permanent error. Evaluation is limited to ten DNS-querying mechanisms, and each include: for a newsletter, CRM or helpdesk tool uses some, so adding services can push a record over the limit. The record ends in a qualifier such as ~all (soft fail) or -all (fail) that says what to do with other senders.
Why it matters on a client site
A contact form, a shop and an invoicing system often send email as the client’s domain. Any that is missing from the SPF record may land in spam or be rejected, especially when a strict DMARC policy is in force.
An example
example.com. TXT "v=spf1 mx include:_spf.mailhost.example include:spf.newsletter.example -all": mx allows the domain’s own mail servers, each include: allows one service and -all rejects every other sender. Each include:, a, mx, exists and redirect counts toward the limit of ten DNS lookups, including the lookups inside the included records. Check the count whenever a service is added, and run dig TXT example.com +short to confirm there is one v=spf1 record.
What to check
That there is exactly one SPF record, that it includes every real sending service and that it is merged, not duplicated, when a new service is added.
Sources
Read on . Standards and vendor pages change; confirm the current text before you rely on it.
- RFC 7208, Sender Policy Framework (SPF) (www.rfc-editor.org)