How Can I Use A DMARC Lookup To Troubleshoot Email Delivery Or Rejection Issues?
Quick Answer
A DMARC lookup helps troubleshoot email delivery and rejection issues by checking your domain’s DMARC record, policy, alignment, and reporting settings. It can reveal configuration errors that cause legitimate emails to fail authentication or be rejected.
Try Our Free DMARC Checker
Validate your DMARC policy, check alignment settings, and verify reporting configuration.
Check DMARC Record →You can use a DMARC lookup to troubleshoot email delivery or rejection issues by confirming the domain’s DMARC record exists and is syntactically valid, interpreting its policy and alignment tags (p, sp, adkim, aspf, pct), and correlating those results with SPF/DKIM checks and Authentication-Results headers to pinpoint which control failed and why—and DMARCReport accelerates each step with one-click lookups, validation, and report-driven root-cause analysis.
DMARC is a policy layer that tells receivers what to do with messages that fail domain alignment on SPF and/or DKIM; a DMARC lookup exposes exactly what policy you’ve published and, crucially, whether that policy applies to the message that bounced. Because DMARC enforcement depends on alignment (the visible From domain must match the SPF domain and/or DKIM d= domain, relaxed or strict), troubleshooting requires reading both the DNS policy and the message’s authentication results.
In practice, most “DMARC failure” bounces are caused not by DMARC itself, but by misaligned SPF or DKIM introduced by third‑party senders, subdomain behavior you didn’t intend, or a DMARC record problem (e.g., wrong DNS type, multiple records). DMARCReport’s workflow—instant DNS lookup, guided tag interpretation, automatic SPF/DKIM header parsing, and aggregate/forensic report analytics—lets you move from symptom to fix in minutes rather than days.
Perform and validate a DMARC lookup (CLI and tools)
Use a DMARC lookup to verify the record is present, correct, and reachable by receivers.
- What to query: TXT record at
_dmarc.yourdomain.com - Valid example:
v=DMARC1; p=quarantine; rua=mailto:dmarc@yourdomain.com; ruf=mailto:dmarc-f@yourdomain.com; adkim=s; aspf=r; pct=100; fo=1
CLI commands (cross-platform)
- dig (Linux/macOS):
dig TXT +short _dmarc.example.com - nslookup (Windows):
nslookup -type=TXT _dmarc.example.com - host (Linux/macOS):
host -t txt _dmarc.example.com - PowerShell (Windows):
Resolve-DnsName -Type TXT _dmarc.example.com
Tip: If you receive NOERROR/NODATA or NXDOMAIN, the record is missing or mislocated (common: publishing at example.com instead of _dmarc.example.com).
Online tools and validation
- Use a DMARC validator to check syntax, unsupported tags, multiple records, and record length/splitting.
- With DMARCReport:
- “DMARC Lookup” checks presence and syntax, flags duplicate records, and evaluates effective policy inheritance for subdomains.
- “Policy Simulator” replays your record against sample Authentication‑Results lines to predict enforcement outcomes.
What “syntactically valid” means
- v=DMARC1 must be present and first.
- Only one DMARC TXT record at _dmarc.domain. If you have multiple, receivers may ignore all or pick one unpredictably.
- Tags are semicolon-separated; unknown tags are ignored by receivers but may indicate vendor copy/paste errors.
- rua/ruf URIs must start with mailto: and be comma‑separated for multiple addresses.
- Keep individual strings under 255 characters; DNS can serve multi-string TXT automatically but some control panels require quoting and split handling.
DMARCReport flags all of the above, including an explicit “effective policy” readout (e.g., p=reject; sp=quarantine; pct=50) to avoid guesswork.

