middleamerica.com — Email Deliverability Fix

Date started: 2026-03-08 Client contact: Vijay (vijay@middleamerica.com) Status: Monitoring — all DNS records in place, DKIM enabled by Vijay, waiting to confirm signing works

Infrastructure

Thing Where
Domain registrar GoDaddy
DNS Cloudflare — Zone ID 5e31d69b93175a126177461ac1ad4b32
Nameservers ace.ns.cloudflare.com / aida.ns.cloudflare.com
Email host Microsoft 365, purchased/managed through GoDaddy
M365 tenant middleamerica.onmicrosoft.com (tenant ID: 126476b6-00e4-4c91-a0bd-1aff586323fb)
M365 org ID NETORG17867297 (GoDaddy-managed, used in DKIM CNAME targets)
M365 auth Federated via GoDaddy SSO (sso.godaddy.com)
Website host Flywheel (middleamericacapital.flywheelsites.com)

The Problem

Vijay unable to send email to Gmail addresses for 1–2 months. Bounce comes from "PPE Hosted Dispatch" (Microsoft's Proofpoint filter). Gmail started strictly enforcing DMARC in early 2024 — emails failing SPF and missing DKIM get rejected.

Root cause: nameservers were changed when the website was built, and email DNS records didn't get set up correctly for Microsoft 365 in Cloudflare.

What We Found

What We Did (2026-03-08)

  1. Deleted 9 stale records: - 4x squarespacedns.com NS records - 4x nsone.net NS records - 1x Squarespace domain-verification TXT record

  2. Updated SPF record: - Old: v=spf1 include:secureserver.net -all - New: v=spf1 include:secureserver.net include:spf.protection.outlook.com -all

What We Did (2026-03-08, session 2)

  1. Discovered M365 tenant: middleamerica.onmicrosoft.com (found via MX pattern + DNS enumeration)

  2. Added DKIM CNAME records (standard M365 DKIM setup — no TXT key needed from client): - Initially pointed to middleamerica.onmicrosoft.com (guessed tenant) - Updated to correct targets from Vijay's M365 admin (GoDaddy-managed tenant NETORG17867297): - selector1._domainkey.middleamerica.comselector1-middleamerica-com._domainkey.NETORG17867297.y-v1.dkim.mail.microsoft - selector2._domainkey.middleamerica.comselector2-middleamerica-com._domainkey.NETORG17867297.y-v1.dkim.mail.microsoft

  3. Added autodiscover CNAME (was missing — helps Outlook client setup): - autodiscover.middleamerica.comautodiscover.outlook.com

  4. GoDaddy confirmed they have no DNS access — all changes must go through Cloudflare (as expected).

What We Did (2026-03-08, session 3)

  1. Updated DKIM CNAMEs to correct targets — Vijay provided the actual DKIM values from M365 admin (Exchange > DKIM > "Publish CNAMEs"). The GoDaddy-managed M365 uses org ID NETORG17867297, not middleamerica.onmicrosoft.com. Updated both records in Cloudflare via API.

  2. Vijay enabled DKIM signing in M365 — He toggled it on in Exchange admin center.

  3. Verified DKIM keys are live — Both selectors return RSA public keys: dig +short selector1._domainkey.middleamerica.com TXT → v=DKIM1; k=rsa; p=MIIBIjAN... dig +short selector2._domainkey.middleamerica.com TXT → v=DKIM1; k=rsa; p=MIIBIjAN...

  4. Tightened DMARC from p=none to p=quarantine:

    • Old: v=DMARC1; p=none; rua=mailto:...@dmarc-reports.cloudflare.net
    • New: v=DMARC1; p=quarantine; rua=mailto:...@dmarc-reports.cloudflare.net

Current DNS State (verified 2026-03-08 ~11:45 PM CT)

Record Value Status
MX middleamerica-com.mail.protection.outlook.com
SPF v=spf1 include:secureserver.net include:spf.protection.outlook.com -all
DKIM selector1 CNAME → selector1-middleamerica-com._domainkey.NETORG17867297.y-v1.dkim.mail.microsoft ✓ key resolves
DKIM selector2 CNAME → selector2-middleamerica-com._domainkey.NETORG17867297.y-v1.dkim.mail.microsoft ✓ key resolves
DMARC v=DMARC1; p=quarantine; rua=mailto:...@dmarc-reports.cloudflare.net
autodiscover CNAME → autodiscover.outlook.com

Outstanding

Quick Diagnostic Commands

# Verify all DNS records
dig +short middleamerica.com TXT | grep spf
dig +short selector1._domainkey.middleamerica.com TXT
dig +short selector2._domainkey.middleamerica.com TXT
dig +short _dmarc.middleamerica.com TXT
dig +short middleamerica.com MX

Billable Hours

Date Hours Description Bill To
2026-03-08 0.5 Starbucks diagnosing issue Client