How to set up DMARC: from your first record to p=reject
Set up DMARC step by step: SPF and DKIM first, a p=none record with reports, then quarantine and reject once your real senders pass.
On this page
To set up DMARC, turn on SPF, DKIM or both first (opens in a new tab), then publish a TXT record at _dmarc.example.com with a policy of p=none and a rua address for reports. RFC 9989 (opens in a new tab) describes that as the usual starting point. Read the reports until your legitimate mail passes, then move to quarantine and finally reject.
Before you start: SPF and DKIM
Google's DMARC setup guide (opens in a new tab) requires SPF and/or DKIM for your domain before you use DMARC, and recommends allowing 48 hours after setting them up before you add DMARC. To write an SPF record, use the SPF record generator. For the exact steps in each email service, see the provider guides below.
Check your domain now
See the SPF, DKIM and DMARC records your domain publishes and what to fix first. Free, no account needed.
Step 1: Choose where reports go
The rua tag lists the addresses that aggregate reports (opens in a new tab) are to be sent to. Without it, receivers must not send you aggregate reports.
Google (opens in a new tab) recommends a group or a dedicated mailbox for DMARC reports. If the address is on a different domain, that domain must publish its own DNS record. The DMARC record generator explains that the other domain must publish a TXT record authorizing it; without it, receivers do not send the reports. Reporting services set this up for you.
Step 2: Publish a p=none record
A DMARC record is a TXT record (opens in a new tab) at the name made by putting _dmarc in front of your domain. Start with a policy of none and your report address. This is the record the DMARC record generator builds for monitoring:
v=DMARC1; p=none; rua=mailto:dmarc-reports@example.com
Add it at your domain registrar or DNS hosting service, as Microsoft's DMARC guide (opens in a new tab) describes:
| Field | Value |
|---|---|
| Type | TXT |
| Host | _dmarc (full name _dmarc.example.com) |
| Value | v=DMARC1; p=none; rua=mailto:dmarc-reports@example.com |
Google (opens in a new tab) notes that some domain hosts add the domain name automatically, so check the record's name after saving, and repeat these steps for each domain. The DMARC record for a domain also covers all its subdomains that do not have their own DMARC record, including nonexistent ones, but each subdomain still needs its own SPF and DKIM.
A p=none policy does not change delivery: RFC 9989 (opens in a new tab) says it must not modify how receivers already handle your mail. For every tag, see DMARC record tags.
Step 3: Read the reports and fix your senders
Aggregate reports (opens in a new tab) show the sources of mail that use your domain. Every legitimate source that fails authentication or alignment must be fixed (opens in a new tab) before you publish an enforcing policy. Depending on how often you send, it can take many months (opens in a new tab) of reports before you are sure all your mail is authenticated.
Not every receiver sends reports; resource limits, local policy and privacy (opens in a new tab) are the most common reasons not to. To read a report, see DMARC reports or use the DMARC report analyzer. If mail fails along the way, see DMARC fail.
Step 4: Move to quarantine
When your reports show your legitimate senders pass, change the policy to quarantine:
v=DMARC1; p=quarantine; rua=mailto:dmarc-reports@example.com
With quarantine (opens in a new tab), the domain owner considers failing mail suspicious. What happens to it depends on the receiving system (opens in a new tab): it might be quarantined as spam, delivered to the Junk Email folder, or delivered to the Inbox with an identifier added to the subject or body.
Step 5: Move to reject
With reject (opens in a new tab), the domain owner considers failing mail a clear sign that the use of the domain is not valid:
v=DMARC1; p=reject; rua=mailto:dmarc-reports@example.com
RFC 9989 (opens in a new tab) adds these cautions before you publish it:
- If your users post to mailing lists,
rejectis not recommended. Domains that host such users should not publishp=reject. A domain that still wants it should first publishp=nonefor at least a month, thenp=quarantinefor an equally long period, comparing the results, and should keep its users off Internet mailing lists or tell them their participation may be hindered. p=rejectcan cause problems for indirect mail flows such as forwarders, role aliases and mailing lists. Mail relayed that way will most likely fail SPF, while DKIM signatures generally remain valid.- A domain at
p=rejectmust not rely on SPF alone for a DMARC pass and must sign its mail with DKIM.
Receivers still decide: final handling is local policy (opens in a new tab), and a receiver may accept failing mail even at reject. If your checker warns that the policy is not enabled, see DMARC policy not enabled; if no record is found, see no DMARC record found.
Setup guides by provider
Check your record
The check reads the public DNS records of the domain you enter and needs no account. It flags a missing DMARC record, a policy of none, no reporting address and subdomains left at none.
Sources
- Google Workspace: Set up DMARC (opens in a new tab)
- Microsoft: Set up DMARC to validate email (opens in a new tab)
- RFC 9989 §4.1: DMARC policy record (opens in a new tab)
- RFC 9989 §4.7: record format (opens in a new tab)
- RFC 9989 §5.1.3: aggregate reports (opens in a new tab)
- RFC 9989 §5.1.4: starting with p=none (opens in a new tab)
- RFC 9989 §5.1.6: fixing legitimate sources (opens in a new tab)
- RFC 9989 §5.1.7: how long monitoring takes (opens in a new tab)
- RFC 9989 §5.3.8: sending aggregate reports (opens in a new tab)
- RFC 9989 §5.4: policy enforcement (opens in a new tab)
- RFC 9989 §7.4: interoperability (opens in a new tab)
Tools for this
-
SPF, DKIM and DMARC check
Check the email records a domain publishes today and see what to fix first.
-
DMARC record generator
Build a DMARC record step by step, from monitoring to reject.
-
DMARC report analyzer
Read an aggregate report in your browser: every source, its volume and alignment.
Frequently asked questions
How long should I stay at p=none?
Until your aggregate reports show your legitimate mail passes, which can take many months. Domains whose users post to mailing lists should not publish p=reject at all; if they do, RFC 9989 asks for at least a month at p=none and an equally long period at quarantine first.
Does a DMARC record cover my subdomains?
Yes. The record for a domain covers all its subdomains that do not have their own DMARC record, including nonexistent ones.
Does p=none change how my mail is delivered?
No. A p=none policy must not change how receivers already handle your mail.
Check your domain now
See the SPF, DKIM and DMARC records your domain publishes and what to fix first. Free, no account needed.