SPF DKIM DMARC Email Authentication Setup Guide
Home Blog SPF, DKIM & DMARC Setup

How to Set Up SPF, DKIM, and DMARC for Email Deliverability (Complete DNS Guide)

The exact DNS records, validation commands, and PowerMTA config I use to pass authentication on every domain — plus the alignment mistakes that silently kill your deliverability.

Akshay Bangar
Written By
Akshay Bangar
Backend Engineer & Email Infrastructure Specialist

I configure SPF, DKIM, and DMARC on every domain I manage for high-volume email infrastructure. This guide covers the exact process I follow — including the alignment mistakes I've learned to catch before they destroy deliverability.

If your emails are landing in spam — or getting silently rejected — the first thing to check is your email authentication. SPF, DKIM, and DMARC are the three DNS-based protocols that tell receiving mail servers: "This email legitimately came from us, and it wasn't tampered with."

Without all three configured correctly, Gmail, Yahoo, and Outlook will either dump your emails into spam or block them entirely at the SMTP level. Since 2024, this isn't optional — Google and Yahoo require SPF, DKIM, and DMARC for any sender pushing more than 5,000 emails per day. In 2026, Microsoft followed suit.

I've configured these records on dozens of sending domains — for cold email infrastructure, transactional email, and marketing campaigns running through PowerMTA and MailWizz. This guide is the exact process I follow every time, with real DNS record examples and the validation commands I run to confirm everything works.

Who this guide is for: Anyone who sends email from their own domain — whether through a dedicated SMTP server (PowerMTA, Postfix), an ESP (Mailchimp, SendGrid), Google Workspace, or cold email platforms. The DNS setup is the same regardless of your sending method.

1. What Are SPF, DKIM, and DMARC? (Quick Overview)

Before jumping into DNS records, here's what each protocol does in one sentence:

SPF — Who Can Send on Your Behalf

SPF (Sender Policy Framework) is a DNS TXT record that lists the IP addresses and servers authorized to send email from your domain. When a receiving server gets an email claiming to be from yourdomain.com, it checks your SPF record to see if the sending server's IP is on the list. If not, SPF fails.

DKIM — Proving the Email Wasn't Tampered With

DKIM (DomainKeys Identified Mail) adds a cryptographic digital signature to the headers of every outgoing email. The receiving server uses a public key published in your DNS to verify this signature. If the email content or headers were modified in transit, the signature won't match and DKIM fails.

DMARC — The Policy That Ties It All Together

DMARC (Domain-based Message Authentication, Reporting, and Conformance) tells receiving servers what to do when SPF or DKIM checks fail. It also adds an alignment requirement — meaning the domain in the visible "From" header must match the domain used in SPF or DKIM. DMARC also gives you reporting, so you can see who is sending email using your domain.

How All Three Work Together

Here's what happens when Gmail receives an email from your domain:

  1. SPF check: Gmail looks up your SPF record and checks if the sending IP is authorized → Pass or Fail
  2. DKIM check: Gmail retrieves your DKIM public key from DNS and verifies the email's cryptographic signature → Pass or Fail
  3. DMARC check: Gmail checks if at least one of SPF or DKIM both passed AND aligned with the From domain. Then it reads your DMARC policy to decide what to do with failures.
Key point most guides miss: SPF and DKIM can both pass individually, but DMARC can still fail if neither result aligns with the From domain. Alignment is the #1 hidden cause of deliverability problems. I cover this in detail in Section 7.

2. Why Email Authentication Is Mandatory

Google, Yahoo, and Microsoft's Bulk Sender Requirements

As of 2026, all major inbox providers enforce these requirements for bulk senders (5,000+ emails/day to their users):

