← All checks

MX records not resolving or pointing at a CNAME: how to check

MX records high Email transport · 8 of 100 points

What it inspects

Each MX target (up to 10) is looked up for A and AAAA records and for a CNAME. Verdicts: PASS when all MX hosts resolve to public addresses. WARN when one of several does not resolve, when a target is a CNAME or an IP literal, or has no public address. FAIL when no MX target resolves at all, or all resolve only to private or reserved addresses. Not applicable for a null MX (RFC 7505) or a domain with no MX; SKIP if lookups fail.

Why it matters

If senders cannot resolve your MX hosts, mail to you bounces or is delayed. MX targets must be hostnames with their own address records; a CNAME is forbidden by the standards and some servers refuse to deliver to it.

How to verify by hand

# bash
dig +short MX example.com

# PowerShell
Resolve-DnsName -Name example.com -Type MX

# then each host it names
# bash
dig +short A mail.example.com

# PowerShell
Resolve-DnsName -Name mail.example.com -Type A

How to fix

Point each MX record at a hostname that has its own public A or AAAA record.

  1. Publish MX records and address records for the hosts:

    example.com.       IN  MX  10 mail.example.com.
    mail.example.com.  IN  A   203.0.113.25
  2. If the domain should not receive mail, publish a null MX:

    example.com.  IN  MX  0 .

References

Scan your domain free