No SPF record found: what it means and how to add one
What No SPF record found means (the SPF result none), why a lookup can miss a record, and how to publish one SPF record at your domain's root.
On this page
- What the message means
- Why the record is not found
- The record is on the wrong name
- Only the root, or only a subdomain, has one
- The version tag has a typo
- The domain sends no email
- Does it matter for your email?
- How to add an SPF record
- 1. List every service that sends for your domain
- 2. Build one record
- 3. Publish it on the root of your domain
- 4. Wait, then check
- A domain that sends no email
- Next: DMARC
- Sources
No SPF record found means the lookup found no TXT record starting with v=spf1 at the domain name it checked, which the SPF standard calls the result none (RFC 7208 section 4.5 (opens in a new tab)). First make sure the lookup checked the name your mail actually uses. If the record really is missing, list the services that send email for your domain, publish one TXT record on the root of your domain, often shown as @, and check again (SPF record generator). A domain that sends no email can publish v=spf1 -all (Microsoft (opens in a new tab)).
What the message means
Sender Policy Framework (SPF) (opens in a new tab) lets a domain publish, in the Domain Name System (DNS), which hosts may use its name, and receivers test the sending server against that list. The record must be a DNS TXT record (section 3.1 (opens in a new tab)). Receivers look it up at the domain in the MAIL FROM (envelope sender) address of the message (Microsoft (opens in a new tab)), or in the HELO identity (section 4.1 (opens in a new tab)).
From the TXT records at that name, a receiver keeps only those that begin with exactly v=spf1 and discards the rest (section 4.5 (opens in a new tab)). If no record is left, the result is none; if more than one is left, the result is permerror. The result is also none when the domain name does not exist in DNS (NXDOMAIN) (section 4.3 (opens in a new tab)).
A none result means the check completed without errors but reached no conclusion: the receiver has no information at all about whether the sending server is authorized (section 8.1 (opens in a new tab)). For an SPF check that returns none, Microsoft's troubleshooting table (opens in a new tab) lists the likely cause as "No SPF TXT record is published for the sending domain in DNS."
A failed lookup is something else. If the DNS server returns a failure or the query times out, the result is temperror (section 4.4 (opens in a new tab)), a transient error that a later retry may clear without any DNS change (section 2.6.6 (opens in a new tab)).
DemiSignal's check flags a missing SPF record. In its results, a fail means a record is missing or broken, and an error means the DNS lookup did not complete, so run the check again.
Check your domain now
See the SPF, DKIM and DMARC records your domain publishes and what to fix first. Free, no account needed.
Why the record is not found
The record is on the wrong name
An SPF record sits at the exact name it covers, not in a subdomain under that name (RFC 7208 section 3 (opens in a new tab)). A record saved under another host, such as spf.example.com, is not the record for example.com. For your domain itself, Google (opens in a new tab) tells you to enter @ as the host.
Only the root, or only a subdomain, has one
If you use subdomains, each one needs its own SPF record. A record on example.com doesn't cover marketing.example.com (Microsoft (opens in a new tab)). So a lookup of a subdomain can find no record while the root domain has one. Check the exact name you entered before you add anything.
The version tag has a typo
Receivers keep only records that begin with exactly v=spf1 (RFC 7208 section 4.5 (opens in a new tab)). In the standard's own example, a record starting v=spf10 does not match and is discarded. When every record at the name is discarded, the result is none, the same as if nothing were published.
The domain sends no email
Publishing SPF records for domains that send no mail is a well-established best practice (RFC 7208 section 10.1.2 (opens in a new tab)); the last section shows the record.
Does it matter for your email?
Gmail and Yahoo both ask every sender for SPF or DKIM. DomainKeys Identified Mail (DKIM) (opens in a new tab) lets an organization claim some responsibility for a message by associating a domain name with it. Verifying the DKIM signature confirms that the signed content has not changed since it was signed (RFC 6376 section 1.5 (opens in a new tab)).
- Gmail. Since February 1, 2024, Gmail (opens in a new tab) has required all senders to set up SPF or DKIM for their sending domains. Senders of more than 5,000 messages a day to Gmail accounts must set up SPF and DKIM, plus DMARC (opens in a new tab) (Domain-based Message Authentication, Reporting, and Conformance). Messages that aren't authenticated with these methods might be marked as spam or rejected with a
5.7.26error. Your SPF record should include all email senders for your domain, and messages from third-party senders missing from it are more likely to be marked as spam. - Yahoo. Yahoo (opens in a new tab) requires all senders to implement SPF or DKIM at a minimum. Bulk senders must implement both SPF and DKIM, and publish a valid DMARC policy of at least
p=nonethat passes. SPF records allow Yahoo to reject messages from IP addresses that the domain's SPF record does not list.
Email sender requirements sets out the Gmail, Yahoo and Outlook.com rules side by side.
Microsoft (opens in a new tab) notes that SPF alone isn't enough to prevent spoofing of a Microsoft 365 domain, and recommends DKIM and DMARC as well. A DNS finding from DemiSignal's check shows how your domain is set up; it does not show where a particular message landed.
How to add an SPF record
1. List every service that sends for your domain
Your SPF record should include all servers that send email for your domain (Google Workspace (opens in a new tab)). In simple cases that is Google Workspace alone. In others the list can include, for example:
- on-premise mail servers, for example Microsoft Exchange
- services that send automatic email, for example contact forms
- any third-party provider or service that sends email for your domain
For a service you are unsure of, search its help pages for SPF or domain authentication: they name the include to add (SPF record generator). Some services send from their own domain and only need DKIM.
2. Build one record
SPF records always start with v=spf1. For a custom domain in Microsoft 365, the basic syntax is v=spf1, then the valid mail sources, then an enforcement rule (Microsoft (opens in a new tab)). Google's record for a domain that sends only through Google Workspace is:
v=spf1 include:_spf.google.com ~all
Microsoft's record for a domain where Microsoft 365 is the only source of email is:
v=spf1 include:spf.protection.outlook.com -all
If more than one service sends for you, put them all in one record: each domain can have one SPF record, and that record can list additional servers and third parties (About SPF records (opens in a new tab)). DemiSignal's SPF record generator builds the record from the services you pick, with an estimate against the 10 DNS lookup limit.
The two examples end differently: Google recommends ~all, and Microsoft recommends -all for Microsoft 365 domains. SPF record with a hard fail explains the difference.
3. Publish it on the root of your domain
Create the record at your domain registrar or DNS hosting service:
| Field | Value |
|---|---|
| Type | TXT |
| Host | @ for the domain itself |
| Value | your record, for example v=spf1 include:_spf.google.com ~all |
If a TXT record starting with v=spf1 already exists on the root, change that record instead of adding another. A domain can have only one SPF record (RFC 7208 section 3.2 (opens in a new tab)), and two make SPF fail with an error. Some domains require the record string in quotes; check your domain host's help pages. If you send from subdomains too, add a record for each subdomain.
4. Wait, then check
DemiSignal's SPF record generator notes that DNS changes usually show within an hour, and that some providers take up to 48 hours. Google says it can take up to 48 hours for SPF authentication to start working. Then look the domain up with DemiSignal's SPF lookup, which reads public DNS only and counts the record's DNS lookups against the limit of 10, or run the full check.
A domain that sends no email
The standard lets a domain owner publish a record declaring that no host may use the name, for names that are neither used in email addresses nor expected to send mail (RFC 7208 section 2.1 (opens in a new tab)). Doing so for a domain that sends no mail is a well-established best practice (section 10.1.2 (opens in a new tab)).
Microsoft's (opens in a new tab) example for parked domains, owned but not used for email, is this record, which says no one is authorized to send email from the domain:
v=spf1 -all
Each subdomain requires its own SPF record, so the record on the root does not speak for subdomains.
Next: DMARC
SPF alone doesn't protect your From address. SPF checks the server that sent a message, but it breaks when email is forwarded and does not cover the From address people see (SPF record generator). The next step is a DMARC record, so receivers know what to do with email that fails, and you get reports on who sends as your domain. If a check also reports a missing DMARC record, see No DMARC record found.
Sources
- RFC 7208: Sender Policy Framework (SPF), section 1 (opens in a new tab)
- RFC 7208 section 2.1: Publishing Authorization (opens in a new tab)
- RFC 7208 section 2.6.6: Temperror (opens in a new tab)
- RFC 7208 section 3: SPF Records (opens in a new tab)
- RFC 7208 section 3.1: DNS Resource Records (opens in a new tab)
- RFC 7208 section 3.2: Multiple DNS Records (opens in a new tab)
- RFC 7208 section 4.1: Arguments (opens in a new tab)
- RFC 7208 section 4.3: Initial Processing (opens in a new tab)
- RFC 7208 section 4.4: Record Lookup (opens in a new tab)
- RFC 7208 section 4.5: Selecting Records (opens in a new tab)
- RFC 7208 section 8.1: None (opens in a new tab)
- RFC 7208 section 10.1.2: Administrator's Considerations (opens in a new tab)
- RFC 6376: DomainKeys Identified Mail (DKIM) Signatures, section 1 (opens in a new tab)
- RFC 6376 section 1.5: Data Integrity (opens in a new tab)
- RFC 9989 (RFC Editor information page) (opens in a new tab)
- Microsoft: Set up SPF to identify valid email sources for your Microsoft 365 domain (opens in a new tab)
- Microsoft: Troubleshoot email authentication in Microsoft 365 (opens in a new tab)
- Google Workspace: Set up SPF (opens in a new tab)
- Google Workspace: About SPF records (opens in a new tab)
- Google: Email sender guidelines (opens in a new tab)
- Yahoo: Sender best practices (opens in a new tab)
- DemiSignal: SPF, DKIM and DMARC check
- DemiSignal: SPF record generator
- DemiSignal: SPF record lookup
- DemiSignal: No DMARC record found
- DemiSignal: SPF record with a hard fail
- DemiSignal: Email sender requirements
Tools for this
-
SPF, DKIM and DMARC check
Check the email records a domain publishes today and see what to fix first.
-
SPF record generator
Build an SPF record for the services that send your email.
Frequently asked questions
What does No SPF record found mean?
The lookup found no TXT record starting with v=spf1 at the name it checked, which SPF calls the result none. Receivers then have no SPF information about whether the sending server is authorized.
Do I need an SPF record?
Gmail and Yahoo require every sender to use SPF or DKIM. Both require bulk senders to use SPF, DKIM and DMARC; at Gmail, bulk means more than 5,000 messages a day to Gmail accounts.
What SPF record should a domain that sends no email publish?
Microsoft's example for parked domains is v=spf1 -all, which authorizes no one to send. Each subdomain needs its own SPF record.
Check your domain now
See the SPF, DKIM and DMARC records your domain publishes and what to fix first. Free, no account needed.