10 min read

WHOIS vs DNS vs MX: three problems, one symptom

"My domain is down" is really three separate questions with three separate tools. Knowing which one you are asking is most of the fix.

Lawrence Kampa
Author

"My domain isn't working" is three different problems wearing the same costume. WHOIS tells you who owns the name and when it expires. DNS tells you where the name points. MX, a single DNS record type, tells you where its mail goes. Confuse them and you can burn an afternoon fixing the thing that was never broken.

The costs of getting it wrong are asymmetric. An expired domain is a five-minute renewal you keep putting off because you think the problem is DNS. A missing MX record is a one-line fix you never find because you keep re-checking your website, which is fine. Sorting the symptom into the right bucket is the whole game.

Three different questions

These three live in different systems and answer different questions. The table is worth memorizing before you touch anything.

WHOISDNSMX record
AnswersWho owns it, when it expiresWhere the name pointsWhere its mail is delivered
Lives atthe registrar and registrythe authoritative nameserversone record type inside DNS
ProtocolWHOIS (port 43) or RDAPDNS (port 53)DNS (port 53)
Changes whenyou renew, transfer, or update registrationyou edit your zoneyou edit one line of your zone
Query withwhois, RDAPdig, hostdig MX

WHOIS is a registration record, not part of DNS at all. It is metadata the registry and your registrar hold about the contract: who registered the name, through whom, and until when. That is why a WHOIS lookup keeps working even when the site is dark. The registration is a separate fact from where the name resolves.

$ whois github.com
   Registrar: MarkMonitor Inc.
   Creation Date: 2007-10-09T18:20:50Z
   Registry Expiry Date: 2026-10-09T18:20:50Z
   Domain Status: clientDeleteProhibited https://icann.org/epp#clientDeleteProhibited
   Domain Status: clientTransferProhibited https://icann.org/epp#clientTransferProhibited
   Domain Status: clientUpdateProhibited https://icann.org/epp#clientUpdateProhibited
   Registrant Organization: GitHub, Inc.

The single most useful field is Registry Expiry Date. The Domain Status codes are the second: those clientTransferProhibited-style flags are EPP status codes, the registry's locks on the name. A healthy domain carries a couple of client...Prohibited locks. A dying one carries clientHold, serverHold, redemptionPeriod, or pendingDelete, and those actively stop it from resolving.

You will notice a lot of WHOIS records look gutted now. Run the same query against a domain with a private registrant and the contact fields read DATA REDACTED:

$ whois cloudflare.com
   Registrar: Cloudflare, Inc.
   Registry Expiry Date: 2033-02-17T22:07:54Z
   Registrant Organization: DATA REDACTED

That is not a broken lookup. After GDPR took effect in 2018, ICANN's Temporary Specification required registrars to redact personal registrant data from public WHOIS. Corporate names like GitHub, Inc. often survive because a company name is not personal data; an individual's name, email, and address get blanked. The successor protocol is RDAP (Registration Data Access Protocol), standardized across IETF RFCs 7480–7484. It returns structured JSON instead of the free-text soup WHOIS emits, and it supports tiered access so verified requesters can see more than the public gets. As of early 2025, ICANN no longer requires gTLD registrars to run the legacy port-43 WHOIS service at all; RDAP is the designated replacement.

DNS answers a completely different question: where does the name point? The A record is the answer for web traffic.

$ dig +short A github.com
140.82.114.4

The NS records are the other half of the story, and the half people forget. They are the delegation: the list of nameservers the registry says are authoritative for this zone.

$ dig +short NS github.com
dns1.p08.nsone.net.
dns2.p08.nsone.net.
dns3.p08.nsone.net.
dns4.p08.nsone.net.
ns-1283.awsdns-32.org.
ns-1707.awsdns-21.co.uk.
ns-421.awsdns-52.com.
ns-520.awsdns-01.net.

MX is a DNS record type that answers where the domain's mail goes. It is edited in the same zone as everything else, which is exactly why people assume a mail problem is a DNS problem or vice versa.

$ dig +short MX github.com
0 github-com.mail.protection.outlook.com.

That leading 0 is a preference, not a priority ranking of quality. It is a 16-bit number (0–65535); a sending mail server tries the lowest value first, and when two records share a value it picks between them at random for load balancing. Lower means tried-sooner, nothing more. Cloudflare's zone shows the pattern clearly:

$ dig +short MX cloudflare.com
5 mxa-canary.global.inbound.cf-emailsecurity.net.
5 mxb-canary.global.inbound.cf-emailsecurity.net.
10 mxa.global.inbound.cf-emailsecurity.net.
10 mxb.global.inbound.cf-emailsecurity.net.

