MX Troubleshooting: A Diagnostic Workflow for Broken Mail Delivery

A ranked, step-by-step sequence for isolating exactly which layer is broken when mail stops arriving — instead of guessing.

📅 Published July 2026· ⏳ 19 min read· ✍️ ToolsNovaHub Editorial Team
🛠️ Related tool: Open MX Lookup →

Diagnose the Layer, Not the Symptom

"Mail isn't arriving" describes a symptom, not a cause, and it can originate from at least four genuinely different layers: DNS resolution of the MX record itself, network reachability to the host that record points at, SMTP-level acceptance or rejection once connected, and internal routing after the message has already cleared your perimeter. Jumping straight to changing DNS records because "it's probably DNS" wastes time when the actual fault is a firewall rule or a full disk on the mail server. A structured diagnostic sequence, worked from the outside in, isolates the failing layer in minutes rather than hours of guessing.

This guide is that sequence, plus a ranked list of what actually causes MX-related delivery problems in practice, ordered by how often each one turns out to be the real culprit.

ToolsNovaHub Pro Tip
Always query a public resolver (8.8.8.8, 1.1.1.1) directly with dig, not just your local machine's default DNS. Corporate and ISP resolvers cache aggressively and can show you stale results long after the authoritative record has changed.
⚠️
Common Beginner Mistake
Changing the MX record itself as a first troubleshooting step when the actual problem is downstream — a firewall blocking port 25, a full mail queue, or an internal routing rule. This adds a second, unrelated variable to an already-confusing situation.

