Guide
DMARC setup guide
DMARC tells receiving mail servers what to do with email that claims to come from your domain but fails authentication. Set it up in three stages: publish a monitoring record, fix your senders, then enforce.
Only for websites you own or may assess · Passive checks of public pages and DNS · No exploitation, login testing, brute force, fuzzing or load testing
Last updated:
Before you start: SPF and DKIM
- DMARC passes when a message passes SPF or DKIM and that check is aligned with the domain in the From address.
- List every service that sends mail as your domain: your mailbox provider, website forms, invoicing, newsletters and support tools.
- Make sure each one is covered by your SPF record or signs with DKIM for your domain. Most services explain how in their help pages.
Record syntax
DMARC is one TXT record at _dmarc under your domain. Start in monitoring mode:
_dmarc.example.com. TXT "v=DMARC1; p=none; rua=mailto:dmarc-reports@example.com" v=DMARC1 must come first. p is the policy: none (monitor only), quarantine (treat as suspicious) or reject. rua is where aggregate reports are sent. Optional tags include sp (policy for subdomains) and adkim and aspf (strict or relaxed alignment). Publish only one DMARC record per domain.
Reporting addresses
Aggregate reports arrive as XML files, usually daily, from large mailbox providers. Use a mailbox you can check, or a DMARC reporting service that turns the files into readable charts. If the address is on another domain, that domain must publish a record allowing it, for example:
example.com._report._dmarc.reports.example.net. TXT "v=DMARC1" Moving to enforcement
- Publish p=none and collect reports for at least two to four weeks.
- Find every legitimate source that fails, and fix its SPF or DKIM alignment.
- Change to p=quarantine once legitimate mail passes, and keep watching the reports.
- Change to p=reject when you are confident nothing legitimate still fails.
- Keep reading reports: a new invoicing or marketing tool can start failing at any time.
Checking the record
Look the record up from a terminal, or use the free domain check, which also reads SPF:
dig +short TXT _dmarc.example.com Common mistakes: two DMARC records on one domain, the record published at the domain itself instead of _dmarc, a missing mailto: before the report address, and moving to p=reject before every sender passes.
Frequently asked questions
Do I need DMARC if my domain sends little email?
Yes, if you want to make it harder for others to send mail that pretends to be from your domain. A domain that sends no email at all can publish p=reject together with an SPF record of v=spf1 -all.
Will p=reject block my own email?
It can, if a service that sends as your domain is not covered by SPF or DKIM. That is why you start with p=none and read the reports first.
Next steps
- WordPress security reports
- Website maintenance report template
- Sample Report
- How the assessment works
- WordPress security reports
- Maintenance Report Template
- Client website security reports
- Website fix verification
- Monitoring for client websites
- Website security scanner for MSPs
- Website Security Scan
- Download sample PDF report
- Pricing
- Trust Center
- Security Header Checker