Records to publish
Hosts are full names, with {domain} standing for your domain; most DNS panels want only the part before it (@ for the domain itself). Anything else in {braces} is specific to your Postmark account: copy it from Postmark's setup screen, which shows the exact record.
| For | Type | Host | Value |
|---|---|---|---|
| DKIM | TXT | {timestamp}pm._domainkey.{domain} | k=rsa; p={public-key}Copy the host and value from Sender Signatures > DNS Settings; the selector is a timestamp followed by pm. |
| Return path optional | CNAME | pm-bounces.{domain} | pm.mtasv.netRecommended because it makes SPF align; pm-bounces is the default label, and on Cloudflare it must be DNS only. |
| DMARC optional | TXT | _dmarc.{domain} | v=DMARC1; p=none; rua=mailto:{report-address}Postmark advises starting at p=none and keeping aspf=r, since the Return-Path is always a subdomain. |
SPF
No SPF include is needed: Postmark says include:spf.mtasv.net is no longer required, and an include at your root does nothing for DMARC. The Return-Path is [email protected] by default; SPF aligns only after you publish the pm-bounces.{domain} CNAME to pm.mtasv.net, and only under relaxed alignment.
DKIM
One TXT record under a dated selector ({timestamp}pm._domainkey), with the host and value shown under Sender Signatures > DNS Settings. Postmark says it uses 1024-bit keys. Rotation is manual and Postmark suggests a new key at least every 3 months; each new key gets a new selector, and Postmark switches to it once its record verifies.
DMARC alignment
DKIM aligns once the domain's DKIM TXT record is verified, because Postmark then signs with your domain's key. SPF aligns only after the custom Return-Path is verified, and only under relaxed SPF alignment (aspf=r), since the Return-Path is always a subdomain.
Common mistakes
- Strict SPF alignment (aspf=s) can never pass with Postmark, because the custom Return-Path must be a subdomain.
- A CNAME can't share its name with TXT or MX records, so the Return-Path host must be a dedicated subdomain with no separate SPF record.
- Some DNS hosts append the zone, turning pm.mtasv.net into pm.mtasv.net.example.com (add a trailing dot) or doubling the DKIM host (enter only the part before your domain).
- On Cloudflare, turn proxying off (grey cloud) for the Return-Path CNAME or it may not verify.
- Rotation changes the selector: publish the new {timestamp}pm record and let it verify before Postmark switches keys, then remove the old one a few days later.
- The API's DKIMVerified stays true even if the record is later removed from DNS, so check DNS directly to catch a deleted key.
Check that it worked
DNS changes can take a few minutes to show. Then run the free checks, no account needed:
Questions
What SPF record does Postmark need?+
What are the DKIM records for Postmark?+
Does Postmark mail pass DMARC?+
Do I need a separate DMARC record for Postmark?+
Sources
- How do I verify a domain? (Postmark support)
- How do I set up SPF for Postmark?
- How do I add a custom return-path?
- How do I set up DKIM for Postmark?
- How often should I generate/rotate a new DKIM key?
- My DKIM Record Won't Verify
- My Return-Path Record Won't Verify
- Why do emails sent through Postmark fail SPF alignment?
- Domains API (Postmark developer docs)