Rémi KokabiNovember 27, 202510 min readLast update: Oct 12, 2026

DMARC for Cold Email: The 5,000-Email Rule That Decides If Gmail and Outlook Trust You (2026 Setup Guide)

Phishing and spoofing was the single most-reported cybercrime in the FBI’s 2024 Internet Crime Report, with 193,407 complaints logged by the FBI’s Internet Crime Complaint Center. That’s the world your cold emails land in: a hostile inbox environment where receiving servers shoot first and ask questions later.

Here’s the thing. If your domain can be spoofed, inbox providers don’t know whether to trust mail from you. And when they don’t trust you, your legitimate outreach ends up in spam (or rejected outright).

In this guide, I’ll show you exactly how DMARC works, what every tag in a DMARC record does, how to set it up and validate it step by step, and how to keep your cold emails landing in the inbox.

Table of contents

What is DMARC?

DMARC stands for Domain-based Message Authentication, Reporting, and Conformance. A DMARC record is a DNS TXT record published at _dmarc.yourdomain.com that lets receiving servers verify an email really comes from your domain, working on top of SPF and DKIM. It also tells them where to send reports about what they see.

Think of it as the final checkpoint. SPF tells a server which IP addresses can send on your behalf. DKIM adds a cryptographic signature that proves the message wasn’t altered in transit. DMARC ties both together and tells the receiving server what to do when mail fails those checks.

The protocol was first defined by the IETF in RFC 7489 (2015) and was updated in 2026 by RFC 9989. But the core logic remains: authenticate every message, report what happens, and give domain owners control over how failures are handled.

Without DMARC, a bad actor can send email pretending to be you, and receiving servers have no instructions for handling it. With DMARC, you tell inbox providers exactly how to handle those forgeries.

Why DMARC matters for cold email

Let’s be direct: DMARC is now a hard requirement for sending cold outreach at scale.

Since February 2024, Google requires a DMARC policy for senders of 5,000 or more messages a day to personal Gmail accounts. This applies to personal Gmail, not Google Workspace domains, but personal Gmail accounts make up a significant portion of any cold email list. Yahoo requires bulk senders to publish a DMARC policy of at least p=none. Starting May 5, 2025, Microsoft routes mail from senders of 5,000 or more messages a day to Outlook.com that fails SPF, DKIM, or DMARC into the junk folder. Outright rejection is planned as a later phase. This applies to consumer Outlook.com, not Exchange Online.

The 5,000-message threshold sounds high. It’s not. If you’re running multichannel campaigns across multiple domains and mailboxes, you can hit that number faster than you think. And even if you’re below the threshold, missing DMARC signals to inbox providers that you don’t take authentication seriously. That hurts your sender reputation over time.

Sure, you can run outbound without DMARC. But you’re gambling with deliverability every time you hit send.

The stakes go beyond inbox placement. Business email compromise drove $2.77 billion in reported US losses in 2024, according to the same FBI report. When attackers spoof your domain to phish your prospects or partners, that’s your brand taking the hit.

DMARC protects your domain reputation. It tells inbox providers you’ve locked down your email authentication. And it gives you visibility into who’s sending mail on your behalf, legitimate or not.

How DMARC works

When a message arrives at a receiving server, the server checks two things: does the sending IP match the SPF record for this domain? Does the DKIM signature validate?

DMARC adds a third layer. A message passes DMARC when SPF or DKIM passes and the domain that passed matches the domain shown in the From header. That matching is called alignment, and it’s the piece SPF and DKIM can’t enforce on their own. If authentication fails or doesn’t align, the DMARC policy decides what happens next.

Here’s what a basic DMARC record looks like:

v=DMARC1; p=none; rua=mailto:dmarc-reports@yourdomain.com

Let me break down those tags:

v is the version. Always DMARC1, and it has to come first in the record.

p is the policy. It tells receiving servers what to do with messages that fail authentication. You have three options: none (monitor only, deliver anyway), quarantine (send to spam), or reject (block entirely).

rua is the reporting address. Receiving servers send aggregate reports here so you can see who’s sending mail from your domain. It’s technically optional, but without it you have zero visibility.

Only v and p are required. Here’s what a fully loaded record looks like:

v=DMARC1; p=reject; rua=mailto:dmarc-reports@example.com; ruf=mailto:forensics@example.com; adkim=r; aspf=r; fo=1

You can add more tags to fine-tune behavior:

Tag

What it does

ruf

Address for forensic (failure) reports with details on individual messages that failed. Google and Microsoft largely don’t send these.

fo

When to generate forensic reports: 0 (both SPF and DKIM fail, default), 1 (either fails), d (DKIM fails), s (SPF fails). Only relevant if ruf is set.

aspf

Alignment mode for SPF: r (relaxed, default, allows a subdomain match) or s (strict, exact match)

adkim

