DMARC (Domain-based Message Authentication, Reporting, and Conformance) is the policy layer that ties SPF and DKIM together. It tells receiving mail servers what to do when an email fails authentication — accept it, quarantine it, or reject it — and sends you reports about who is sending email from your domain. DMARC is now required by Google and Yahoo for bulk senders, and strongly recommended for everyone.
Your First DMARC Record
If you don’t have a DMARC record yet, start with a monitoring-only policy. This lets you see who is sending email from your domain without affecting delivery:
v=DMARC1; p=none; rua=mailto:dmarc-reports@yourdomain.com
Add this as a TXT record at _dmarc.yourdomain.com. After reviewing reports for a few weeks, you can tighten the policy to quarantine or reject.
01. What Is DMARC?
Domain-based Message Authentication, Reporting, and Conformance (DMARC) is an email authentication standard defined in RFC 7489. It builds on top of SPF and DKIM to solve a problem that neither can solve alone: domain alignment.
SPF verifies that the sending server is authorized, but it checks the envelope sender (Return-Path), not the visible “From” address. DKIM verifies that the message was signed by an authorized key, but it doesn’t specify what to do if the signature fails. Neither one prevents an attacker from spoofing the “From” address that users actually see.
DMARC fixes this by adding two things:
- Alignment — DMARC requires that the domain in the visible “From” address matches the domain that passed SPF or DKIM. This prevents attackers from using a legitimate sending server but forging the “From” address.
- Policy — DMARC tells receiving servers what to do when alignment fails: do nothing (
none), send to spam (quarantine), or reject the email entirely (reject).
DMARC also provides a reporting mechanism that sends you daily aggregate reports showing which IPs are sending email from your domain, and whether those emails are passing or failing authentication.
02. How DMARC Works
- An email arrives at the recipient’s mail server claiming to be from
yourdomain.com. - The server checks SPF and DKIM to see if either passes.
- The server checks alignment. For DMARC to pass, at least one of these must be true:
- SPF passes and the envelope sender domain aligns with the “From” domain
- DKIM passes and the signing domain aligns with the “From” domain
- The server looks up the DMARC record at
_dmarc.yourdomain.comto find the domain owner’s policy. - The server applies the policy. If DMARC passes, the email is delivered normally. If DMARC fails, the server follows the policy:
none(deliver anyway),quarantine(send to spam), orreject(bounce the email). - The server sends a report to the address specified in the DMARC record’s
ruatag.
03. DMARC Record Syntax
A DMARC record is a DNS TXT record published at _dmarc.yourdomain.com. Here are the tags and what they mean:
Required tags:
v=DMARC1— version identifier (always DMARC1)p=— the policy for your domain. Values:none,quarantine,reject
Recommended tags:
rua=mailto:address@yourdomain.com— where to send aggregate reports (daily XML summaries)ruf=mailto:address@yourdomain.com— where to send forensic reports (individual failure details; not all providers send these)sp=— policy for subdomains (defaults to thep=value if not specified)adkim=— DKIM alignment mode:r(relaxed, default) ors(strict)aspf=— SPF alignment mode:r(relaxed, default) ors(strict)pct=— percentage of messages the policy applies to (default 100). Useful for gradual rollout.
Example records:
Monitoring only (start here):
v=DMARC1; p=none; rua=mailto:dmarc-reports@yourdomain.com
Quarantine failures (send to spam):
v=DMARC1; p=quarantine; rua=mailto:dmarc-reports@yourdomain.com
Reject failures (strictest):
v=DMARC1; p=reject; rua=mailto:dmarc-reports@yourdomain.com; adkim=s; aspf=s
Gradual rollout (apply quarantine to 25% of failing messages):
v=DMARC1; p=quarantine; pct=25; rua=mailto:dmarc-reports@yourdomain.com
04. Setting Up DMARC
Before setting up DMARC, make sure you have working SPF and DKIM records for your domain. DMARC builds on these — without them, DMARC has nothing to evaluate.
- Verify SPF and DKIM are working. In cPanel, go to Email → Email Deliverability and confirm both show green checkmarks for your domain.
- Add the DMARC record. In cPanel → Domains → Zone Editor, add a new TXT record:
- Name:
_dmarc.yourdomain.com - Type: TXT
- Value:
v=DMARC1; p=none; rua=mailto:dmarc-reports@yourdomain.com
- Name:
- Monitor reports. Over the next 2-4 weeks, review the aggregate reports to identify all legitimate sources sending email from your domain.
- Tighten the policy. Once you are confident all legitimate sources pass DMARC, change
p=nonetop=quarantine(sends failures to spam) orp=reject(blocks failures entirely).
p=reject. If you jump straight to reject without verifying that all legitimate email sources pass DMARC, you will block your own email. Always start with p=none, review reports, fix any alignment issues, then graduate to quarantine and eventually reject.
05. DMARC Policies: None, Quarantine, Reject
p=none
Monitor only. No action is taken on failing emails. Reports are still sent. Use this when first implementing DMARC to identify all sending sources without affecting delivery.
p=quarantine
Send to spam. Emails that fail DMARC are delivered to the recipient’s spam/junk folder. This protects recipients while giving you a safety net in case of misconfigurations.
p=reject — the strictest policy. Emails that fail DMARC are rejected entirely and never delivered. The sender receives a bounce notification. Use this once you are fully confident that all legitimate email passes DMARC.
Recommended rollout path:
- Start with
p=nonefor 2-4 weeks - Review reports and fix any SPF/DKIM alignment issues
- Move to
p=quarantine; pct=25(apply to 25% of failures) - Increase to
pct=50, thenpct=100 - Once stable, move to
p=reject
06. Understanding DMARC Reports
DMARC aggregate reports are XML files sent daily by major mail providers (Google, Yahoo, Microsoft, etc.) to the email address in your rua= tag. Each report shows:
- Which IP addresses sent email from your domain
- How many messages were sent from each IP
- Whether SPF and DKIM passed or failed for each source
- Whether alignment passed or failed
- What policy was applied (none/quarantine/reject)
The raw XML can be hard to read. Free tools like Postmark’s DMARC Digests or dmarcian can parse and visualize your reports. You can also use a dedicated reporting address like dmarc-reports@yourdomain.com and review them periodically.
fail. Check the sending IP — is it a server you recognize? If it’s a third-party service you use (Mailchimp, a CRM, a ticketing system), you need to add their SPF include: and set up their DKIM key. If it’s an IP you don’t recognize, someone may be spoofing your domain — which is exactly what DMARC is designed to catch.
07. Verifying Your DMARC Record
After adding your DMARC record, verify it is correctly published:
Ultra Web Hosting DMARC Lookup Tool: Enter your domain at tools.ultrawebhosting.com/dmarc-lookup to see your published DMARC record, check the syntax, and verify the policy settings.
Send a test email: Send an email to Gmail, click the three dots → “Show original.” Look for dmarc=pass in the Authentication-Results header.
Command line:
dig TXT _dmarc.yourdomain.com +short
This should return your DMARC record starting with v=DMARC1.
08. Troubleshooting
- dmarc=fail in email headers. Either SPF and DKIM both failed, or neither one aligned with the “From” domain. Check that your SPF record includes the sending server and that DKIM is properly signing outgoing mail.
- Legitimate email going to spam after enabling quarantine. A sending source is failing DMARC alignment. Check reports to identify the source, then fix its SPF or DKIM setup. Consider rolling back to
p=nonetemporarily. - Third-party service emails failing DMARC. The service sends email “from” your domain, but its sending IP is not in your SPF record and/or it is not signing with DKIM using your domain. Add the service’s
include:to your SPF record and set up their DKIM key in your DNS. - Forwarded email failing DMARC. Email forwarding breaks SPF because the forwarding server’s IP is not in your SPF record. If DKIM is set up and the forwarding server does not modify the message, DMARC can still pass via DKIM alignment. This is why DKIM is essential.
- No reports received. Check that the
rua=email address is correct and that the mailbox exists. Some smaller mail providers do not send DMARC reports. Reports from Google and Microsoft usually start arriving within 24-48 hours. - Subdomain spoofing. If your DMARC record only has
p=rejectbut does not specifysp=reject, subdomains inherit the policy by default. However, you can setsp=rejectexplicitly to be sure. Attackers sometimes spoof subdomains likesupport.yourdomain.comto bypass domain-level DMARC.
DMARC Tools
Use our free tools to look up, verify, and generate DMARC records for your domain:
DMARC Lookup Tool DMARC Record GeneratorQuick Recap: DMARC Setup
- Set up SPF and DKIM first — DMARC requires both to be in place
- Start with
p=none— monitor before enforcing - Add the TXT record at
_dmarc.yourdomain.com - Review aggregate reports to find and fix alignment issues
- Gradually tighten from
none→quarantine→reject