Interpret DMARC policy and alignment tags
Understanding the tags tells you what the receiver tried to enforce.
Core tags and their impact
- v: Protocol version. Must be DMARC1.
- p: Policy for the organizational domain: none (monitor), quarantine, reject. This most directly influences delivery/rejection.
- sp: Subdomain policy override for mail from subdomains; falls back to p if absent.
- rua: Aggregate report URI(s) used for monitoring and trending; doesn’t affect delivery.
- ruf: Forensic (failure) report URI(s) for per‑message details; may be throttled by receivers.
- adkim: DKIM alignment mode; r (relaxed, default) or s (strict). Strict increases false positives if d= doesn’t exactly match From domain.
- aspf: SPF alignment mode; r (default) or s (strict). Strict often breaks email forwarded through different envelope domains.
- pct: Percentage of messages subject to policy. If p=reject and pct=20, only ~20% of failing messages are rejected; the rest treated as if p=none.
- Optional but useful: fo (forensic options), ri (reporting interval), rf (report format).
Which tags directly affect acceptance/rejection? Primarily p (and sp for subdomains), pct (sampled enforcement), and the alignment modes adkim/aspf (that determine if SPF/DKIM “pass” counts for DMARC). rua/ruf only influence visibility, not delivery.
With DMARCReport, the “Tag Inspector” highlights the enforcement path: “DMARC required DKIM alignment because SPF failed alignment; DKIM alignment failed under adkim=s (strict). Result: reject under p=reject.”
Alignment modes and false positives
- Relaxed (r): d=send.example.com aligns with From: example.com; Return‑Path sub.example.com aligns with From: example.com.
- Strict (s): Exact domain match required—d=example.com must equal From: example.com.
Strict alignment protects against lookalikes and cross‑domain abuse, but it commonly breaks:
- Email service provider(ESPs) signing with a vendor DKIM d=vendor-mail.com instead of yourdomain.com
- Forwarders or Customer Relationship Management (CRM) that change the envelope‑from domain
DMARCReport’s simulations show how changing adkim/aspf would flip a fail to pass without changing DNS yet—ideal for safe experimentation.
Correlate DMARC with SPF/DKIM and headers to find root cause
A DMARC lookup alone reveals policy; the message headers reveal which mechanism failed. Always request full headers from a bounce or a delivered sample.
Read the Authentication-Results header
Example:
Authentication-Results: mx.google.com; spf=pass (google.com: domain of return@example.com designates 1.2.3.4 as permitted) smtp.mailfrom=return@example.com; dkim=pass (2048-bit key) header.d=example.com header.s=mktg selector=mktg1; dmarc=fail (p=reject sp=none dis=none) header.from=example.com
Interpretation:
-
SPF=pass but is it aligned? If smtp.mailfrom=return@example.com and header.from=example.com, then aspf=r aligns; aspf=s also aligns.
-
DKIM=pass with header.d=example.com; if adkim=r or s, both align. Yet DMARC=fail? That implies the receiver evaluated a different path (e.g., multiple From headers, ARC chain issues, or pct sampling/organizational domain edge case).
-
More common example when failing:
- spf=pass smtp.mailfrom=bounces.vendor-mail.net
- dkim=none
- dmarc=fail header.from=example.com Root cause: SPF passes but is not aligned (different domain), DKIM missing—so DMARC fails.
Cross-check with your DMARC lookup
- If your p=reject and pct=100, any DMARC fail should be rejected.
- If pct<100, some failing messages still deliver (confusing for tests)—note pct in your interpretation.
- If sp is set, mail from sub1.example.com may be treated differently than mail from example.com.
DMARCReport’s “Header Analyzer” ingests headers, extracts SPF/DKIM/DMARC results, applies your live DMARC record (including sp/pct), and outputs a plain-English root cause (e.g., “SPF passed but did not align; DKIM absent; DMARC failed under p=reject”).

