Steps#
Pick a mailbox for reports
Create an address such as dmarc@ninefold.example, or use a report service. Reports arrive as compressed XML files S2.
Publish a monitoring record
Add a TXT record with the host
_dmarcand the valuev=DMARC1; p=none; rua=mailto:dmarc@ninefold.example. A policy of none does not change how mail is handled S1.Verify the record
Run
dig +short TXT _dmarc.ninefold.exampleor use a DNS lookup tool, and check that exactly one record comes back and it starts with v=DMARC1.Move to quarantine
Change the policy to
p=quarantine, so mail that fails goes to spam. Keep reading reports.Move to reject
After a similar period with clean reports, change the policy to
p=reject, so receivers refuse mail that fails S1.
What you need before you start#
DMARC does not authenticate anything by itself. It reads the SPF and DKIM results and checks that at least one of them passed for a domain that aligns with the visible From address S1. If your marketing tool signs with its own domain instead of yours, DMARC fails even though DKIM passed. Fix that first, or the reports will be full of your own mail.
For a small apparel brand like Ninefold, the list of senders usually covers the staff mailbox, order and shipping emails from the store platform, the help desk and the email marketing tool. Each needs SPF or DKIM set up on ninefold.example. The SPF, DKIM and DMARC explainer covers how each record works.
Gmail requires a DMARC record from senders of more than 5,000 messages a day to personal Gmail accounts, and a policy of none is accepted S4. Yahoo asks bulk senders for at least p=none as well S5. The record takes minutes to publish, so it is worth adding at any volume.
DMARC record syntax#
A DMARC record is a TXT record published at _dmarc on your domain. It is a list of tags separated by semicolons. The v=DMARC1 tag must come first, or receivers ignore the whole record S1. These are the tags a shop needs:
| Tag | Example | What it does |
|---|---|---|
| v | v=DMARC1 | Version; must come before every other tag |
| p | p=none | Policy for your domain: none, quarantine or reject |
| rua | rua=mailto:dmarc@ninefold.example | Where to send daily aggregate reports |
| sp | sp=reject | Policy for existing subdomains, if different from p |
| np | np=reject | Policy for subdomains that do not exist |
| adkim / aspf | adkim=r | DKIM and SPF alignment: relaxed (default) or strict |
| t | t=y | Testing: asks receivers to apply one level less than the stated policy |
Leave out adkim and aspf unless you have a reason. Relaxed alignment, the default, lets mail signed by a subdomain such as mail.ninefold.example align with a From address at ninefold.example S1, and Yahoo accepts relaxed alignment S5.
DMARC record examples for each stage#
These examples use ninefold.example. Replace the domain and the report address with your own, and publish each one under the host _dmarc.
Monitoring
v=DMARC1; p=none; rua=mailto:dmarc@ninefold.example
Quarantine
v=DMARC1; p=quarantine; rua=mailto:dmarc@ninefold.example
Reject
v=DMARC1; p=reject; np=reject; rua=mailto:dmarc@ninefold.example
Older guides, including Google’s rollout page, use pct= to enforce on a percentage of mail S3. RFC 9989 removed the tag because receivers applied it reliably only at 0 or 100, and added t=y for a testing period instead S1. Receivers must ignore tags they do not know, so one that does not support np or t yet simply skips them S1.
What the rua reports tell you#
Mailbox providers that send aggregate reports usually send one a day per domain, as a compressed XML file S2. Each report lists the IP addresses that sent mail using your domain, how many messages came from each, the SPF and DKIM results, whether they aligned, and what the receiver did with the mail S2.
- A source you recognize that fails alignment is a sender you forgot to set up. Turn on DKIM for your domain in that service, or add it to SPF.
- A source you do not recognize is either a service someone on your team signed up for, or someone spoofing your domain. Ask around before you enforce.
- Forwarded mail often fails SPF and passes DKIM S1. That is expected, and one reason aligned DKIM matters most.
Raw XML is hard to read by hand, so many shops send rua to a report service that turns it into charts. If that service uses another domain, it must publish an authorization record, or receivers ignore the address S2. Report services set this up on their side.
Moving from p=none to quarantine to reject#
The order is always the same: monitor, then quarantine, then reject. What varies is how long each stage lasts. Google suggests at least a week at none S3. RFC 9989 suggests at least a month at none and a similar period at quarantine before reject S1. A shop with a handful of senders and clean reports can move faster than one with a dozen tools.
| Policy | Failing mail | When to use it |
|---|---|---|
| p=none | Delivered as usual; reports only | While you find every sender |
| p=quarantine | Treated as suspicious, usually sent to spam | Once reports show all your senders aligned |
| p=reject | Refused by the receiver | After a clean period at quarantine |
Before each change, check the last week of reports for failing sources you recognize. If staff post to mailing lists from the shop domain, RFC 9989 advises against p=reject: list mail rejected by receivers causes problems for the list and can get subscribers removed S1. Quarantine is a reasonable place to stop in that case.
DMARC for subdomains#
Without its own record, a subdomain such as news.ninefold.example uses the policy on ninefold.example. Use sp to give existing subdomains a different policy, and np for names that do not exist, which are a common way to spoof a brand S1.
Some shops send marketing email from a subdomain to keep it separate from staff mail. That subdomain can have its own _dmarc record. RFC 9989 describes testing a subdomain with p=quarantine; t=y, then switching to p=reject and removing the testing flag S1.
Setting up DMARC with Tellnod in Claude or ChatGPT#
Tellnod is an MCP connector for writing, previewing and sending marketing email from Claude or ChatGPT. You can send right away from an address on Tellnod’s shared domain, such as hello@yourshop.tellnodmail.com, within limits of 500 recipients per campaign and 1,000 emails a month. Verifying your own domain lifts those limits.
Ask in the chat: “Set up ninefold.example as my sending domain.” Tellnod gives you the SPF, DKIM and DMARC records and checks them for you. If someone else manages your DNS, ask for a setup link to send them: they can add the records in one click on supported providers, or copy them, without creating an account. You are notified in the chat and by email when the domain is verified. If you already have a DMARC record, keep one record only and make sure your Tellnod mail aligns before you tighten the policy.
Every campaign still goes through a desktop and mobile preview and a confirmation card that only you can press. Connect Tellnod to start on the free plan, or compare plans on the pricing page. For the rest of what Gmail and Yahoo expect, see the deliverability basics.
FAQ#
What is a good DMARC record to start with?
Start with v=DMARC1; p=none; rua=mailto: followed by an address you read. It changes nothing about delivery and starts the daily reports S1.
Is p=none enough for Gmail and Yahoo?
Yes, for the bulk sender requirements. Both accept a policy of none, as long as the From domain aligns with SPF or DKIM S4S5. Enforcing later adds protection against spoofing.
How long should I stay at p=none?
Until the reports show every legitimate sender aligned. Google suggests at least a week, and RFC 9989 suggests about a month before enforcement S1S3.
Can I have two DMARC records?
No. Publish one TXT record at _dmarc. If a lookup returns more than one DMARC record, receivers discard all of them, so merge them into one S1.
Does the DMARC record go on the root domain or a subdomain?
On the host _dmarc of the domain in your From address. A record on the main domain also covers subdomains that have no record of their own, through its p, sp or np tag S1.
Sources#
- [S1] RFC 9989: Domain-based Message Authentication, Reporting, and Conformance (DMARC), checked
- [S2] RFC 9990: DMARC aggregate reporting, checked
- [S3] Google Workspace Admin Help: Recommended DMARC rollout, checked
- [S4] Google Workspace Admin Help: Email sender guidelines, checked
- [S5] Yahoo Sender Hub: Sender best practices, checked