RequirementGmailYahooMicrosoft
SPF or DKIM (at minimum)✅ Required✅ Required✅ Required
DMARC record published✅ Required✅ Required✅ Required
SPF/DKIM alignment with From domain✅ Required✅ Required✅ Required
One-click unsubscribe header✅ Required✅ RequiredRecommended
Spam complaint rate < 0.3%✅ Required (<0.1% ideal)✅ Required✅ Required
Valid forward/reverse DNS (PTR)✅ Required✅ Required✅ Required
TLS encryption✅ Required✅ Required✅ Required

What Happens If You Don't Set Up Authentication

Without proper authentication, your emails don't just go to spam — in 2026, they're rejected at the SMTP level:

  • Gmail: Returns 550-5.7.26 — "This mail is unauthenticated... rejected due to domain's DMARC policy"
  • Yahoo: Returns 553 5.7.2 — "Sender domain authentication not aligned"
  • Outlook: Silently routes to spam or returns 550 5.7.515 for DMARC failures

Your domain is also vulnerable to spoofing — anyone can send phishing emails pretending to be you, and without DMARC at p=reject, receiving servers have no instruction to block those fakes.

3. Step 1 — Set Up Your SPF Record

How SPF Works

SPF is a single TXT record published at your domain root. When a receiving server gets an email with a Return-Path (envelope sender) of @yourdomain.com, it queries yourdomain.com for TXT records and looks for one starting with v=spf1.

The record lists the authorized sending sources using mechanisms:

MechanismWhat It DoesExample
ip4Authorizes a specific IPv4 address or rangeip4:198.51.100.25
ip6Authorizes a specific IPv6 address or rangeip6:2001:db8::/32
includeReferences another domain's SPF recordinclude:_spf.google.com
aAuthorizes the IPs in the domain's A recorda
mxAuthorizes the IPs of the domain's MX serversmx
~allSoft fail — mark as suspicious but don't rejectUsed at end of record
-allHard fail — reject unauthorized sendersUsed at end of record

Building Your SPF Record (Exact Syntax)

Here's my standard SPF record for a domain sending through a dedicated PowerMTA server:

v=spf1 ip4:198.51.100.25 -all

Translation: "Only the server at 198.51.100.25 is authorized to send email for this domain. Reject everything else."

SPF Record Examples for Common Setups

Google Workspace only:

v=spf1 include:_spf.google.com -all

Google Workspace + SendGrid:

v=spf1 include:_spf.google.com include:sendgrid.net -all

Dedicated SMTP server (PowerMTA) + Google Workspace:

v=spf1 ip4:198.51.100.25 ip4:198.51.100.26 include:_spf.google.com -all

Multiple dedicated IPs + Mailchimp + HubSpot:

v=spf1 ip4:198.51.100.25 ip4:198.51.100.26 include:servers.mcsv.net include:_spf.hubspot.com include:_spf.google.com -all
Use -all (hard fail), not ~all (soft fail). In 2026, soft fail is treated almost identically to hard fail by Gmail and Yahoo. Using -all gives a clearer signal that you take authentication seriously. Only use ~all temporarily during initial setup while you confirm all sending sources are listed.

The SPF 10 DNS Lookup Limit (and How to Fix It)

This trips up almost everyone who uses multiple email services. The SPF specification (RFC 7208) limits SPF records to a maximum of 10 DNS lookups. Each include, a, mx, and redirect mechanism counts as one lookup — and nested includes count too.

If your SPF record exceeds 10 lookups, the entire SPF check returns a permanent error (permerror) — which means SPF fails for every email.

How to check your lookup count:

# Use MXToolbox SPF checker:
# https://mxtoolbox.com/spf.aspx

# Or count manually — each of these = 1 lookup:
include:_spf.google.com        # 1 (but _spf.google.com itself has nested includes)
include:sendgrid.net           # 1
include:servers.mcsv.net       # 1
include:_spf.hubspot.com       # 1
a                              # 1
mx                             # 1