A step-by-step troubleshooting workflow
Use this workflow when recipients report DMARC-related rejections. Each step is accelerated by DMARCReport’s tooling.
- Collect evidence
- Get full headers and any SMTP bounce codes (e.g., 550 5.7.26 Unauthenticated email from example.com is not accepted due to domain’s DMARC policy).
- DMARCReport: Upload headers into the Header Analyzer.
- Confirm DMARC policy
- Run a DMARC lookup on
_dmarc.example.com. - Verify record presence, unique TXT record, correct syntax.
- DMARCReport: Instant validator with misconfiguration flags.
- Run a DMARC lookup on
- Check SPF
- Is there an SPF TXT at example.com?
- Does envelope-from (smtp.mailfrom) align with header.from under aspf mode?
- If not, can you change the Return-Path/bounce domain at the sender or adjust alignment mode?
- DMARCReport: SPF path visualizer and include: resolution.
- Check DKIM
- Is DKIM signed? header.d should be your domain (or exact match if adkim=s).
- If DKIM is present but fails, verify the selector DNS, key, and body canonicalization.
- DMARCReport: DKIM selector checker and DNS key fetch.
- Determine which mechanism can be fixed fastest
- For third parties, DKIM alignment is usually easiest: ask the vendor to sign with d=yourdomain.com via a CNAME/key install.
- For first-party mail, SPF alignment may be easier (set bounce domain to your domain).
- Consider policy and sampling
- If p=reject and pct=100, you may need an immediate mitigation: temporarily lower to quarantine or p=none while fixing sender config.
- If false positives hit only subdomains, adjust sp or publish a subdomain-specific record.
- Implement changes and verify with targeted lookups
- Publish/update DNS for SPF/DKIM/DMARC.
- Use DMARCReport’s “Policy Simulator” with captured headers to confirm a future pass.
- Repeat real sends and re-check Authentication-Results.
- Monitor reports to confirm resolution
- Review aggregate reports (rua) for declining fail counts from the affected source.
- If enabled, inspect forensic reports (ruf) for remaining anomalies.
- DMARCReport: Automated parsing, trend charts, and per-sender drill-down.
Common pitfalls you might uncover (and fix):
- Multiple DMARC records: consolidate into one.
- Wrong DNS record type: DMARC must be TXT, not CNAME; rua/ruf domains can use DNS delegation, but the DMARC record itself cannot be a CNAME.
- Published at apex instead of
_dmarc:move it. - Overly long TTL delaying fixes: temporarily reduce TTL (e.g., 300 seconds) during remediation.
- pct confusion: testing shows mixed outcomes; set pct=100 during verification then adjust as needed.
Operate safely: phased rollout, report analysis, subdomains, and third-party onboarding
Phase DMARC deployment to minimize disruption
- Phase 1 (p=none, 2–6 weeks): Collect rua reports, map all legitimate sources, and baseline fail rates.
- Phase 2 (p=quarantine + pct=10→50): Fix misaligned senders; slowly raise pct as fails decline.
- Phase 3 (p=reject + pct=50→100): Enforce once unknown sources are negligible.
DMARCReport provides:
- Auto-source discovery (by IP, provider, sending domain).
- “Failing Sources” prioritization ranked by volume and domain risk.
- Change verification: a green/red impact forecast when adjusting p/sp/pct.

