{"id":2834,"date":"2026-06-19T04:48:36","date_gmt":"2026-06-19T04:48:36","guid":{"rendered":"https:\/\/pingtoolnet.com\/blog\/?p=2834"},"modified":"2026-06-19T04:48:36","modified_gmt":"2026-06-19T04:48:36","slug":"how-to-verify-mx-records-correctly","status":"publish","type":"post","link":"https:\/\/pingtoolnet.com\/blog\/?p=2834","title":{"rendered":"How to Verify MX Records Correctly"},"content":{"rendered":"<p>Email breaks in ways that look unrelated. A mailbox stops receiving messages, a provider rejects mail for your domain, or a migration finishes but inbound delivery still goes to the old server. In each case, knowing how to verify MX records quickly saves time and usually points you to the actual fault.<\/p>\n<p>MX records tell senders which mail servers accept mail for a domain. Verifying them is not just checking whether a record exists. You need to confirm the hostname is correct, the priority values make sense, the target host resolves, and the answer you see matches what authoritative DNS is serving.<\/p>\n<h2>What MX record verification actually checks<\/h2>\n<p>An MX record maps a domain to one or more mail exchanger hostnames, each with a preference value. Lower numbers have higher priority. If your domain uses multiple mail servers, the sending system usually tries the lowest value first and falls back to higher values if needed.<\/p>\n<p>When you verify MX records, you are checking several things at once. First, the domain must return valid MX answers. Second, each MX target should be a hostname, not a raw IP address. Third, those hostnames should resolve to A or AAAA records. Fourth, the record set should be visible from the DNS you expect, especially after a recent change.<\/p>\n<p>This is where many simple checks fall short. A domain can appear to have MX records and still fail mail delivery because the targets no longer resolve, the values are stale in recursive caches, or the zone is split between providers.<\/p>\n<h2>How to verify MX records with command-line tools<\/h2>\n<p>For admins and engineers, command-line checks are still the fastest path. The main goal is to compare what recursive DNS returns against what the authoritative name servers return.<\/p>\n<h3>Verify MX records with dig<\/h3>\n<p>Run a basic MX lookup against the domain:<\/p>\n<p>&#8220;`bash dig example.com MX &#8220;`<\/p>\n<p>The answer section should list one or more MX entries with priority and hostname, such as `10 mail.example.com.` If you get `NOERROR` with no answer, the domain exists but has no MX records. In practice, some senders may then fall back to the domain&#8217;s A record, but you should not rely on that behavior for production mail.<\/p>\n<p>To see what the authoritative servers say, query them directly. Start by identifying the NS records:<\/p>\n<p>&#8220;`bash dig example.com NS &#8220;`<\/p>\n<p>Then query one of those name servers for MX:<\/p>\n<p>&#8220;`bash dig @ns1.provider-dns.com example.com MX &#8220;`<\/p>\n<p>If the authoritative response differs from what a public resolver gives you, you are likely looking at propagation delay, stale cache, or a DNS delegation issue.<\/p>\n<p>Next, resolve each MX target:<\/p>\n<p>&#8220;`bash dig mail.example.com A dig mail.example.com AAAA &#8220;`<\/p>\n<p>If the MX hostname does not resolve, mail delivery will fail even though the MX record itself exists.<\/p>\n<h3>Verify MX records with nslookup<\/h3>\n<p>If `dig` is not available, `nslookup` works well enough for basic checks:<\/p>\n<p>&#8220;`bash nslookup -type=mx example.com &#8220;`<\/p>\n<p>This shows the mail exchangers and their preference values. Then test each target hostname separately:<\/p>\n<p>&#8220;`bash nslookup mail.example.com &#8220;`<\/p>\n<p>`nslookup` is less detailed than `dig`, but for quick field checks it is often enough.<\/p>\n<h2>How to verify MX records in a browser<\/h2>\n<p>Browser-based DNS lookup tools are useful when you need a fast answer without shell access, or when you want to test from a different network path. A good DNS lookup tool should show the MX records, the returned TTL, and ideally related records so you can verify the MX hostnames also resolve.<\/p>\n<p>This is where a tool-first workflow helps. If you use a browser utility such as the <a href=\"https:\/\/pingtoolnet.com\/tools\/dns.php\">DNS lookup<\/a> on Ping Tool Net, the useful output is not just the MX line itself. You want to confirm the domain returns the expected mail exchangers, check whether multiple servers are ordered correctly, and then inspect A, AAAA, and sometimes TXT records for the same domain in the same session.<\/p>\n<p>That matters during migrations. If your new provider says mail is pointed correctly but external senders still hit the old platform, a browser-based check from a public resolver can show whether the problem is the zone, propagation, or a local cache that has not expired.<\/p>\n<h2>What a valid MX result should look like<\/h2>\n<p>A healthy MX setup usually has predictable characteristics. The MX targets are fully qualified hostnames. They are not bare IP addresses. The priority values are intentional, not random leftovers from old providers. And each hostname resolves to at least one usable address.<\/p>\n<p>For example, this is structurally valid:<\/p>\n<p>&#8220;`text example.com.   3600   IN   MX   10 mail1.example.com. example.com.   3600   IN   MX   20 mail2.example.com. &#8220;`<\/p>\n<p>Then both `mail1.example.com` and `mail2.example.com` should return A and or AAAA records.<\/p>\n<p>One detail that catches people: the MX target should not be a CNAME. Some DNS control panels allow confusing configurations, but the mail exchanger named in MX should resolve directly as a hostname with address records. If your target chains through a CNAME, some systems will tolerate it, but it is bad practice and can cause inconsistent behavior.<\/p>\n<h2>Common problems found when you verify MX records<\/h2>\n<p>The most common failure is simple drift. The MX records still point to an old mail provider after a tenant migration or DNS cutover. You verify the domain, see the old provider&#8217;s hostnames, and immediately know inbound mail is being routed to the wrong place.<\/p>\n<p>Another common issue is missing resolution on the MX target. The domain returns an MX record, but the target hostname has no A or AAAA record. This often happens after a cleanup in the zone file where someone removes what looks like an unused host entry.<\/p>\n<p>Priority mistakes also matter. If the backup server has a lower preference value than the primary server, senders will try the backup first. That may be acceptable, but in most environments it is accidental.<\/p>\n<p>You will also run into partial propagation. One resolver returns the new MX set while another still serves the previous values. This is normal after a change, especially if the prior TTL was high. The fix is usually patience, but you still need to verify that the authoritative servers are already correct.<\/p>\n<p>A more subtle issue is querying the wrong domain. Mail for `user@subdomain.example.com` depends on MX records for `subdomain.example.com`, not necessarily `example.com`. During troubleshooting, verify the exact domain in the recipient address.<\/p>\n<h2>Related records you should check at the same time<\/h2>\n<p>MX records alone do not prove the mail stack is healthy. They only tell you where mail should go. If delivery is failing, check the related DNS and service layers in sequence.<\/p>\n<p>Start with A and AAAA records for each MX target. Then look at the SMTP service itself. If you can, <a href=\"https:\/\/pingtoolnet.com\/tools\/port_scanner.php\">test TCP port 25<\/a> on the MX host to confirm it is reachable. A correct MX answer pointing to a server with blocked or closed SMTP is still a broken mail path.<\/p>\n<p>For sending reputation and authentication, TXT records also matter. SPF, DKIM, and DMARC do not affect whether MX records are valid, but they often become part of the same ticket. If you are already in DNS, it makes sense to verify them before handing the issue off.<\/p>\n<p>Reverse DNS is another dependency that shows up later. It does not validate inbound routing through MX, but it does affect how your outbound mail is treated. If users report both send and receive problems, separate the inbound MX check from outbound hostname and PTR validation.<\/p>\n<h2>A practical workflow for verifying MX records<\/h2>\n<p>The fastest method is to work from the outside in. Query the domain&#8217;s MX records from a public resolver. Query the authoritative name server directly. Resolve each MX target to A and AAAA. Then test SMTP reachability on the returned hosts.<\/p>\n<p>If the public and authoritative answers differ, you are dealing with caching or propagation. If the MX target does not resolve, fix the zone. If the target resolves but SMTP is down, the issue is on the mail host or <a href=\"https:\/\/pingtoolnet.com\/tools\/traceroute.php\">network path<\/a>. If all of those checks pass and mail still fails, move up the stack to provider policy, TLS, filtering, or mailbox-level routing.<\/p>\n<p>This sequence matters because it prevents wasted effort. Teams often start in the mail platform, only to find the MX records still point somewhere else.<\/p>\n<h2>When no MX record exists<\/h2>\n<p>A missing MX record does not always mean the domain is dead, but it is usually a configuration problem. Some mail transfer agents may fall back to the domain&#8217;s A record when no MX exists. Others may behave differently depending on policy and validation. For anything business-critical, publish explicit MX records and verify they match your intended provider.<\/p>\n<p>If a domain should not receive mail, some admins intentionally point MX to a null or non-routable target pattern supported by their environment. That is a separate design decision. For normal business domains, no MX is almost always the wrong answer.<\/p>\n<h2>Final check before you close the ticket<\/h2>\n<p>When you verify MX records, do not stop at the first correct-looking response. Check the authoritative answer, the target host resolution, and whether the returned servers are actually reachable for SMTP. That extra minute is usually the difference between finding the root cause and chasing symptoms for the next hour.<\/p>\n<p>If the record looks right but mail still fails, that is progress. You have ruled out DNS routing and narrowed the problem to the mail service, network path, or policy layer, which is exactly where the next check should start.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Learn how to verify MX records using DNS lookups, dig, nslookup, and online tools. Check priority, hostnames, and propagation fast. &hellip; <\/p>\n<p><a href=\"https:\/\/pingtoolnet.com\/blog\/?p=2834\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\">How to Verify MX Records Correctly<\/span><\/a><\/p>\n","protected":false},"author":0,"featured_media":2835,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-2834","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/pingtoolnet.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/2834","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/pingtoolnet.com\/blog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/pingtoolnet.com\/blog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"replies":[{"embeddable":true,"href":"https:\/\/pingtoolnet.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2834"}],"version-history":[{"count":0,"href":"https:\/\/pingtoolnet.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/2834\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/pingtoolnet.com\/blog\/index.php?rest_route=\/wp\/v2\/media\/2835"}],"wp:attachment":[{"href":"https:\/\/pingtoolnet.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2834"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/pingtoolnet.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=2834"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/pingtoolnet.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=2834"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}