How to fix it when you exceed 10 lookups:

  1. Remove services you no longer use — audit your SPF record quarterly
  2. Replace include with ip4 — if a service has stable IPs, use direct IP entries instead (these don't count toward the limit)
  3. Use subdomains for different services — send marketing email from marketing.yourdomain.com with its own SPF record, transactional from mail.yourdomain.com
  4. Remove a and mx mechanisms — unless your web server or MX server actually sends email, you don't need these

Validating Your SPF Record

# Check your SPF record from the command line:
dig TXT yourdomain.com +short | grep spf

# Expected output:
"v=spf1 ip4:198.51.100.25 include:_spf.google.com -all"

# Or use nslookup (Windows):
nslookup -type=txt yourdomain.com

Confirm using MXToolbox SPF Checker — it will show you the full lookup chain and flag any errors.

4. Step 2 — Set Up DKIM Signing

How DKIM Works

DKIM uses public-key cryptography. Your mail server signs every outgoing email with a private key. The receiving server looks up the corresponding public key in your DNS (at selector._domainkey.yourdomain.com) and uses it to verify the signature.

If the email body or certain headers were modified after signing (by a relay, forwarding service, or attacker), the signature won't match and DKIM fails.

Generating DKIM Keys

Generate a 2048-bit RSA key pair:

# Generate the private key
openssl genrsa -out dkim_private.key 2048

# Extract the public key
openssl rsa -in dkim_private.key -pubout -out dkim_public.key

# View the public key (you'll need this for DNS)
cat dkim_public.key

The public key output looks like this (headers removed for DNS):

MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2K4PavXoNY8eGK2u
phCdbO0l3W3aTOiyOBQDG3P1WT2R... (continues)
Always use 2048-bit keys. 1024-bit keys are considered weak and some providers will flag them. 2048-bit is the current standard and will remain secure for years to come.

Publishing the DKIM DNS Record

Create a TXT record at selector._domainkey.yourdomain.com. The "selector" is a label you choose — it identifies which key pair to use (useful when rotating keys).

I use a date-based selector format for easy tracking:

# DNS Record:
# Host:  s2026._domainkey.yourdomain.com
# Type:  TXT
# Value:
v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2K4PavXoNY8eGK2uphCdbO0l3W3aTOiyOBQDG3P1WT2R...

Record breakdown:

  • v=DKIM1 — DKIM version (always DKIM1)
  • k=rsa — key type (RSA is standard)
  • p=MII... — your public key (the full base64-encoded key, no line breaks)
Watch for DNS character limits. Many DNS providers have a 255-character limit per TXT record string. For 2048-bit keys, you'll need to split the value into multiple quoted strings: "v=DKIM1; k=rsa; p=MIIBIj..." "ANBgkqhk...". Most DNS control panels handle this automatically, but verify it with dig after publishing.

Configuring DKIM Signing in PowerMTA

If you run PowerMTA, here's the actual config I use in /etc/pmta/config:

# ── DKIM Signing Configuration ──
domain-key s2026, yourdomain.com, /etc/pmta/keys/yourdomain.com/dkim_private.key


  dkim-sign yes
  dkim-identity @yourdomain.com
  dkim-selector s2026
  dkim-key /etc/pmta/keys/yourdomain.com/dkim_private.key
  dkim-headers from:to:subject:date:message-id:content-type:mime-version

What each directive does:

  • dkim-sign yes — enables signing for this domain
  • dkim-identity — the d= domain in the DKIM signature (must match your From domain for DMARC alignment)
  • dkim-selector — maps to the DNS record at s2026._domainkey.yourdomain.com
  • dkim-headers — which headers to include in the signature (always include from)

After updating the config, restart PowerMTA:

sudo pmta reload

Validating Your DKIM Signature

# Check your DKIM DNS record:
dig TXT s2026._domainkey.yourdomain.com +short

# Expected output:
"v=DKIM1; k=rsa; p=MIIBIjANBgkqhki..."

# Send a test email to a Gmail address, then check the email headers.
# Look for:
# dkim=pass header.d=yourdomain.com header.s=s2026

Or send an email to mail-tester.com — it will tell you if DKIM passes and show you the exact signature details.

5. Step 3 — Set Up Your DMARC Policy

How DMARC Works

DMARC is a TXT record published at _dmarc.yourdomain.com. It does three things:

  1. Requires alignment — at least one of SPF or DKIM must pass AND align with the From domain
  2. Sets a policy — tells receiving servers what to do with emails that fail authentication
  3. Enables reporting — sends you aggregate and forensic reports about authentication results

DMARC Policy Options: none vs quarantine vs reject

PolicyTagWhat It DoesWhen to Use
Nonep=noneMonitor only — deliver all emails, send reportsInitial setup and monitoring phase (first 2-4 weeks)
Quarantinep=quarantineSend failing emails to spam folderAfter confirming legitimate sources pass (weeks 4-8)
Rejectp=rejectBlock failing emails entirely — don't deliverFull protection after all sources are verified

Building Your DMARC Record

Here's my standard DMARC record:

# DNS Record:
# Host:  _dmarc.yourdomain.com
# Type:  TXT
# Value:
v=DMARC1; p=none; rua=mailto:dmarc-reports@yourdomain.com; ruf=mailto:dmarc-forensic@yourdomain.com; adkim=r; aspf=r; pct=100; fo=1

Tag breakdown:

TagValueWhat It Does
vDMARC1Protocol version (always DMARC1)
pnonePolicy for your domain (start with none)
ruamailto:...Email address for aggregate reports (daily XML summaries)
rufmailto:...Email address for forensic/failure reports (per-message details)
adkimrDKIM alignment mode: r = relaxed, s = strict
aspfrSPF alignment mode: r = relaxed, s = strict
pct100Percentage of emails the policy applies to
fo1Generate forensic reports if any auth mechanism fails

My Recommended DMARC Rollout Strategy

Don't jump straight to p=reject. Here's the safe progression I follow:

  1. Week 1-4: p=none — Monitor reports, identify all legitimate sending sources, fix any alignment issues
  2. Week 5-8: p=quarantine; pct=25 — Quarantine 25% of failing emails, watch for false positives
  3. Week 9-10: p=quarantine; pct=100 — Full quarantine
  4. Week 11+: p=reject — Full protection. Unauthorized emails are blocked completely.

Understanding DMARC Reports (rua and ruf)

Aggregate reports (rua) are daily XML files sent by receiving servers. They contain:

  • Which IP addresses sent email using your domain
  • SPF and DKIM pass/fail results for each source
  • DMARC alignment results
  • Volume of emails per sending source

Parsing raw XML is painful. Use a free DMARC report analyzer:

Focus on two things in your reports:

  1. Unauthorized senders — IPs sending email from your domain that aren't yours (potential spoofing)
  2. Legitimate sources failing alignment — your own services that are passing SPF/DKIM but failing DMARC because the domains don't align

6. SPF vs DKIM vs DMARC — Quick Comparison

FeatureSPFDKIMDMARC
PurposeAuthorize sending serversVerify message integritySet policy + require alignment
DNS Record Locationyourdomain.comselector._domainkey.yourdomain.com_dmarc.yourdomain.com
Record TypeTXTTXTTXT
What It ChecksSending server IPCryptographic signatureSPF/DKIM alignment with From domain
PreventsUnauthorized servers sending as youEmail tampering in transitDomain spoofing/phishing
ReportingNoNoYes (aggregate + forensic)
Requires Others?StandaloneStandaloneRequires SPF or DKIM

7. Understanding Alignment (The #1 Reason "Everything Looks Right But It Still Fails")

This is where most email authentication guides stop — and where most deliverability problems actually begin.

Alignment means the domain in the visible From header must match the domain used in SPF or DKIM. DMARC requires at least one of these alignments to pass.

What Is SPF Alignment?

SPF alignment compares:

  • From header domain (what the recipient sees): you@yourdomain.com
  • Return-Path domain (envelope sender, often hidden): bounce@yourdomain.com

If both are yourdomain.com (or subdomains in relaxed mode), SPF alignment passes.

Common failure: Many ESPs set the Return-Path to their own domain (e.g., bounce.sendgrid.net). SPF passes for SendGrid's domain, but it doesn't align with your From domain — so DMARC sees an SPF alignment failure.

What Is DKIM Alignment?

DKIM alignment compares:

  • From header domain: you@yourdomain.com
  • DKIM d= domain (in the DKIM signature): d=yourdomain.com

If both match (or are subdomains in relaxed mode), DKIM alignment passes.

This is why DKIM alignment is often your lifeline. Even if SPF alignment fails (because the ESP uses their own Return-Path), DKIM alignment can still pass if the ESP signs with your domain's key.

Relaxed vs Strict Alignment

ModeDMARC TagWhat It MeansExample
Relaxedadkim=r / aspf=rSubdomains are allowed — organizational domain must matchmail.yourdomain.com aligns with yourdomain.com
Strictadkim=s / aspf=sExact domain match requiredmail.yourdomain.com does NOT align with yourdomain.com

My recommendation: Start with relaxed alignment (adkim=r; aspf=r). Only move to strict if you have a specific security requirement that demands it. Relaxed mode allows subdomains to align, which is necessary for many legitimate sending configurations.

How to Diagnose and Fix Alignment Failures

Send a test email to a Gmail address, then view the original message headers. Look for these three lines:

Return-Path: <bounce@yourdomain.com>           ← SPF checks this domain
From: you@yourdomain.com                        ← DMARC compares against this
DKIM-Signature: ... d=yourdomain.com; s=s2026;  ← DKIM checks this domain

If SPF alignment fails (Return-Path domain ≠ From domain):

  • Configure your ESP to use a custom Return-Path on your domain
  • Or rely on DKIM alignment instead (if the ESP signs with your domain key)

If DKIM alignment fails (d= domain ≠ From domain):

  • Configure your ESP/mail server to sign with your domain, not theirs
  • In PowerMTA, verify the dkim-identity matches your From domain

8. Multi-Domain and Subdomain Authentication

Setting Up Auth for Outreach Domains

If you use separate domains for cold outreach (which you should — never send cold email from your primary brand domain), each domain needs its own complete authentication:

  • Separate SPF record at each domain root
  • Separate DKIM key pair and DNS record per domain
  • Separate DMARC record at _dmarc.outreachdomain.com

I typically register 3-5 outreach domains per brand (e.g., trybrand.com, getbrand.io, brandmail.co) and configure each with identical authentication. For more on this setup, see my email warmup guide.

Subdomain Inheritance Rules

This catches people by surprise:

  • SPF does NOT inherit. If you send from mail.yourdomain.com, you need an SPF record at mail.yourdomain.com — not just at yourdomain.com.
  • DMARC cascades to subdomains. A DMARC record at _dmarc.yourdomain.com applies to all subdomains unless overridden. You can use the sp= tag to set a different policy for subdomains: sp=reject.
  • DKIM is selector-specific. The selector DNS record determines which key to use. You can have different selectors for different subdomains.

9. Post-Setup Maintenance (What Nobody Tells You)

Setting up authentication once isn't enough. Your DNS records need ongoing maintenance — and most guides completely ignore this.

DKIM Key Rotation Schedule

Rotate your DKIM keys every 6 to 12 months. Here's my process:

  1. Generate a new key pair with a new selector (e.g., s2026b)
  2. Publish the new public key in DNS at the new selector
  3. Update your mail server config to sign with the new key
  4. Keep the old selector active in DNS for 72 hours — emails in transit still need to validate against the old key
  5. Remove the old selector after 72 hours

SPF Record Auditing

Every time you add or remove an email service (new ESP, CRM, helpdesk tool), update your SPF record. I audit SPF records quarterly using this checklist:

  • Are all include mechanisms still needed?
  • Have any services changed their SPF domains?
  • Am I still under the 10-lookup limit?
  • Are there any IP addresses that should be added or removed?

Ongoing DMARC Report Monitoring

Review your DMARC aggregate reports at least monthly. Watch for:

  • New unauthorized sending sources (potential spoofing attempts)
  • Legitimate services that started failing (often after the service updates their infrastructure)
  • Spikes in authentication failures that correlate with deliverability drops

10. Validation and Testing Checklist

Command-Line Validation

# ── Check SPF ──
dig TXT yourdomain.com +short | grep spf
# Expected: "v=spf1 ip4:198.51.100.25 ... -all"

# ── Check DKIM ──
dig TXT s2026._domainkey.yourdomain.com +short
# Expected: "v=DKIM1; k=rsa; p=MIIBIj..."

# ── Check DMARC ──
dig TXT _dmarc.yourdomain.com +short
# Expected: "v=DMARC1; p=none; rua=mailto:..."

# ── Windows users (use nslookup instead of dig) ──
nslookup -type=txt yourdomain.com
nslookup -type=txt s2026._domainkey.yourdomain.com
nslookup -type=txt _dmarc.yourdomain.com

Online Validation Tools

ToolWhat It ChecksURL
MXToolbox SuperToolSPF, DKIM, DMARC, blacklists, MXmxtoolbox.com
Google Admin ToolboxMX, SPF, DKIM, DMARC validationGoogle Check MX
mail-tester.comFull deliverability score (send a test email)mail-tester.com
dmarcianDMARC record checker + report analysisdmarcian.com

Sending a Test Email and Reading the Headers

Send an email to a Gmail address. Open the email → click the three dots → "Show original." Look for these authentication results:

Authentication-Results: mx.google.com;
  spf=pass (google.com: domain of bounce@yourdomain.com designates 198.51.100.25 as permitted sender)
  dkim=pass header.d=yourdomain.com header.s=s2026
  dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=yourdomain.com

All three should show pass. If any shows fail or softfail, check the specific error message — it will tell you exactly what went wrong.

11. Common Mistakes and Troubleshooting

SymptomLikely CauseFix
SPF fails — "not permitted sender"Sending IP not in SPF recordAdd the server's IP with ip4: or add the service's include:
SPF permerror — "too many lookups"SPF record exceeds 10 DNS lookupsFlatten includes, remove unused services, use subdomains
DKIM fails — "signature verification failed"Public key in DNS doesn't match private key on serverRegenerate key pair, republish public key, verify selector matches
DKIM fails — "no key for signature"DKIM DNS record not published or wrong selectorVerify the selector in your DNS matches the selector in your mail server config
DMARC fails — SPF and DKIM both pass individuallyAlignment failure — domains don't match From headerCheck Return-Path domain (SPF) and d= domain (DKIM) against From domain
DMARC fails — "policy evaluated: quarantine/reject"Authentication failed and DMARC policy is enforcingFix the underlying SPF or DKIM issue, or temporarily set p=none to debug
Emails go to spam despite all three passingContent, reputation, or engagement issue (not auth)Check Google Postmaster Tools for domain reputation; review blacklist recovery guide
Multiple SPF records foundTwo TXT records starting with v=spf1Merge into a single SPF record — you can only have ONE per domain

Frequently Asked Questions

Do I need SPF, DKIM, and DMARC? Can I skip one?

You need all three. SPF authorizes sending servers, DKIM proves message integrity, and DMARC ties them together with alignment and policy. Since 2024, Google and Yahoo require all three for bulk senders. Without all three, your emails will be rejected or sent to spam.

What DMARC policy should I start with?

Start with p=none. This is monitor-only mode — emails are delivered normally, but you receive reports about authentication failures. Run p=none for 2-4 weeks while monitoring reports. Once all legitimate sources pass, move to p=quarantine, then p=reject.

What is the SPF 10 DNS lookup limit and how do I fix it?

The SPF spec limits records to 10 DNS lookups. Each include, a, mx, and redirect counts as one (nested includes count too). Exceeding 10 causes a permanent error and SPF fails on every email. Fix it by removing unused includes, replacing include with direct ip4 entries, or using subdomains with separate SPF records.

How do I check if my records are set up correctly?

Three methods: (1) Command line: dig TXT yourdomain.com +short for SPF, dig TXT selector._domainkey.yourdomain.com for DKIM, dig TXT _dmarc.yourdomain.com for DMARC. (2) MXToolbox SuperTool or Google Admin Toolbox. (3) Send a test email to mail-tester.com for a full deliverability score.

What happens if I don't set up email authentication?

Your emails are either sent to spam or rejected at the SMTP level. Gmail returns 550-5.7.26, Yahoo returns 553 5.7.2. Your domain is also vulnerable to spoofing — anyone can send phishing emails pretending to be you.

How often should I rotate my DKIM keys?

Every 6 to 12 months. Generate a new key pair with a new selector, publish it in DNS, update your mail server, and keep the old selector active for 72 hours to allow in-transit emails to validate.

What is DMARC alignment and why do my emails still fail?

Alignment means the From domain must match the Return-Path domain (SPF alignment) or the DKIM d= domain (DKIM alignment). SPF and DKIM can both pass individually, but if neither aligns with the From domain, DMARC fails. This is the #1 cause of "everything looks right but it still fails." Check your email headers for the Return-Path and d= domains.

Can SPF, DKIM, and DMARC prevent phishing?

Yes, when configured with p=reject. SPF ensures only authorized servers send from your domain, DKIM proves message integrity, and DMARC's reject policy tells receiving servers to block any email that fails authentication. This prevents attackers from sending emails that impersonate your domain.

How do I set up authentication for multiple domains or subdomains?

Each domain needs its own SPF, DKIM key, and DMARC record. SPF does NOT inherit from parent domains — mail.yourdomain.com needs its own SPF record. DMARC does cascade to subdomains (use the sp= tag to control subdomain policy). DKIM is per selector, so you can have different keys per subdomain.

How do I read DMARC aggregate reports?

Aggregate reports (rua) are XML files showing which IPs sent email using your domain and whether they passed authentication. Use a free analyzer like dmarcian, Postmark DMARC, or EasyDMARC to parse them into readable dashboards. Focus on identifying unauthorized senders and fixing legitimate sources that fail alignment.

What to Do Next

Once your SPF, DKIM, and DMARC records are live and validated:

  1. Monitor your DMARC reports for 2-4 weeks at p=none to catch any alignment issues
  2. Warm up your sending IPs and domains — follow my 6-week email warmup schedule to build reputation gradually
  3. Set up Google Postmaster Tools to track your domain reputation and spam complaint rates
  4. Progress your DMARC policy from nonequarantinereject as you verify all sources pass
  5. If you get blacklisted, follow my domain blacklist recovery guide to restore your reputation

Email authentication isn't a set-it-and-forget-it task. Audit your SPF record every time you add or remove a sending service. Rotate your DKIM keys on a schedule. And check your DMARC reports regularly to catch unauthorized use of your domain.

If you're building a complete email sending infrastructure from scratch, start with my PowerMTA configuration guide — it covers server setup, Virtual MTAs, IP rotation, and MailWizz integration. This guide (SPF/DKIM/DMARC) is the authentication layer that sits on top of that infrastructure.

Need help? If you're setting up email infrastructure and need hands-on assistance with authentication, deliverability optimization, or PowerMTA configuration, check out my email infrastructure services or reach out directly.