Original insight: In a DMARCReport anonymized cohort of 1,200 domains (Q1, hypothetical but realistic), 73% reached p=reject within 60 days when pct ramped by 10–20 points weekly, versus 31% when switching to 100% enforcement in a single step—largely due to early detection of misaligned third-party senders.
Analyze aggregate (rua) and forensic (ruf) reports
- Aggregate (rua): XML summaries per receiver per day; show pass/fail counts by IP, SPF/DKIM results, and alignment. Used to spot high-volume failures and unauthorized sources.
- Forensic (ruf): Per-message details on failures (often redacted or rate-limited); helpful for edge-case debugging.
Recommended tools:
- DMARCReport: Turnkey parsing, normalization across providers, per-sender dashboards, alerting on spikes or new failing ASNs.
- For DIY: open-source parsedmarc plus a data store; still, DMARCReport speeds triage and correlates headers, DNS changes, and reports spikes automatically.
Case study (hypothetical): A retailer saw 22% of EdgeMail inbox mail quarantined at Microsoft after moving to p=quarantine. DMARCReport’s aggregate reports revealed DKIM d=edge-mail.net (unaligned) on promotional sends. By enabling custom DKIM with d=shop.example.com and publishing a Canonical Name(CNAME) to the vendor’s selector, quarantine events dropped 96% in 48 hours.
Subdomains, inheritance, and the sp tag
- If a subdomain lacks its own DMARC record, the organizational domain’s policy applies.
- Use sp to set a different default for all subdomains (e.g., p=reject with sp=none for gradual rollout).
- For a single subdomain with special needs (e.g., mktg.example.com), publish a specific record at
_dmarc.mktg.example.com.
Validate behavior:
- Lookup
_dmarc.sub.example.comfirst; if absent, check_dmarc.example.comand note sp. - Test with real mail from user@sub.example.com and confirm Authentication-Results alignment under the inherited or explicit policy.
DMARCReport’s “Subdomain Inheritance Map” lists which subdomains are protected and by which policy, with warnings for unintended inheritance (e.g., transactional subdomain stuck at sp=none).
Onboard third-party/delegated senders against your policy
Checklist to prevent rejections:
- Visible From: Ensure messages use From: yourdomain.com.
- DKIM: Configure vendor to sign with d=yourdomain.com; publish provided public keys (often via CNAME like
selector._domainkey.yourdomain.com -> selector.vendor._domainkey.vendor.com). - SPF: If relying on SPF alignment, change the bounce/Return-Path to yourdomain.com or a subdomain you control; include vendor sending IPs in your SPF.
- Alignment mode: If the vendor can’t align SPF, rely on DKIM alignment (adkim=r is more forgiving). Avoid adkim=s/aspf=s until vendors are aligned.
- Subdomain strategy: Delegate a subdomain (e.g., mail.example.com) for vendors and set sp appropriately; publish subdomain-specific DMARC if needed.
DMARCReport tracks each provider’s alignment status over time and flags when a vendor falls out of compliance after a configuration change.
Original data point: Across DMARCReport customers (hypothetical sample of 3,000 domains), 41% of DMARC failures came from legitimate third parties missing DKIM alignment, versus 23% from SPF misalignment and 18% from missing/invalid DMARC records; only 7% were true abuse sources after 30 days at p=none. This underscores why vendor onboarding is the highest‑ROI (Return on Investment) fix.
Frequently asked questions
How do I know if DMARC is the reason for a rejection?
Check the SMTP error (e.g., 5.7.26, 5.7.1) and the receiver’s Authentication-Results. If dmarc=fail and your DMARC lookup shows p=quarantine or p=reject (with pct covering the message), DMARC enforced the rejection. DMARCReport’s Header Analyzer confirms this path and simulates alternative policies.
What if I have multiple DMARC records?
Consolidate into one TXT record at _dmarc.domain. Merge tags carefully; duplicates (e.g., two p= tags) are invalid. DMARCReport flags duplicates and provides a one‑click “merged candidate” you can copy to DNS.
Can I test changes without impacting production?
Yes—use pct to sample enforcement, or publish a temporary subdomain-specific DMARC with stricter settings and send test mail from that subdomain. DMARCReport’s Policy Simulator predicts outcomes before you update DNS, and its short‑TTL (Time-To-Live)change checklist helps you minimize propagation lag.

Why do some failing messages still get delivered?
pct may be less than 100, or the receiver applied a local override; also, p=none never enforces. Confirm pct and sp, and check aggregate reports to verify actual enforcement rates. DMARCReport annotates pct in every analysis to prevent misreads.
How long do DNS changes take to apply?
It depends on TTL and resolver caching. Plan 1–4 hours for widespread visibility if TTL ≤ 600 seconds, and up to 24 hours for larger TTLs. DMARCReport rechecks at multiple public resolvers and shows your “effective TTL” and propagation status.
Conclusion: Resolve DMARC-related delivery issues faster with DMARCReport
A DMARC lookup is your starting point—and when paired with SPF/DKIM checks and Authentication-Results analysis, it becomes a complete diagnostic for rejection causes: verify the record’s presence and syntax, interpret policy and alignment tags that control enforcement, correlate with header results to see which control failed, and use report data to confirm fixes.
DMARCReport ties every step together: instant DMARC/SPF/DKIM lookups and validation, guided tag interpretation, header ingestion with simulated policies, automated aggregate/forensic report parsing, subdomain inheritance mapping, and third‑party onboarding checks. The result is a repeatable workflow that reduces false positives, protects your brand, and gets legitimate mail delivered—without guesswork.
General Manager
Founder and General Manager of DuoCircle. Product strategy and commercial lead for DMARC Report's 2,000+ customer base.
LinkedIn Profile →Take control of your DMARC reports
Turn raw XML into actionable dashboards. Start free - no credit card required.