Deliverability
How to set up SPF, DKIM and DMARC for a new sending domain
Three DNS records decide whether mailbox providers believe you are who you say you are. Here is what each does, what order to publish them in, and how to tighten DMARC without losing real mail.
Mailnaptic team
Published 1 October 2026
8 min read
Domains / example.com (placeholder data)
Type
Host
Status
TXT
example.com
Verified
CNAME
mn1._domainkey
Verified
CNAME
mn2._domainkey
Verified
TXT
_dmarc
p=none
Domain health: green. Ready to send.
A new sending domain has no history. Mailbox providers cannot tell your newsletter from a forged one, so they lean on three DNS records to decide: SPF, DKIM and DMARC. Get them right before the first campaign and most early deliverability trouble never shows up.
This guide covers what each record does, the order to publish them in, how to check that they work, and how to tighten DMARC step by step. We use the Mailnaptic Domains page for the examples, but the DNS side is the same with any sending platform.
Every domain name, selector and address below is a placeholder. Copy the real values from your own Domains page, not from this article.
What each record does
The three records answer three separate questions, and all of them live in DNS under your domain.
SPF: who may send
A TXT record on your domain that lists the servers allowed to send mail for it. Receivers compare the server that delivered the message against that list.
DKIM: was it altered
Each message carries a cryptographic signature. The public key sits in DNS, so receivers can confirm the message was signed by an authorised sender and not changed on the way.
DMARC: what to do
A policy that tells receivers what to do with mail that fails the checks, and where to send reports about it.
DMARC does not authenticate anything on its own. It looks at whether SPF or DKIM passed and whether the passing domain matches the visible From address, a test called alignment. That is why Mailnaptic's own guidance says to get SPF and DKIM passing first and add DMARC last.
The order to do things in
The sequence matters, mostly because DMARC is the one record that can do damage if it goes in too early.
Order of work
1. Add the domain in Mailnaptic
Domains, Add Domain, domain name only
2. Publish SPF
One TXT record, merged with any existing one
3. Publish both DKIM CNAMEs
Two selectors, copied exactly
4. Click Verify DNS
Wait for propagation, then retry
5. Publish DMARC at p=none
With a report address someone reads
6. Send, read reports, tighten
None, then quarantine, then reject
Steps 1 to 4 are an hour of work plus some waiting for DNS. Steps 5 and 6 are spread over weeks, and that is on purpose.
The records, with placeholder values
When you add a domain, Mailnaptic lists the records to create. The shapes below match what you will see, using example.com in place of your domain.
DNS records for example.com (placeholders)
SPF, TXT on example.com
v=spf1 include:spf.mailnaptic.com ~all
DKIM, two CNAME records
mn1._domainkey.example.com CNAME mn1.dkim.mailnaptic.com mn2._domainkey.example.com CNAME mn2.dkim.mailnaptic.com
DMARC, TXT on _dmarc.example.com
v=DMARC1; p=none; rua=mailto:dmarc@example.com; pct=100
SPF
SPF is a single TXT record on the root of the domain. If you already send from Google Workspace or Microsoft 365 you have one, and the right move is to add the Mailnaptic include to it, for example v=spf1 include:_spf.google.com include:spf.mailnaptic.com ~all. Two SPF records on one domain make SPF fail outright.
Two limits are worth knowing. SPF allows ten DNS lookups in total and every include counts toward that, so a domain with many services can go over without anyone noticing. And use ~all (soft fail) while you are setting up. Switch to -all once you are sure every legitimate sender is listed.
DKIM
DKIM is two CNAME records, one per selector. Mailnaptic uses two so keys can be rotated without a gap in signing. Create both, even if the second looks redundant.
Two gotchas come up again and again. Some DNS panels append your domain automatically, so typing the full name produces mn1._domainkey.example.com.example.com. If a record cannot be found, check that first. And if you use Cloudflare, set the DKIM records to DNS only (grey cloud) instead of proxied.
DMARC
DMARC is a TXT record at _dmarc on your domain. Start in monitoring mode. The rua address receives daily aggregate reports, so use a mailbox that exists and that someone will actually open.
One more record you may see
Depending on your setup, the Domains page can also list a domain verification TXT record and a return-path MX record on a subdomain. The MX belongs on that subdomain only, never on your root domain.
Verify before you send
Publishing is half the job. A typo fails quietly, and you find out when mail starts landing in spam.
Open the domain in Mailnaptic and click Verify DNS. Each record gets a pass or fail. Then check from the outside, which tells you what the rest of the internet sees:
Terminal
dig TXT example.com +short dig CNAME mn1._domainkey.example.com +short dig TXT _dmarc.example.com +short
The domain list shows a health badge. Green means every record verified. Yellow means partial, such as SPF passing and DKIM missing. Red means nothing verified, or records that used to be valid no longer are. Mailnaptic will not let you send campaigns or activate automations from a domain until SPF and DKIM both verify.
Propagation takes minutes at most providers and up to 48 hours at slow ones. If verification fails right after you publish, wait and retry before you change anything.
A real-world test
Send a message to a personal Gmail address, open the menu and choose Show original. SPF, DKIM and DMARC should each read PASS.
Moving DMARC from none to reject
A policy of p=none tells receivers to deliver everything and send you reports. It protects nothing yet, but it shows you every server that sends mail as your domain, which is exactly what you need to know before you enforce anything.
p=none
Monitor only. Stay here for two to four weeks and read the reports weekly.
p=none; rua=mailto:dmarc@example.com
p=quarantine
Failing mail goes to spam. Start with pct=25 and raise it to 100 as reports stay clean.
p=quarantine; pct=25
p=reject
Failing mail is refused. The goal once every legitimate sender passes.
p=reject; pct=100
In Mailnaptic, DMARC report monitoring (the DMARC Reports tab on the domain page) is available on Pro and above. It turns the daily XML into a table of pass and fail by source IP. Three things to look for:
- Your own senders failing. That points to a DNS mistake.
- Unknown IPs passing. Someone else may be using your domain, so investigate straight away.
- Unknown IPs failing. That is DMARC doing its job.
Before quarantine, list every legitimate sender: staff mail, the support desk, the invoicing tool, the CRM. Each one needs to pass SPF or DKIM aligned with your domain, or it will start going to spam. The pct tag applies the policy to a share of failing mail, so a mistake costs you a fraction of the problem. Check reports weekly during setup, and monthly once you are at reject with clean results.
Optional: BIMI
Quarantine or reject is also the entry requirement for BIMI, which shows your logo next to your mail in supported inboxes. Gmail additionally asks for a Verified Mark Certificate. Treat it as a later project.
Common mistakes
- Two SPF records. Merge every include into one.
- Too many lookups. More than ten and SPF fails. Remove services you no longer use, or flatten the record.
- Jumping to reject on day one. The helpdesk and invoicing mail you forgot about disappears.
- Proxied DKIM records. They need to be DNS only.
- A doubled domain name. Your DNS panel added it for you.
- A report address nobody reads. Or one that does not exist, so reports bounce.
- Verifying once and forgetting. Records vanish during DNS migrations and cleanups. A red badge on the Domains list is your cue.
Warm up the new domain
Authentication tells providers who you are. It does not tell them whether to trust you. A new domain that mails a whole list on day one looks like a spam operation, however clean its DNS.
Mailnaptic starts warmup with your first campaign and raises sending volume level by level. Each domain shows its current level and the next one. Your side is simple: send the first campaigns to your most engaged contacts, keep the content ordinary, and avoid a large import followed by an immediate blast.
Domains / Warmup (sample)
Warmup level
1
2
3
4
5
6
7
How to read it
Health score
Above 70
Healthy
40 to 69
Fair
Below 40
May pause progression
The health score comes from bounce rate, complaint rate and open engagement. If it sags, slow down instead of pushing through the next level. Run the blacklist check on the domain page too. Mailnaptic checks major lists such as Spamhaus ZEN and SpamCop and alerts you when a new listing appears.
Before your first campaign
SPF is one record and shows as verified
Both DKIM CNAMEs verify
The domain badge is green
DMARC is published at p=none with a report address someone reads
A test message shows SPF, DKIM and DMARC as PASS
The first send goes to engaged contacts only
A review of the DMARC reports is in the calendar for two to four weeks out
Try it in Mailnaptic
Add your domain and watch the records turn green
The Domains page lists every record to create, checks DNS live and shows which one is missing. Domain setup, warmup and blacklist checks have no plan restriction.
Keep reading
Deliverability
Warmup, health score, bounces, complaints and Google Postmaster data in one place.
See deliverability
Gmail and Yahoo sender requirements
What the two providers require of bulk senders, with the actual thresholds.
Read more
How to read Google Postmaster Tools
See how Gmail rates your new domain once you start sending.
Read more
Warming up a new sending domain
A six-week plan to follow once your DNS records verify.
Read more
Fixing SPF failures
What to do about the ten lookup limit and other common SPF errors.
Read more
How to read a DMARC aggregate report
Use the reports to decide when to move from p=none to enforcement.
Read more
A 30-day plan for a small business
Put the verified domain to work with a month of email, step by step.
Read more
Compliance
Consent status, unsubscribes and the suppression list, with GDPR and CASL modes.
See compliance
All features
Campaigns, automations, segmentation and analytics, and how they fit together.
Browse features