P400Penthera live check

How to enforce DMARC

Passive · nothing stored · your own site only · Terms

A DMARC record with p=none only watches. It tells receivers to send you reports, and it blocks nothing. Anyone can still send mail in your domain’s name. Enforcing means p=quarantine, which sends failing mail to spam, or p=reject, which refuses it.

You change one DNS record, three times, over a few weeks. The care goes into finding every service that sends mail as you before you enforce.

1. List what sends mail as you

Write down everything that sends from your domain: your mail host, password resets and receipts from your app, newsletters, invoices and the support desk.

Each one must pass DMARC. That takes SPF or DKIM, and the domain that passes has to match the domain in the From address. This match is called alignment. Set up DKIM on each sender if you can: forwarding often breaks SPF, while a DKIM signature usually survives it.

2. Publish p=none and read the reports

Add a TXT record at _dmarc.your-domain.com. A domain has one DMARC record, so edit the one you have instead of adding a second.

v=DMARC1; p=none; rua=mailto:dmarc@your-domain.com

Receivers now send a daily XML report to that address, listing who sent mail as you and whether it passed. A mailbox on another domain has to agree to receive these reports, so use one on your own domain to keep it simple.

Read the reports for at least two weeks, longer if something only sends once a month, such as invoices. Fix each real sender that fails. Ignore the rest: they are the mail you want to stop.

3. Move to p=quarantine

When your real senders pass, change the record:

v=DMARC1; p=quarantine; rua=mailto:dmarc@your-domain.com

Failing mail now lands in spam, so a sender you missed can still be found and fixed. Keep reading the reports for a week or two, and ask the people who receive your invoices and resets whether anything went missing.

4. Move to p=reject

v=DMARC1; p=reject; rua=mailto:dmarc@your-domain.com

Receivers can now refuse mail that fails. Subdomains follow p unless you set sp. Keep the rua address and read the reports now and then, because each new tool that sends mail starts out failing.

If the domain sends no mail

Skip the wait. Publish two TXT records that say so, one at the domain and one at _dmarc:

v=spf1 -all
v=DMARC1; p=reject

What it cannot see

Penthera reads your public DNS records. It does not see your mail.

A clean result is not a guarantee that nobody can spoof your domain, and receivers decide for themselves what to do with failing mail.

Check it

dig +short TXT _dmarc.your-domain.com
npx penthera https://your-domain.com

dig prints the record the world sees. DNS changes can take a while to spread. npx penthera reports a missing record as medium and p=none as low. At p=quarantine or p=reject the DMARC finding goes away. It checks SPF in the same run.

Or use the check on this site, which also reads your headers, TLS and cookies, and looks for keys in your JavaScript with 24 secret patterns. Check only a domain you own, as the terms say.

Check my siteFree, passive, nothing stored. Your own site only.