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.
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:
- SPF check: Gmail looks up your SPF record and checks if the sending IP is authorized → Pass or Fail
- DKIM check: Gmail retrieves your DKIM public key from DNS and verifies the email's cryptographic signature → Pass or Fail
- 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.
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):
| Requirement | Gmail | Yahoo | Microsoft |
|---|---|---|---|
| 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 | ✅ Required | Recommended |
| 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.515for 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:
| Mechanism | What It Does | Example |
|---|---|---|
ip4 | Authorizes a specific IPv4 address or range | ip4:198.51.100.25 |
ip6 | Authorizes a specific IPv6 address or range | ip6:2001:db8::/32 |
include | References another domain's SPF record | include:_spf.google.com |
a | Authorizes the IPs in the domain's A record | a |
mx | Authorizes the IPs of the domain's MX servers | mx |
~all | Soft fail — mark as suspicious but don't reject | Used at end of record |
-all | Hard fail — reject unauthorized senders | Used 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
-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:
- Remove services you no longer use — audit your SPF record quarterly
- Replace
includewithip4— if a service has stable IPs, use direct IP entries instead (these don't count toward the limit) - Use subdomains for different services — send marketing email from
marketing.yourdomain.comwith its own SPF record, transactional frommail.yourdomain.com - Remove
aandmxmechanisms — 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)
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)
"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 domaindkim-identity— thed=domain in the DKIM signature (must match your From domain for DMARC alignment)dkim-selector— maps to the DNS record ats2026._domainkey.yourdomain.comdkim-headers— which headers to include in the signature (always includefrom)
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:
- Requires alignment — at least one of SPF or DKIM must pass AND align with the From domain
- Sets a policy — tells receiving servers what to do with emails that fail authentication
- Enables reporting — sends you aggregate and forensic reports about authentication results
DMARC Policy Options: none vs quarantine vs reject
| Policy | Tag | What It Does | When to Use |
|---|---|---|---|
| None | p=none | Monitor only — deliver all emails, send reports | Initial setup and monitoring phase (first 2-4 weeks) |
| Quarantine | p=quarantine | Send failing emails to spam folder | After confirming legitimate sources pass (weeks 4-8) |
| Reject | p=reject | Block failing emails entirely — don't deliver | Full 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:
| Tag | Value | What It Does |
|---|---|---|
v | DMARC1 | Protocol version (always DMARC1) |
p | none | Policy for your domain (start with none) |
rua | mailto:... | Email address for aggregate reports (daily XML summaries) |
ruf | mailto:... | Email address for forensic/failure reports (per-message details) |
adkim | r | DKIM alignment mode: r = relaxed, s = strict |
aspf | r | SPF alignment mode: r = relaxed, s = strict |
pct | 100 | Percentage of emails the policy applies to |
fo | 1 | Generate 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:
- Week 1-4:
p=none— Monitor reports, identify all legitimate sending sources, fix any alignment issues - Week 5-8:
p=quarantine; pct=25— Quarantine 25% of failing emails, watch for false positives - Week 9-10:
p=quarantine; pct=100— Full quarantine - 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:
- dmarcian.com (free tier)
- Postmark DMARC Digests (free weekly summaries)
- EasyDMARC (free tier with dashboards)
Focus on two things in your reports:
- Unauthorized senders — IPs sending email from your domain that aren't yours (potential spoofing)
- 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
| Feature | SPF | DKIM | DMARC |
|---|---|---|---|
| Purpose | Authorize sending servers | Verify message integrity | Set policy + require alignment |
| DNS Record Location | yourdomain.com | selector._domainkey.yourdomain.com | _dmarc.yourdomain.com |
| Record Type | TXT | TXT | TXT |
| What It Checks | Sending server IP | Cryptographic signature | SPF/DKIM alignment with From domain |
| Prevents | Unauthorized servers sending as you | Email tampering in transit | Domain spoofing/phishing |
| Reporting | No | No | Yes (aggregate + forensic) |
| Requires Others? | Standalone | Standalone | Requires 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
| Mode | DMARC Tag | What It Means | Example |
|---|---|---|---|
| Relaxed | adkim=r / aspf=r | Subdomains are allowed — organizational domain must match | mail.yourdomain.com aligns with yourdomain.com ✅ |
| Strict | adkim=s / aspf=s | Exact domain match required | mail.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-identitymatches 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 atmail.yourdomain.com— not just atyourdomain.com. - DMARC cascades to subdomains. A DMARC record at
_dmarc.yourdomain.comapplies to all subdomains unless overridden. You can use thesp=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:
- Generate a new key pair with a new selector (e.g.,
s2026b) - Publish the new public key in DNS at the new selector
- Update your mail server config to sign with the new key
- Keep the old selector active in DNS for 72 hours — emails in transit still need to validate against the old key
- 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
includemechanisms 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
| Tool | What It Checks | URL |
|---|---|---|
| MXToolbox SuperTool | SPF, DKIM, DMARC, blacklists, MX | mxtoolbox.com |
| Google Admin Toolbox | MX, SPF, DKIM, DMARC validation | Google Check MX |
| mail-tester.com | Full deliverability score (send a test email) | mail-tester.com |
| dmarcian | DMARC record checker + report analysis | dmarcian.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
| Symptom | Likely Cause | Fix |
|---|---|---|
| SPF fails — "not permitted sender" | Sending IP not in SPF record | Add the server's IP with ip4: or add the service's include: |
| SPF permerror — "too many lookups" | SPF record exceeds 10 DNS lookups | Flatten includes, remove unused services, use subdomains |
| DKIM fails — "signature verification failed" | Public key in DNS doesn't match private key on server | Regenerate key pair, republish public key, verify selector matches |
| DKIM fails — "no key for signature" | DKIM DNS record not published or wrong selector | Verify the selector in your DNS matches the selector in your mail server config |
| DMARC fails — SPF and DKIM both pass individually | Alignment failure — domains don't match From header | Check Return-Path domain (SPF) and d= domain (DKIM) against From domain |
| DMARC fails — "policy evaluated: quarantine/reject" | Authentication failed and DMARC policy is enforcing | Fix the underlying SPF or DKIM issue, or temporarily set p=none to debug |
| Emails go to spam despite all three passing | Content, reputation, or engagement issue (not auth) | Check Google Postmaster Tools for domain reputation; review blacklist recovery guide |
| Multiple SPF records found | Two TXT records starting with v=spf1 | Merge 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:
- Monitor your DMARC reports for 2-4 weeks at
p=noneto catch any alignment issues - Warm up your sending IPs and domains — follow my 6-week email warmup schedule to build reputation gradually
- Set up Google Postmaster Tools to track your domain reputation and spam complaint rates
- Progress your DMARC policy from
none→quarantine→rejectas you verify all sources pass - 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.