Why your emails go to spam: SPF, DKIM and DMARC, in order

A quote that goes missing, an invoice found in the junk folder: when your emails go to spam, the reason is written in the headers of the message that arrived. Three records on your domain, SPF, DKIM and DMARC, prove to mailbox providers that your mail really comes from you. This guide sets them up in order.

Published on 12 October 2026 By 11 minute read

All guides

In short

  1. Send yourself an email at a Gmail address, then open More > Show original: the Authentication-Results line gives the SPF, DKIM and DMARC verdict.
  2. SPF: one TXT record at the domain root, listing every service that sends as you, within ten DNS lookups.
  3. DKIM: turn on signing with each service that sends for you, and publish the key it gives you.
  4. DMARC: publish a record at _dmarc.your-domain.com, starting with p=none and a reporting address.
  5. Check your website form: a message sent with the visitor’s address as the sender fails DMARC.
  6. Read the reports for a few weeks, then move to p=quarantine, and finally to p=reject.

Read the verdict in the message headers

Every mailbox provider that receives an email checks where it came from and records the result in the message headers. To read it, send an email from your business address to a Gmail address, open it, click More (the three dots) and then Show original. Look for the Authentication-Results line:

Excerpt from headers received by Gmail
Authentication-Results: mx.google.com;
       dkim=pass header.i=@your-domain.com header.s=google;
       spf=pass (google.com: domain of hello@your-domain.com designates 203.0.113.25 as permitted sender) smtp.mailfrom=hello@your-domain.com;
       dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=your-domain.com
What you seeWhat it meansWhere to go next
spf=fail or spf=softfailThe server that sent the message is not in the domain’s SPF list.1. SPF
spf=permerrorThe SPF record is invalid: two records on the same domain, or more than ten DNS lookups.1. SPF
dkim=none or dkim=failThe message is not signed, or the key published in DNS does not match the signature.2. DKIM
dmarc=failNeither SPF nor DKIM validates the domain of the sender address the recipient sees.3. DMARC, and the website form
Everything reads passAuthentication is in order: the cause lies elsewhere, in reputation, volume or content.When everything passes

These three settings are unevenly spread. Among the 1,730 SMB domains that receive mail in our monthly survey, 96% publish SPF, and 71% have no DMARC policy that acts on the result.

1. SPF: the list of authorised servers

SPF is a TXT record at the root of your domain. It starts with v=spf1, names the servers allowed to send for the domain, and ends with what to make of every other server. The two most common email providers publish the value to use:

Google Workspace email
v=spf1 include:_spf.google.com ~all
Microsoft 365 email
v=spf1 include:spf.protection.outlook.com -all

Every other service sending with your domain goes into that same record: newsletter tool, invoicing software, CRM, and your website server if its forms send mail themselves. Each service documents the include: to add; a server is declared by its address, with ip4::

Example: Google Workspace plus the website server, in a single record
v=spf1 include:_spf.google.com ip4:203.0.113.25 ~all

2. DKIM: a signature on every message

DKIM adds a signature to every message, which the recipient’s provider checks against a public key published in your DNS, under a name shaped like selector._domainkey.your-domain.com. The signing happens at the service that sends; your part is to publish the key it gives you.

Gmail accepts keys of 1024 bits and up; 2048 bits is the length the standard recommends. Allow up to 48 hours for a newly published key to be visible everywhere.

3. DMARC: the instruction you give mailbox providers

DMARC ties SPF and DKIM to the address the recipient sees, the one in the From field. A message passes DMARC when SPF or DKIM is valid for the domain of that address: that is alignment. The record also says what to do with a message that fails, and where to send reports.

TXT record, at the name _dmarc.your-domain.com
v=DMARC1; p=none; rua=mailto:dmarc@your-domain.com
PolicyWhat the domain asks forWhen to choose it
p=noneNo action: providers only send reports.At the start, to find everything that sends with your domain.
p=quarantinePut failing messages in the spam folder.Once the reports show only legitimate senders, all passing.
p=rejectRefuse failing messages.Once quarantine has run for a few weeks without losing legitimate mail.
  1. Publish p=none with a rua address. The large providers send a daily aggregate report there, a compressed XML file listing the servers that sent with your domain and how they fared.
  2. Read the reports for two to four weeks. Each legitimate source that fails (a forgotten newsletter tool, the invoicing software) gets fixed in SPF or DKIM.
  3. Move to p=quarantine, then, after a few weeks without lost mail, to p=reject. If your team posts to mailing lists, stay at quarantine: the standard advises against reject for such domains, because lists modify the messages they redistribute.

Older guides suggest ramping up with the pct tag. The current DMARC standard, RFC 9989, published in May 2026, no longer recognises it: you ramp up through the policy itself.

The contact form trap

Many website forms send the message with the visitor’s address as the sender. The website server has no authority over the visitor’s domain, so SPF and DKIM cannot align and DMARC fails. When the visitor’s provider publishes a strict policy (yahoo.com publishes p=reject), the message is refused or filed as spam before it reaches you.

When everything passes and mail still lands in spam

Business email, set up and supported

Simafri Suite brings your whole team’s email, calendar, contacts and files onto your own domain name, set up, secured and supported by Simafri. One account, unlimited users, no commitment.

Discover Simafri Suite

Frequently asked questions

Why do my emails go to spam for some recipients only?

Each mailbox provider runs its own filters and its own reading of SPF, DKIM and DMARC. A message can reach the inbox at one provider and land in spam at another, especially when authentication is incomplete. The Authentication-Results header of the message received gives that provider’s verdict.

Can a domain have two SPF records?

A domain carries a single SPF record. With two records starting with v=spf1, the SPF check returns a permanent error (permerror). Merge them into one record that keeps every include and every address.

How long do SPF, DKIM and DMARC changes take to work?

As long as the record takes to propagate, depending on its time to live (TTL): from a few minutes to 48 hours. Google states up to 48 hours for SPF and DKIM. Then check with a new message to Gmail and Show original.

Does DMARC with p=none protect my domain?

p=none only asks for reports: providers take no action on failing messages. This stage is for finding every service that sends with your domain. Protection against spoofing comes with p=quarantine, then p=reject.

Contact us