The two 5 hosts are the primary pair, tried first and balanced against each other. The two 10 hosts are the fallback for when both 5s are unreachable.

Two things about MX targets trip up almost everyone. First, the trailing dot. In github-com.mail.protection.outlook.com. that final dot is the DNS root, making the name fully qualified. It matters because in a zone file a name without a trailing dot gets your zone's origin appended. Write mail.example.com (no dot) as an MX target in the example.com zone and you have now pointed mail at mail.example.com.example.com, which does not exist. Second, an MX record must point to a name with an A or AAAA record, never to a CNAME. RFC 2181 §10.3 and RFC 5321 §5.1 both forbid it. The MX target above resolves straight to addresses:

$ dig +short A github-com.mail.protection.outlook.com.
52.101.11.9
52.101.40.6

A CNAME there is a configuration error that many mail servers will refuse outright.

Where it goes wrong

The user always reports the same thing: "the site's down" or "email stopped." Three unrelated causes hide behind that sentence.

Cause 1: the domain expired. WHOIS shows a Registry Expiry Date in the past or a clientHold/serverHold status. When a name lapses the registrar pulls it from the zone, so everything stops, web and mail together. No amount of DNS surgery helps, because the registry has stopped answering for the name. Renew first; nothing else matters until you do.

Cause 2: DNS is broken but the domain is fine. The registration is healthy, but the A record is wrong, or the delegation does not match reality. The classic version: you moved your DNS to a new provider and updated the records there, but the registrar still delegates to the old nameservers. Resolvers follow the registrar's delegation, land on a server that no longer holds your zone, and get stale or empty answers. The NS records the registrar publishes must match the nameservers actually serving the zone. When they diverge you get a lame delegation and inconsistent answers depending on which server a resolver happens to hit.

Cause 3: mail is broken but web is fine. DNS resolves, the site loads, and mail still bounces because the MX record is missing, points at a CNAME, or lost its trailing dot in the zone file. The website being up tells you nothing here; mail routing is a separate record that fails on its own terms. Senders will report no MX record or a delivery loop, and your A/NS checks will all look perfect.

Seeing it yourself

Start with the cheapest question, whether the name is even registered and paid up, because it rules out the most catastrophic cause in one lookup. Our WHOIS Lookup parses the raw record into the fields that matter instead of making you grep 60 lines of registry boilerplate.

Type a domain into the Domain Name field, hit Lookup, and the WHOIS Information card breaks the record into labelled sections: Registration Details (the registrar and its URL), Important Dates (when the registration was last updated), Domain Status, and Name Servers. The creation date, the expiry date, and the rest of the raw registry response sit in the Raw WHOIS Data box at the bottom.

Parsed WHOIS Information card for github.com showing registrar MarkMonitor Inc., a September 2024 last-updated date, three clientProhibited status locks, and the eight delegated NSONE and AWS name servers.

Run another domain through it and the parsed card keeps the same shape — registrar, status locks, name servers — with no registrant or contact section anywhere. That is the flip side of the redaction from earlier: the personal contact data WHOIS once exposed is not in what the tool can pull, so there is nothing for the card to show. When you do want the raw registry response, it sits verbatim in the Raw WHOIS Data box.

Parsed WHOIS Information card for cloudflare.com showing Cloudflare, Inc. as its own registrar, a January 2024 last-updated date, six status locks spanning the client and server prohibitions, and five Cloudflare name servers.

The status codes answer the "is it on hold" question outright — a clientHold or serverHold jumps out at a glance. For the expiry date, drop to the Raw WHOIS Data box and read the Registry Expiry Date line. The Name Servers section answers a second question: it shows the delegation the registry hands out, which is exactly what you cross-check when you suspect the DNS-provider mismatch from Cause 2.

What to actually do

Work the causes in cost order — the disaster first, the fiddly one last.

  • Is it registered and paid up? Run the WHOIS lookup above and read two fields: the expiry date and the status codes. A past expiry or a clientHold/serverHold flag means renew now; stop debugging DNS.
  • Does the name resolve where you expect? Check the A record and confirm the NS records the registrar delegates to match the provider actually hosting your zone. Domain Lookup shows the full record set (A, NS, MX, and more) in one view.
  • Did you recently change something and half the world still sees the old value? That is propagation, bounded by each record's TTL, not a bug. Confirm the new answer from multiple locations with What is my DNS before you assume the change failed.
  • Mail bouncing while the site loads? Pull the MX records, confirm every target resolves to an A/AAAA name rather than a CNAME, and check that trailing dots are intact in your zone file.

The trick is not knowing more about any one of these systems. It is spending the first two minutes deciding which of the three you are actually looking at.

Share this article