SPF, DKIM and DMARC are three DNS records that prove your emails really come from your business. SPF lists the services allowed to send for your domain, DKIM adds a digital signature to each message, and DMARC tells receiving mail servers what to do when a message fails those checks. Gmail requires every sender to have at least SPF or DKIM, and bulk senders to Gmail, Yahoo and Outlook.com need all three. Setting them up takes about an hour and mainly involves copying values from your email provider into your domain's DNS settings.
What each record does, in plain English
| Record | What it says | Where it lives | Analogy |
|---|---|---|---|
| SPF (Sender Policy Framework) | "These servers and services may send email for my domain." | One TXT record on your domain | A list of staff allowed to post letters for the company |
| DKIM (DomainKeys Identified Mail) | "This message was signed by my domain and has not been changed." | A TXT or CNAME record at selector._domainkey.yourdomain | A tamper-evident seal on each envelope |
| DMARC (Domain-based Message Authentication, Reporting and Conformance) | "If a message claiming to be from me fails SPF and DKIM, do this, and send me reports." | A TXT record at _dmarc.yourdomain | Instructions to the post room about suspicious letters |
DMARC adds one important idea: alignment. The domain in the visible From address must match the domain that passed SPF or DKIM. Without alignment, a criminal could pass SPF for their own domain while showing your name in the From line. DMARC passes if SPF or DKIM passes in alignment.
The UK's National Cyber Security Centre (NCSC) recommends all three as part of its email security and anti-spoofing guidance.
What Gmail, Yahoo and Microsoft now require
Since February 2024, Google and Yahoo have required senders to authenticate their mail. Microsoft followed for Outlook.com in May 2025. These rules apply to mail sent to personal mailboxes (such as @gmail.com, @yahoo.com, @outlook.com and @hotmail.com), but meeting them also helps with business recipients.
| Requirement | Gmail: all senders | Gmail: over 5,000 a day | Yahoo: bulk senders | Outlook.com: over 5,000 a day |
|---|---|---|---|---|
| SPF | SPF or DKIM | Required | Required | Required (must pass) |
| DKIM | SPF or DKIM | Required | Required | Required (must pass) |
| DMARC | Not required | Required, p=none allowed | Required, at least p=none, must pass | Required, at least p=none |
| From domain aligned with SPF or DKIM | Not required | Required | Required (relaxed alignment is fine) | Required |
| One-click unsubscribe (marketing mail) | No | Required, plus visible link | Required, honour within 2 days | Functional unsubscribe link expected |
| Spam complaint rate | Below 0.3% | Below 0.3% | Below 0.3% | Not specified as a figure |
| Other | TLS, valid forward and reverse DNS, RFC 5322 format | Same | Valid forward and reverse DNS | Valid From and Reply-To addresses, list hygiene |
Notes on the table:
- Google recommends keeping the spam rate in Postmaster Tools below 0.1% and never reaching 0.3%. It also requires DKIM keys of at least 1024 bits and recommends 2048 bits.
- Yahoo does not publish a numeric threshold for "bulk sender". It requires every sender to use at least SPF or DKIM.
- Microsoft said that from 5 May 2025 non-compliant messages from high-volume domains would go to Junk, and that it would later reject them with the error
550; 5.7.515 Access denied, sending domain [SendingDomain] does not meet the required authentication level. If you see that error in a bounce, your authentication is the cause. - Providers update these rules. Check the official pages linked at the end of this guide before relying on a detail.
The 5,000 figure counts all mail from your domain, including newsletters and automated mail from your website, booking system or shop. A small business can pass it during a busy campaign without noticing.
Before you start: list everything that sends email as you
Make a list of every service that sends email using your domain in the From address. For a small business that is often:
- Your mailbox provider (Google Workspace or Microsoft 365)
- Your newsletter tool
- Your website's contact form (WordPress, Wix or Squarespace notifications)
- Booking, invoicing, accounting or CRM software
- Your online shop (order confirmations)
Each one needs to be covered by SPF, DKIM or both. Most services have a help page called something like "authenticate your domain" with the exact records to add.
Step-by-step: Google Workspace
1. SPF
In your domain's DNS settings (at your registrar or DNS host), add or edit the TXT record on the root of your domain. If Google Workspace is your only sender:
v=spf1 include:_spf.google.com ~all
If you already have an SPF record, add include:_spf.google.com to it. Do not create a second record.
2. DKIM
- Sign in to the Google Admin console as a super administrator.
- Go to Menu > Apps > Google Workspace > Gmail and click Authenticate email.
- Choose your domain and click Generate new record. Choose a 2048-bit key if your DNS host supports it; otherwise 1024-bit. Keep the default prefix (selector)
googleunless you already use it. - Copy the TXT record name (
google._domainkey) and value into your DNS settings. - Return to Authenticate email and click Start authentication. Google says it can take up to 48 hours to start working, and the page may show "You must update the DNS records" in the meantime.
3. DMARC
Add a TXT record with the name _dmarc (so it sits at _dmarc.yourdomain). See the example records below.
Step-by-step: Microsoft 365
1. SPF
Microsoft's documentation gives this record for a domain that only sends from Microsoft 365:
v=spf1 include:spf.protection.outlook.com -all
Microsoft recommends -all (hard fail) because you will also set up DKIM and DMARC. There is no SPF setting inside Microsoft 365; you add the record at your DNS host.
2. DKIM
- In the Microsoft Defender portal (
security.microsoft.com), go to Email & collaboration > Policies & rules > Threat policies > Email authentication settings, and open the DKIM tab. Or go straight tohttps://security.microsoft.com/authentication. - Select your custom domain. Microsoft shows two CNAME records to create, with the host names
selector1._domainkeyandselector2._domainkey. - Copy the exact "points to" values shown for your organisation into your DNS settings. The format has changed over time, so do not copy an example from elsewhere.
- Back in the portal, switch DKIM signing on for the domain.
3. DMARC
Add a TXT record at _dmarc.yourdomain, as below. Microsoft also notes that for mail it sends using only your onmicrosoft.com domain, SPF is already set up for you.
Example records
Replace example.co.uk with your domain. These are examples, not values to copy blindly. Your providers' help pages give the exact entries.
| Type | Name / host | Value | When |
|---|---|---|---|
| TXT | @ (example.co.uk) | v=spf1 include:_spf.google.com ~all | Google Workspace only |
| TXT | @ | v=spf1 include:spf.protection.outlook.com -all | Microsoft 365 only |
| TXT | @ | v=spf1 include:_spf.google.com include:[your newsletter provider's include] ~all | Google plus one other sender |
| TXT | @ | v=spf1 -all | A domain you own but never send email from |
| TXT | _dmarc | v=DMARC1; p=none; rua=mailto:dmarc-reports@example.co.uk | Start here: monitor only |
| TXT | _dmarc | v=DMARC1; p=quarantine; pct=100; rua=mailto:dmarc-reports@example.co.uk | After reports look clean |
| TXT | _dmarc | v=DMARC1; p=reject; rua=mailto:dmarc-reports@example.co.uk | Full protection |
What the DMARC tags mean:
p=none: take no action, just report.p=quarantine: treat failures as suspicious, usually spam folder.p=reject: refuse failing mail.rua=: where to send daily aggregate reports. They arrive as XML files; a free or paid DMARC report service makes them readable.pct=: the percentage of failing mail the policy applies to, useful for a gradual move.
A parked domain that never sends email should have v=spf1 -all and a DMARC record with p=reject, so nobody can use it to impersonate you.
How to check your setup
- Send a test email from each service on your list to a personal Gmail address.
- In Gmail, open the message, click the three dots and choose Show original. Look for SPF: PASS, DKIM: PASS and DMARC: PASS. Check that the domains shown match your From domain.
- Look up your records with a DNS lookup tool, or in a terminal:
nslookup -type=txt example.co.ukandnslookup -type=txt _dmarc.example.co.uk. - Read your DMARC reports for two to four weeks before tightening the policy. They show every server sending as your domain, including ones you forgot.
- Run a SiteVerdict check. SiteVerdict's email and domain health check reads your SPF, DKIM and DMARC records, flags common problems such as a missing or weak DMARC policy, and checks TLS on your mail setup.
Common mistakes
| Mistake | What happens | Fix |
|---|---|---|
Two SPF records (two TXT records starting v=spf1) | Microsoft's documentation says this causes SPF to return a permanent error, so SPF fails | Merge into one record |
| More than 10 DNS lookups in SPF | SPF fails with a permanent error. include, a, mx, exists and redirect each count, plus lookups nested inside includes. ip4, ip6 and all do not | Remove services you no longer use; move bulk mail to a subdomain with its own record |
Typos such as include=, a space after the colon, or a trailing full stop | SPF fails to parse | Use the exact syntax: include:domain |
| Forgetting the website contact form or booking system | Those messages fail DMARC and land in spam, or are rejected once you move to p=reject | Authenticate each sender, or send form notifications through your main provider |
Jumping straight to p=reject | Legitimate mail you did not know about is rejected | Start with p=none and read reports first |
| DMARC record on the wrong name | Receivers cannot find it | Host must be _dmarc, not the root |
Staying on p=none for ever | Your domain can still be spoofed; you only get reports | Move to quarantine and reject once reports are clean |
| Newsletter tool sends with its own domain in DKIM | DKIM passes but is not aligned, so DMARC may fail | Use the tool's "authenticate your domain" or custom DKIM setting |
Moving from p=none to p=reject safely
DMARC only protects your domain once the policy is quarantine or reject. A cautious timetable for a small business:
- Weeks 1 to 4:
p=none. Collect aggregate reports. For every source sending as your domain, decide: is it yours? If yes, fix its SPF or DKIM so it passes in alignment. If no, it is someone spoofing you, which is exactly what DMARC will stop. - Weeks 5 to 8:
p=quarantine. Optionally start withpct=25and raise it. Watch for complaints that real emails are going to spam. - After that:
p=reject. Keep reading reports, because new tools get added and forgotten.
Two things can cause surprises. Forwarding: when a recipient forwards your email automatically, SPF often fails because the forwarding server is not in your record. DKIM usually survives, which is why DKIM matters even if SPF passes. Subdomains: Microsoft notes that each subdomain that sends email needs its own SPF record, while subdomains inherit the parent domain's DMARC policy unless you set one for them. Sending newsletters from a subdomain such as news.example.co.uk keeps their reputation separate from your everyday email.
Why this matters for a small business
Most small businesses do not send 5,000 emails a day, but authentication still matters. Quotes, invoices and booking confirmations that land in spam cost you work. And without DMARC, anyone can send email that appears to come from your domain, including fake invoices to your own customers. Our research on UK small-business websites covers website faults; email authentication is a separate check, and SiteVerdict tests it alongside your website.