Skip to content

Term

SPF, DKIM, DMARC: what is the difference?

Three lines in your DNS that together say: this email really is from us.

SPF, DKIM and DMARC explained: Cloudflare's learning page on the three records that authenticate email from a domain
SPF, DKIM, DMARCstands for Sender Policy Framework, DomainKeys Identified Mail, Domain-based Message Authentication, Reporting and Conformance
SPF, DKIM and DMARC are three DNS records that prove an email comes from your domain: SPF lists the servers allowed to send, DKIM adds a signature, DMARC says what happens when they fail.
Also calledemail authenticationDMARC recordSPF recordDKIM key

By , COO

4 min read
On this page
  1. 01Guest list, sealed envelope, house rule
  2. 02What is a DMARC record, line by line
  3. 03What is a DMARC policy, and how to reach reject
  4. 04What Gmail and Outlook ask since 2024

All three answer one flaw: the original email protocol lets anyone type any address as the sender. SPF was first written down in 2006, DKIM in 2007, DMARC in 2015. They became everyone's business when Gmail made them mandatory for large senders in February 2024 and Microsoft followed in May 2025. If your messages land in spam today, the cause is almost always in one of the three; why your emails go to spam walks through how to find it.

Guest list, sealed envelope, house rule

Picture a letter. SPF is the guest list at your domain's door: which post offices may send letters in your name. DKIM is the sealed envelope: a signature proving nobody opened or changed the letter on the way. DMARC is the house rule: what the receiver does when the guest list or the seal fails, and where it sends a report about it.

Three layers on one email

From: quotes@yourcompany.com

To: client@gmail.com

Your quote for the refit

Sent by: a Microsoft 365 server

  1. SPFThe guest list

    Checks: May this server send for yourcompany.com?

    Fails when: your newsletter tool is not on the listTXT on yourcompany.com

  2. DKIMThe seal

    Checks: Is the message unchanged, signed by yourcompany.com?

    Fails when: the tool signs with its own domainKey at selector._domainkey

  3. DMARCThe house rule

    Checks: Does SPF or DKIM pass for the From address? If not: none, quarantine or reject.

    Fails when: neither one aligns with FromTXT on _dmarc.yourcompany.com

SPF and DKIM each prove something different. DMARC demands that at least one of them holds for the address your client sees.

The difference between the first two matters. SPF checks the server that sends, not the address your reader sees, which is why it often fails on forwarded mail. DKIM travels inside the message and survives forwarding. DMARC ties both to the From address: one of them has to pass for the same domain the reader sees. Without that alignment a fraudster can pass SPF for his own domain and still show your name as sender.

What is a DMARC record, line by line

Here is the set for a company on Microsoft 365 that sends its newsletter with Mailchimp, on the example domain yourcompany.com. You add them wherever your DNS lives, usually at the registrar where you registered your domain:

RecordWhereValueWhat it says
SPFTXT on yourcompany.comv=spf1 include:spf.protection.outlook.com include:servers.mcsv.net -allMicrosoft and Mailchimp may send, nobody else
DKIMCNAME on selector1._domainkeypoints to the key at MicrosoftReceivers find the public key to check the seal here
DMARCTXT on _dmarc.yourcompany.comv=DMARC1; p=none; rua=mailto:dmarc@yourcompany.comRefuse nothing yet, send a report every day

Three details decide whether it works. The sign before all in SPF: -all means reject anything not listed, ~all means mark it as suspect. Every include counts as a DNS lookup, and more than ten makes the whole SPF check fail, which happens fast once marketing, invoicing and support tools all send as you. And a domain has exactly one SPF record; a second one beside it breaks both. When you transfer a domain name or move your mailboxes, take all three with you.

What is a DMARC policy, and how to reach reject

DMARC has three settings. With p=none failing mail is delivered as usual, but you get reports. With p=quarantine it goes to spam. With p=reject the receiver refuses it. The safe route:

  1. Publish p=none with a report address and read the reports for two to four weeks.
  2. List every service that sends as your domain: mailboxes, newsletter tool, invoicing software, the contact form on your site. Give each one SPF and DKIM.
  3. Move to p=quarantine, if you like with pct=25 for a quarter of your mail first.
  4. Move to p=reject once the reports show nothing unexpected for a few weeks.

What Gmail and Outlook ask since 2024

Gmail has asked every sender for SPF or DKIM since 1 February 2024, and anyone sending more than 5,000 messages a day for all three, with DMARC at least at p=none. Microsoft asks the same for Outlook.com and Hotmail since 5 May 2025 and sends non-compliant mail from large senders to Junk. A weekly newsletter to a few thousand addresses stays below that daily line, but with clean records you never have to think about it. A second lock on every mailbox, two factor authentication, stops a stolen password; DMARC stops a forged sender. You need both.

One record per domain, and only one

Adding a second SPF record for a new tool breaks both. Merge the new include into the record you have.

Short answers on the three records

Do I need all three?

Yes, if you want Gmail and Outlook to trust your mail. SPF or DKIM alone is enough for small volumes at Gmail, but without DMARC anyone can use your domain as sender.

What is a DMARC report?

An XML file that receivers such as Google and Microsoft send every day to the address in rua, listing per sending server how many messages passed SPF and DKIM. A DMARC tool turns it into a readable list.

What is DKIM in email, in one line?

A digital signature your mail server adds to every message, checked by the receiver against a public key in your DNS.

AI automation

How VBS sets up your domain

The forms on our client sites send through our own function on AWS using Amazon SES, signed with DKIM on the client's domain; eleven client domains run that way. When we build your website or handle its maintenance, we set the three records right, match the reports against the services you really use and move DMARC step by step to reject. The automations we build send your quotes and invoices the same way, so they reach the inbox. Book a call if you want us to do it for you.

Every service that sends as you, signed

Does your domain send through more services than your SPF knows? In a call we explain how we would put the three records right.

Optional, if you prefer a call.

What do you want to achieve, and what is already there?

We only use your details to reply to you.