The Diagnostic Sequence

  1. Confirm the MX record resolves correctly, from an external resolver. Run dig MX yourdomain.com +short @8.8.8.8 and compare the result against what you expect. If nothing returns, or it returns a hostname you didn't set, the problem is at the DNS layer — check your zone file or DNS provider's dashboard directly.
  2. Confirm every MX hostname resolves to an IP address. Run dig A mxhostname.example.com +short for each listed host. An MX record pointing at a hostname with no A/AAAA record is a dead end — sending servers will skip it entirely, silently degrading you to whatever's next in priority, or failing completely if it was your only host.
  3. Confirm the host actually accepts connections on port 25 from outside your network. A quick telnet mxhost.example.com 25 from an external vantage point (not your own office network, which may have permissive internal firewall rules that don't reflect what the internet sees) tests basic reachability. No banner within a few seconds means a firewall or the mail service itself is the blocker.
  4. Check whether the connection is accepted but rejected at the SMTP protocol level. If telnet connects and you see a banner, issue EHLO test.com manually and watch for an immediate 4xx/5xx response — this points to a policy-level rejection (rate limiting, blocklisting, greylisting) rather than a network problem.
  5. If external delivery succeeds but the message doesn't reach the intended mailbox, the fault has moved past MX entirely and into internal routing — check gateway logs, transport rules, and connector configuration next.
LayerDiagnostic Command/CheckConfirms
DNS resolutiondig MX domain +short @8.8.8.8MX record exists and matches expectation
Hostname resolutiondig A/AAAA mxhostname +shortMX target actually has a usable IP
Network reachabilitytelnet mxhost 25 from an external hostPort 25 is open and reachable externally
SMTP acceptanceManual EHLO after connectingServer accepts vs rejects at protocol level
Internal routingGateway/connector/transport logsMessage movement after perimeter entry

Resolver Behavior and Why Results Differ by Location

A frequent source of confusion: an MX change looks "not applied" from one network but works fine from another. This is caching behavior, not a real inconsistency in your DNS. Every resolver — corporate, ISP, public — caches a DNS answer for the duration of its TTL, independently of every other resolver on the internet. A resolver that queried your domain an hour before you made a change will keep serving its cached (stale) answer until that specific cache entry expires, regardless of what any other resolver, or the authoritative server itself, is now returning. This is why testing from a single location and declaring a fix "confirmed" is unreliable — the authoritative answer may be correct while multiple cached copies around the internet still lag behind it.

SymptomExplanation
Change works from home, not from officeOffice's corporate resolver has a longer-lived cached copy of the old record
Change appears live on one public DNS checker, not anotherEach checker queries independently and may have cached at different times
Change is instant everywhereOnly expected if TTL was already very low (e.g. under 5 minutes) before the change

Common Misconfigurations Ranked by Frequency

Based on the patterns that come up repeatedly in mail delivery troubleshooting, roughly in order of how often each turns out to be the actual cause:

  1. Stale MX record left over from a platform migration — an old on-prem or previous-provider host still listed, sometimes at a lower priority than the current platform by mistake, silently intercepting mail intended for the new system.
  2. Firewall blocking inbound port 25 — often introduced by an unrelated security hardening pass that didn't account for mail server exceptions.
  3. MX hostname with no A/AAAA record — usually from a partial DNS migration where the MX record was updated but the corresponding host record wasn't created on the new provider.
  4. Two hosts accidentally sharing the same priority — intended as primary/backup but configured identically, splitting traffic to a backup host that isn't provisioned to handle full load.
  5. TTL left extremely high during an emergency change — the fix is correct in DNS but propagation across the internet takes far longer than expected because nobody lowered TTL ahead of time.
  6. Recipient validation out of sync (in gateway/relay scenarios) — legitimate mail bounced because an intermediate relay's recipient list wasn't updated when a mailbox was added.
MisconfigurationTypical Root CauseFix
Stale MX recordMigration cleanup skippedAudit and remove decommissioned hosts from DNS
Port 25 blockedSecurity hardening without mail exceptionAdd explicit inbound allow rule for SMTP
Dead-end MX hostnamePartial DNS migrationCreate matching A/AAAA record on current provider
Unintended tied priorityCopy-paste record without adjusting valueSet backup to a distinctly higher number
Slow propagation of a fixHigh TTL left unchangedLower TTL ahead of any planned change

Reading Bounce Messages Correctly

A non-delivery report (NDR/bounce) usually contains the exact SMTP response code the sending server received, and that code narrows the layer immediately. A permanent failure in the 550 range with wording about the recipient not existing points to a mailbox-level problem, not MX. A 421 or other 4xx temporary failure with a connection-related message points toward network or availability issues at the MX-listed host. A bounce citing a security policy or reputation block points toward IP or domain reputation rather than anything MX-related at all. Reading the bounce text carefully before touching any configuration avoids fixing the wrong layer.

Bounce PatternLayer Implicated
"550 No such user" / mailbox not foundMailbox/recipient layer — not MX
"421 Service unavailable" / connection refusedNetwork or server availability at the MX host
"Could not resolve host" reported by the senderDNS resolution of MX or its A record
"Blocked" / reputation / policy rejectionIP/domain reputation, unrelated to MX configuration itself

Enterprise Scale: Troubleshooting Across Many Domains

Organizations managing MX configuration for dozens or hundreds of domains — agencies, hosting providers, large enterprises with acquired subsidiaries — face a different problem: not diagnosing one broken domain, but catching drift across many before it becomes a support ticket. A periodic automated sweep (scripted dig queries against the full domain list, diffed against an expected-state record) catches stale records, unexpected priority ties, and dead-end hostnames well before someone reports missing mail, turning troubleshooting into prevention.

Related Tools

Start every diagnosis with MX Lookup for a fast, external view of the current record set. Check propagation status across resolvers with DNS Propagation Checker. Confirm the mail host's port reachability with Open Port Checker. For the mechanics behind why a specific host was or wasn't tried, see MX Priority Explained and MX Failover Guide.

FAQ

dig MX yourdomain.com +short @8.8.8.8 against a public resolver, not your local network's default one — this rules out local caching before looking anywhere else.
Almost always local DNS resolver caching — one network's resolver still has a stale cached copy of an old MX record while others have already picked up the current one.
Confirm the MX record resolves correctly first, then confirm the resulting hostname resolves to an IP, then test port 25 reachability directly — each step isolates a different layer.
No — diagnose first. Changing DNS as a first step when the fault is actually a firewall or full mail queue adds a second unrelated variable to an already-confusing situation.
A temporary failure, typically connection-related — the receiving host was reachable but unavailable at that moment, distinct from a permanent 550-range rejection.
Yes, if one host isn't provisioned to handle the traffic — sending servers distribute connections between tied hosts, and an underprepared "backup" accidentally treated as a peer can drop or delay mail.
Yes — it's one of the most frequent real causes of MX-related delivery issues, typically left behind when a migration cleanup step was skipped.
telnet mxhost.example.com 25 from an external network is the simplest manual test, or use the Open Port Checker tool for a no-signup browser-based check.
Sending servers can't get an IP to connect to, so they skip that host as if it doesn't exist — no error is shown to the domain owner, just quietly degraded or failed delivery.
Yes, for future changes — it doesn't fix an already-slow propagation retroactively, but lowering it prevents the same delay if another change is needed soon after.
It points to IP or domain reputation issues, unrelated to MX configuration itself — the record and host are working correctly, but the sending source or content triggered a filtering decision.
Yes — "mail isn't arriving" looks the same to an end user whether the fault is MX, network, SMTP rejection, or internal routing. Only checking logs at each layer distinguishes them.
Yes — a periodic automated sweep comparing actual MX records against an expected-state list catches drift before it surfaces as a support ticket.
Use the free MX Lookup tool for an instant, external, no-signup view of every published MX record and its priority value.
Reviewed by: ToolsNovaHub Editorial Team📅 Last updated: July 2026📜 Sourced from: RFC 5321 and standard DNS/SMTP diagnostic practice

ToolsNovaHub tools are built and independently maintained with a focus on accurate, no-signup network and security utilities. Spotted an error? Let us know.

📋 Related Tools & Guides Comparison

ResourceTypeLink
MX LookupToolOpen Tool →
DNS Propagation CheckerToolOpen Tool →
Open Port CheckerToolOpen Tool →
MX Priority ExplainedGuideRead Guide →
MX Failover GuideGuideRead Guide →
Try it yourself — 100% free
🚀 Open MX Lookup

🔗 More Guides