Alignment mode for DKIM: r (relaxed, default) or s (strict)

sp

Policy for subdomains (inherits from p if not set)

np

New in RFC 9989: policy for subdomains that don’t exist in DNS

pct

Percentage of failing messages to apply the policy to. Removed by RFC 9989: existing records still work, but leave it out of new ones.

Note on RFC 9989: the updated DMARC standard, published in 2026, removes the pct, rf, and ri tags. Records that already use them keep working, but new records should skip them. It adds np for non-existent subdomains, and a t tag that asks receivers to apply the next-lower policy while you test, which covers the most useful part of what pct used to do.

Most senders start with just v, p, and rua. Add the others as you get more sophisticated about monitoring.

DMARC policies compared: none vs. quarantine vs. reject

The p= tag is the one decision that actually changes what happens to your mail.

Policy

What happens to failing mail

When to use it

none

Delivered normally, reports sent

Monitoring, while you map every legitimate sender

quarantine

Routed to spam or junk

Transition, once you trust most legitimate mail passes

reject

Blocked at the SMTP level, never delivered

Full enforcement, once every sender is authenticated and aligned

Keep in mind that even at reject, the receiving server makes the final call. A DMARC policy is a request, not a guarantee.

How to set up a DMARC record

DMARC depends on SPF and DKIM. If you haven’t configured those yet, start there. You’ll need to set up an SPF record for your domain and configure your DKIM record before DMARC can do its job. Without them, DMARC has nothing to enforce.

Once SPF and DKIM are in place, here’s how to add DMARC.

Check for existing records

Before you create a new record, check whether your domain already has DMARC configured. You can run your domain through lemlist’s free deliverability setup checker to see your SPF, DKIM, and DMARC records in one place. If a record already exists, update it rather than create a duplicate: two DMARC records on the same domain cancel each other out.

Prepare your record

Start with a monitoring-only policy so you can see what’s happening before you enforce anything:

v=DMARC1; p=none; rua=mailto:dmarc-reports@yourdomain.com; fo=1

Translated, that record says: don’t enforce anything yet, just send daily reports, and flag any message where SPF or DKIM fails. Replace the email address with one you control. Use a dedicated mailbox or alias, because these reports can pile up fast.

Add the record to your DNS

Step 1: Open your domain provider’s DNS management panel. This is wherever you manage DNS for the domain you send from (GoDaddy, Cloudflare, Namecheap, or whoever hosts your domain).

Step 2: Add a new DNS record with these settings:

  • Type: TXT

  • Host: _dmarc

  • Value: v=DMARC1; p=none; rua=mailto:dmarc-reports@yourdomain.com; fo=1

  • TTL: Use the default (often 3600 or auto)

Save the record.

Step 3: Validate the record (see the next section). Note that DNS changes can take up to 48 hours to propagate, though it’s often a matter of hours.

Plan your rollout

Don’t jump straight to reject. That’s the most common way DMARC backfires, usually when a forgotten tool (a CRM, a marketing platform, a transactional email service) suddenly can’t deliver. The safe path is:

  1. Start at p=none and let reports collect for a week or two, long enough to surface every service sending on your behalf

  2. Review the reports and authorize every legitimate sender in SPF and DKIM

  3. Move to p=quarantine to send failing messages to spam. To test on a slice of traffic first, use t=y (RFC 9989) or a low pct on older setups, and watch reports at each step

  4. Once every legitimate sender passes consistently, move to p=reject to block failures entirely

This gradual rollout lets you catch configuration problems before they bounce real outreach.

How to check and validate your DMARC record

A quick lookup confirms whether a DMARC record exists and is formatted correctly:

nslookup -type=txt _dmarc.example.com

or

dig txt _dmarc.example.com

You can also send a test email and check the headers for dmarc=pass. Either way, confirm these four things:

  • Only one record exists. Multiple DMARC records at the same lookup name get discarded entirely.

  • The syntax is clean, starting with v=DMARC1 and using valid values throughout.

  • The rua mailbox is reachable. If it sits on a different domain than the one being monitored, that domain needs an authorization record too.

  • The alignment mode fits your setup. Strict alignment breaks mail from platforms that sign with their own subdomain.

DMARC for cold outreach at scale

Setting up a DMARC record is the foundation. But if you’re sending thousands of cold emails across multiple mailboxes and domains, you need more than a DNS record. You need ongoing visibility into what’s actually happening.

When you connect an existing domain or buy a new sending domain in lemlist, the platform can set up authentication automatically. SPF, DKIM, and DMARC, configured correctly from the start. That removes one of the most common failure points: manual DNS setup errors that silently tank deliverability.

Before any campaign goes out, pre-send deliverability checks catch risky content, technical misconfigurations, and inbox-placement signals. You’ll know about authentication issues before they affect a real send.

And inbox placement testing takes it further. lemlist sends to real test addresses across Google and Microsoft to show whether you land in the primary inbox, promotions, or spam. You also get alerts when bounce rates or spam complaint trends start climbing. That kind of early warning is the difference between a fixable problem and a burned domain.

This isn’t about replacing DMARC setup. It builds on it with the monitoring that cold outreach at scale actually requires.

How to read your DMARC reports

Once your DMARC record is live with a rua address, aggregate reports will start arriving. These are XML files sent by receiving servers, usually daily, summarizing what happened to mail from your domain.

Aggregate reports (rua)

These show the big picture across all messages:

  • Sender IP addresses that sent mail claiming to be from your domain

  • SPF, DKIM, and DMARC results for each IP

  • Message counts per sending source

  • Dispositions: what happened to the mail (delivered, quarantined, rejected)

Aggregate reports help you answer questions like: who is sending mail from my domain? Are my legitimate sources passing authentication? Is anyone spoofing me?

Forensic reports (ruf)

These contain details on individual messages that failed DMARC. They’re more granular but also more sensitive:

  • Full message headers

  • Authentication results

  • Envelope sender information

  • Timestamps for when the message and report were generated

Most large providers, including Google and Microsoft, don’t send forensic reports, citing privacy concerns. Treat them as a nice-to-have, not a guarantee, and never rely on ruf alone for visibility.

The raw XML problem

Here’s the catch. DMARC reports arrive as raw XML. They’re technically readable, but practically painful. A single day of sending can generate dozens of reports with thousands of lines.

You can parse them by hand if you enjoy that sort of thing. Most teams use a DMARC monitoring tool (dmarcian, Postmark, EasyDMARC) that aggregates and visualizes the data. That’s not strictly necessary, but it saves real time as volume grows.

Common DMARC mistakes that hurt deliverability

A technically correct record can still cause problems if the surrounding setup is off. The ones that come up most often:

  • Multiple DMARC records on one domain. Receiving servers treat it as an error and ignore the policy entirely.

  • Jumping to p=reject without monitoring first. Legitimate senders that were never authorized get blocked along with the bad traffic.

  • Skipping rua. Enforcement without reporting means no visibility into what’s actually passing or failing.

  • Strict alignment before confirming every sender matches. This breaks mail from subdomains or platforms signing under their own domain.

  • Leaving parked domains unprotected. Domains that never send mail are exactly the ones attackers spoof. Publish v=DMARC1; p=reject on every domain you own, even inactive ones.

  • Forgetting to update SPF and DKIM when adding new tools. Every new sending service needs to be authorized before it passes DMARC.

Final thoughts

DMARC isn’t optional for cold email in 2026. Google and Microsoft now enforce authentication requirements, Yahoo asks for the same, and sending without DMARC puts your deliverability at risk.

The setup itself is straightforward: confirm SPF and DKIM are in place, add a DMARC record starting with p=none, validate it, monitor your reports, then tighten the policy over time. The harder part is keeping visibility as you scale across multiple sending domains and mailboxes.

If you want to run cold outreach with authentication handled from day one, start a 14-day free trial.

Convert strategy into pipeline

Launch your first outbound campaign with verified leads, AI sequences, and multichannel outreach from one platform.

Frequently asked questions

Yes. Since February 2024, Google requires DMARC for senders of 5,000 or more messages a day to personal Gmail. Microsoft enforces similar rules for Outlook.com as of May 2025. Even below those thresholds, DMARC improves your sender reputation and protects your domain from spoofing.

A basic record looks like this: v=DMARC1; p=none; rua=mailto:dmarc-reports@yourdomain.com. It’s a TXT record added to your DNS with _dmarc as the host.

v=DMARC1; p=none; is technically valid, since only v and p are required. Include rua anyway: without it, there’s no reporting data to learn from.

SPF specifies which IP addresses can send mail for your domain. DKIM adds a cryptographic signature that proves the message wasn’t altered. DMARC ties both together and tells receiving servers what to do when messages fail authentication. You need all three for proper email authentication.

Start with p=none. It monitors without affecting delivery, so you can review reports and confirm legitimate mail passes before moving to quarantine or reject.

No. Multiple DMARC TXT records on the same domain cause a permanent error, and receiving servers ignore all of them, leaving the domain with no DMARC protection at all.

Yes, unless the subdomain publishes its own record at _dmarc.subdomain.yourdomain.com. The sp tag in the parent record can also set a separate policy just for subdomains.

Receiving servers treat a malformed record as if none exists, so the domain loses DMARC protection until the error gets fixed.

Query _dmarc.yourdomain.com and confirm your TXT record appears. Then send a test email and check the headers for dmarc=pass. A deliverability checker that shows full authentication results makes this easier.
Rémi Kokabi

Rémi Kokabi

Co-founder @GTM Club

Share this post