MX Records Explained: Syntax, Priority Semantics, Null MX, and the Canonical Mail-Delivery Sequence (RFC 1035 + RFC 5321 + RFC 7505)
A focused operational reference on MX records: what an MX record IS (a DNS resource record type defined by RFC 1035 §3.3.9 that maps a domain name to a list of mail-exchanger hostnames willing to accept mail for the domain), the priority semantics (a 16-bit preference value where LOWER numbers indicate HIGHER preference per RFC 5321 §5.1, with ties resolved by random selection), the canonical mail-delivery sequence (sender MTA queries MX, sorts by preference, resolves each target to A or AAAA, connects via SMTP on port 25), the implicit MX rule (RFC 5321 §5.1 falls back to the domain A/AAAA record ONLY if no MX records exist — partial MX deployments disable this fallback), the backup-MX anti-pattern and why most backup MXes are spam magnets, the relationship between MX records and email authentication (SPF and DMARC apply to OUTBOUND mail and do NOT cross over to the MX/inbound side), per-provider MX patterns for Google Workspace, Microsoft 365, Amazon SES, and self-hosted Postfix or Exim, the null MX record (RFC 7505: a single MX with preference 0 and target "." that explicitly rejects all inbound mail), MX records and the MTA-STS / DANE transport-security overlays, TTL recommendations, the no-CNAME rule (RFC 1034 §3.6.2 and RFC 2181 §10.3 prohibit MX targets from being CNAME aliases), common mistakes, troubleshooting the "mail is bouncing" diagnostic funnel, and an FAQ for the questions operators ask when an MX configuration is not working as expected.
This reference is provided in English. MX records are specified in English-language RFCs (RFC 1035, RFC 5321, RFC 7505) and the canonical vocabulary (mail exchanger, preference, priority, RDATA, implicit MX rule, null MX, backup MX, MUST NOT point to a CNAME) does not translate. We keep the body in the source language so technical terms remain consistent with the specifications.
TL;DR
- An MX (Mail Exchanger) record is a DNS resource record type (RFC 1035 §3.3.9) that maps a domain name to a list of mail-server hostnames willing to accept mail for that domain.
- MX priority semantics: LOWER preference values mean HIGHER priority. An MX with preference 10 is tried BEFORE one with preference 20. RFC 5321 §5.1 mandates random selection among MX records with equal preference values.
- The implicit MX rule (RFC 5321 §5.1) falls back to the A/AAAA records of the domain ONLY if no MX records exist. Publishing any MX record disables the fallback entirely, so a partial MX deployment is worse than no MX at all.
- MX records cannot point at CNAME aliases. RFC 1034 §3.6.2 and RFC 2181 §10.3 require MX targets to resolve directly to A or AAAA records. Pointing an MX at a CNAME produces undefined behaviour across MTAs.
- MX records do NOT affect SPF or DMARC directly. SPF and DMARC apply to OUTBOUND mail (authenticating the sending server); MX applies to INBOUND mail (telling senders where to deliver). The two operate on opposite sides of the SMTP transaction.
- Null MX (RFC 7505: a single MX with preference 0 and target "." — the DNS root name) explicitly tells senders the domain does not accept mail. Use this for parked domains, marketing landing pages, and internal-only domains.
- Backup MX records are usually a liability. Spammers detect the backup and send all their spam there; the backup either accepts everything (backscatter) or rejects forged senders (NDR storm). Either do not publish a backup or configure it with IDENTICAL anti-spam policies as the primary.
- Recommended TTL: 3600 to 86400 seconds. MX records change rarely (typically only when migrating between mail providers), so longer TTLs improve cache efficiency. Lower to 300 to 3600 seconds BEFORE planned migrations and raise back afterwards. See DNS propagation for the pre-emptive-TTL- reduction pattern.
1. Overview: what an MX record is for
Internet email delivery from a sender to a
receiver is a multi-hop DNS-mediated process.
When a user sends mail to
user@example.com, the sending Mail
Transfer Agent (MTA) does not directly know
which server accepts mail for
example.com. It performs a DNS
lookup for the MX (Mail Exchanger) record of
example.com, receives one or more
MX records back, and uses them to identify the
SMTP server(s) authoritative for receiving mail
addressed to that domain.
The MX record type is one of the original DNS resource record types, defined in RFC 1035 section 3.3.9 (1987) and tightly integrated into the SMTP protocol by RFC 5321 section 5.1. The MX record carries two pieces of data: a 16-bit unsigned integer called the "preference" value (commonly called priority by operators) and a hostname pointing to a mail server. The preference determines the order in which the sending MTA tries the listed servers; the hostname is then resolved to an A or AAAA record to obtain the actual IP address to connect to.
This page is the foundational reference for the help cluster on MX records. For the cryptographic primitives under DKIM signing, see DKIM cryptography basics. For DNS propagation mechanics that apply to MX changes, see DNS propagation. For the transport-security overlay that validates the MX hostname against an HTTPS-published policy, see MTA-STS explained. For per-provider deployment guides whose first step is pointing MX at the provider, see the DMARC for Microsoft 365 and DMARC for Google Workspace guides.
2. MX record syntax (RFC 1035 §3.3.9)
An MX record in standard DNS zone-file format looks like:
example.com. 3600 IN MX 10 mx.example.com.
The fields, left to right:
example.com.— the name the record is published under (the domain that wants to receive mail). The trailing dot anchors it as a fully-qualified name.3600— the TTL (time-to-live) in seconds. See section 11.IN— the class (Internet). Universal for all public-internet DNS records.MX— the record type.10— the preference value (priority). See section 3.mx.example.com.— the MX target hostname. MUST resolve directly to an A or AAAA record (NOT a CNAME — see section 12).
A typical mail-server deployment publishes multiple MX records for redundancy:
example.com. 3600 IN MX 10 mx1.example.com. example.com. 3600 IN MX 20 mx2.example.com. example.com. 3600 IN MX 30 mx3.example.com.
Most cloud-DNS provider UIs (Cloudflare, Route 53, Google Cloud DNS, GoDaddy, Namecheap) ask for the preference and target as separate fields rather than requiring the operator to type the full zone-file syntax. The resulting record is functionally identical.
3. Priority semantics: lower is higher
The MX preference field is a 16-bit unsigned integer (range 0 to 65535) that determines the ORDER in which a sending SMTP server tries the listed MX targets. RFC 5321 section 5.1 specifies the algorithm:
- Sort the received MX records by preference value, ASCENDING. (Lower preference = higher priority.)
- Among records with the same preference value, select one randomly. RFC 5321 mandates random selection to spread load across equally-preferred servers; many real-world implementations actually round-robin or use the order in which they were received from DNS.
- Resolve the selected target to an A or AAAA record. If multiple A/AAAA records are returned, the sender picks one (typically randomly).
- Attempt SMTP connection on port 25.
- If the connection fails or the SMTP session ends with a temporary failure (4xx), move to the next MX target in preference order. If the SMTP session ends with a permanent failure (5xx), do not retry to other MX targets — the message is rejected.
The conventional priority spacing (10 / 20 / 30 rather than 1 / 2 / 3) is purely cosmetic: it leaves room to insert a new MX at preference 15 between an existing 10 and 20 without renumbering everything. The relative ordering is what matters, not the absolute values.
Some operators set all MX records to the same
preference value as a load-balancing strategy
(publishing three MX targets all at preference
10 means senders pick randomly among them). This
works but is more brittle than the cluster-aware
load balancing that major providers do at the
A-record layer (Google Workspace's
smtp.google.com resolves to multiple
IPs via DNS round-robin, providing load
balancing without needing equal-priority MX
records).
4. The canonical mail-delivery sequence
From the sender-MTA perspective, delivering
mail to user@example.com involves
this sequence:
- Extract the recipient domain.
Parse
example.comfrom the RCPT TO envelope address. - Query MX records. Send a
DNS query for
MX example.comto the configured recursive resolver. The resolver returns zero or more MX records. - Apply the implicit MX rule if needed. If no MX records are returned (NODATA response, distinct from NXDOMAIN), fall back to the implicit MX rule: treat the A/AAAA records of the domain itself as if they were a single MX target with preference 0. If neither MX nor A/AAAA records exist, bounce with permanent failure (no such domain).
- Check for null MX. If the only MX record returned is the RFC 7505 null MX (preference 0, target "."), bounce immediately with permanent failure 550.
- Sort and select. Sort by preference value ascending; select the lowest-preference target. Among ties, select randomly.
- Resolve the MX target. Query A and AAAA records for the selected MX target hostname. Pick one IP.
- Connect via SMTP on port 25. Open a TCP connection to the resolved IP on port 25 (or port 587 / 465 for submission, though port 25 is the MX-to-MX standard). Begin the SMTP HELO / MAIL FROM / RCPT TO / DATA exchange.
- Handle transient failures. If the SMTP session ends with a 4xx response (transient failure: server busy, temporary policy reject), retry the same target later or move to the next-preference MX target on the next retry. Standard retry schedules are exponential-backoff over several days before bouncing as undeliverable.
- Handle permanent failures. If the SMTP session ends with a 5xx response (permanent failure: no such user, policy reject), bounce the message back to the original sender with the receiver's reason code. Do NOT retry against backup MX targets — the 5xx is a final answer for the message.
Steps 7-9 are the SMTP layer; everything before is the DNS-MX-resolution layer this page covers. The MX-resolution behaviour is identical across all major sending MTAs (Postfix, Exim, Sendmail, Gmail's outbound, Microsoft 365's outbound, Amazon SES) because they all implement RFC 5321 §5.1.
5. Backup MX: usually a liability
The backup MX pattern (publishing multiple MX records at different preference values so senders fall back to a secondary server when the primary is unreachable) made operational sense in the 1990s when primary mail servers had multi-day outages and operators wanted a secondary to queue mail until the primary came back. In modern internet email, backup MX records are frequently a NET LIABILITY rather than a benefit.
The classic bad backup-MX pattern:
- The operator publishes a primary MX
(preference 10) at
mx1.example.comwith production-grade anti-spam filtering, recipient validation, and SPF / DKIM / DMARC enforcement. - The operator publishes a backup MX
(preference 20) at
mx2.example.comwith weaker or absent anti-spam filtering, often a "catch-all" configuration that accepts mail for unknown recipients and queues it. - Spammers detect the backup MX (it is in public DNS) and send all their spam directly to the backup, bypassing the primary entirely.
- The backup either accepts everything (creating backscatter and ruining the operator's sending reputation), or generates non-delivery-reports (NDRs) for the forged sender addresses spammers use (creating an NDR storm that floods third parties).
Modern best practice:
- Do not publish a backup MX at all. Major email providers (Gmail, Microsoft 365, ProtonMail, FastMail) operate their own multi-datacenter MX clusters and do not require operator-configured backup MX records. If Google Workspace's MX cluster has an outage, falling back to your home-built secondary is unlikely to improve things.
- If you DO publish a backup MX, configure it with IDENTICAL anti-spam, SPF, DKIM, DMARC, and recipient-validation policies as the primary. The backup must accept the same recipients the primary accepts and reject the same recipients the primary rejects. The simplest way to achieve this is to run the same MTA software with the same configuration file on both servers.
- Consider using cloud-provider MX
clusters as your primary. Gmail's
primary MX (
smtp.google.com) is itself a multi-datacenter cluster with built-in failover. Pointing at it removes the need for backup MX at the operator level.
6. MX records and email authentication
A common operator misconception: changing the MX record affects SPF, DKIM, or DMARC. It does not, except in one narrow case.
SPF (SPF explained) authenticates the SENDING server of an outbound message — when your domain sends mail to a receiver, SPF tells the receiver which IPs are authorised to send on your domain's behalf. SPF is purely an outbound concern. The MX record tells other senders where to deliver mail TO your domain. The two operate on opposite sides of the SMTP transaction.
DKIM (DKIM explained) attaches a cryptographic signature to outbound mail and lets receivers verify the signature via your published DKIM public key in DNS. Like SPF, DKIM is an outbound concern. The MX record is irrelevant to DKIM signing or DKIM verification.
DMARC (DMARC record tags) is the policy layer on top of SPF and DKIM. DMARC alignment is determined by the FROM: header domain matching the SPF MAIL FROM domain (strictly or relaxed per the aspf= tag) or the DKIM signing domain (strictly or relaxed per the adkim= tag). The MX record is not part of any DMARC alignment rule.
The one narrow case where MX and SPF interact:
the SPF mx mechanism. An SPF
record like v=spf1 mx -all
authorises the IPs corresponding to the MX
records of the domain. This was useful in
early SPF deployments where a single server
handled both inbound and outbound mail and the
operator wanted "the same server that receives
mail for me is the only server that sends mail
for me" semantics. In modern deployments where
inbound and outbound use completely different
infrastructure (Google Workspace for inbound,
Mailgun for outbound), the SPF mx
mechanism is rarely useful and frequently
misleading. Prefer explicit
include: or
ip4: / ip6:
mechanisms that name the actual sending
infrastructure.
7. MX patterns by provider
The MX values you publish depend on which mail provider hosts your inbound mail. The canonical patterns for major providers:
- Google Workspace: a single
MX record pointing at
smtp.google.comat any preference (commonly 1 or 10). Google's DNS round-robin returns multiple IPs behind the single hostname, providing automatic load balancing and failover without needing operator-configured backup MX records. The older multi-target pattern (aspmx.l.google.com / alt1.aspmx.l.google.com / alt2.aspmx.l.google.com / aspmx2.googlemail.com / aspmx3.googlemail.com) was deprecated in favour of the singlesmtp.google.comentry. - Microsoft 365: a single MX
record pointing at
example-com.mail.protection.outlook.comwhere the prefix is the operator's tenant domain with dots replaced by hyphens. The tenant-specific MX hostname is shown in the Microsoft 365 admin console under the Domains section. - Amazon SES inbound: a
single MX record pointing at
inbound-smtp.{region}.amazonaws.comwhere{region}is the SES receiving region (us-east-1, eu-west-1, etc.). - Self-hosted Postfix / Exim /
Sendmail: an MX record pointing
at the operator's mail server hostname,
typically
mail.example.comormx.example.com, which itself has an A record at the mail server's public IP. Operators should also publish a matching PTR (reverse DNS) record at the IP pointing back to the same hostname — receivers reject mail from IPs without matching PTR. - ProtonMail business: two
MX records at
mail.protonmail.ch(preference 10) andmailsec.protonmail.ch(preference 20). This is one of the few modern cases where operator-configured backup MX is the provider's recommended deployment. - FastMail: two MX records
at
in1-smtp.messagingengine.com(preference 10) andin2-smtp.messagingengine.com(preference 20).
For every provider, check the provider's current onboarding documentation to confirm the exact MX values to publish — providers occasionally change their MX hostnames as they restructure their infrastructure.
8. Null MX (RFC 7505): explicitly no mail
RFC 7505 (2015) defines a special MX record that explicitly tells senders the domain does NOT accept mail. The syntax is:
example.com. 3600 IN MX 0 .
The target field is a literal dot
(.) which represents the DNS root
name. The preference value MUST be 0. When a
sending SMTP server queries MX for the domain
and receives this response, RFC 7505 requires
it to immediately bounce the message back to
the original sender with permanent failure
code 550 and a textual reason like "Mail is
not accepted at this domain."
The use cases for null MX:
- Parked domains. A domain
registered for branding protection or
future use that should never accept mail.
Without a null MX, mail to
user@parked-domain.exampleeither bounces with a confusing "no MX records found" error or falls back to the A/AAAA record (per the implicit MX rule) and attempts SMTP against the web server, which produces additional confusion. - Marketing landing-page domains. A domain used only for a campaign landing page that the operator does not want operators to send mail to. Null MX produces a clean, immediate bounce rather than a prolonged retry cycle.
- Internal-only domains.
A domain used only for internal services
(e.g.
internal.corp.example) published in public DNS for certificate issuance but not intended to receive mail from the outside internet. - Subdomains of mail-receiving
domains. If your organisational
domain
example.comreceives mail but subdomains likeweb.example.comorapp.example.comdo not, publishing null MX records on the subdomains prevents stray mail from reaching your primary mail server.
Null MX is supported by all major sending MTAs in current versions (Postfix since 3.0, Exim since 4.94, Sendmail since 8.16, the proprietary MTAs operated by Google and Microsoft). For older MTAs that do not recognise null MX, the behaviour falls back to "MX target is a literal dot which cannot be resolved", resulting in a permanent failure with a less clean error message but still a bounce.
9. MX records and MTA-STS / DANE transport security
Two modern transport-security overlays operate at the MX-target layer:
- MTA-STS
(MTA-STS
explained) is an HTTPS-published policy
that lists the operator's MX hostnames and
instructs sending MTAs to require TLS to
those specific hostnames. The MTA-STS
policy enumeration of MX hostnames is
independent of the DNS MX record and must
be kept in sync: if you change your MX
target, you must update the MTA-STS
policy's
mx:list at the same time. - DANE
(MTA-STS
vs DANE) publishes TLSA records under
the MX target hostname's
_25._tcp.{mx-hostname}name that pin the TLS certificate (or certificate authority) the MX server uses. DANE validation requires the receiver's DNS to be DNSSEC-signed.
For both overlays, the MX hostname is the anchor: the operator's MX record points at a hostname; the transport-security policy associates that hostname with a TLS certificate. Changing the MX target requires coordinated updates to whichever transport- security overlay is deployed. See MTA-STS vs DANE for the per-overlay comparison.
10. TTL recommendations for MX records
MX records are the canonical example of a "set once and rarely change" record. The operational change frequency is low (typically only when migrating between mail providers or rebuilding mail infrastructure, perhaps once every several years), and the cache benefit of long TTLs is significant (the millions of recursive resolvers across the internet do not need to re-query the authoritative nameserver every hour for a record that has not changed in three years).
The recommended TTL for stable production MX records is 3600 to 86400 seconds (1 hour to 24 hours). Most major email providers recommend 3600 seconds as a balance between cache efficiency and the time required for a planned migration to complete.
Before a planned MX migration:
- Two TTL cycles BEFORE the migration, lower the TTL on the existing MX record to 300 seconds (5 minutes). For a current TTL of 86400, this means lowering 48 hours before the migration. The TTL change must propagate BEFORE the actual MX change can take advantage of the shorter window.
- At the migration moment, publish the new MX record (still at 300- second TTL). Recursive resolvers see the new MX within 5 minutes.
- After the migration is confirmed stable (typically 24 to 72 hours after the change), raise the TTL back to 3600 or 86400 for cache efficiency.
See the DNS propagation deep dive for the complete pre-emptive-TTL-reduction pattern that applies to MX, DKIM, DMARC, and every other actively-managed DNS record.
11. Common MX-record mistakes
- Pointing MX at a CNAME.
Forbidden by RFC 1034 §3.6.2 and RFC 2181
§10.3. The MX target MUST be a hostname
that resolves directly to an A or AAAA
record, not to another DNS alias. Common
accidental occurrence: pointing MX at
mail.example.comwhilemail.example.comis itself a CNAME tosmtp.example.comelsewhere. Verify with dig that the MX target has a direct A/AAAA record, not a CNAME chain. - Forgetting the trailing dot.
In zone-file syntax, the MX target must
end with a literal dot to anchor it as a
fully-qualified name. An MX target without
the trailing dot will have the zone's
origin appended:
mx.example.com(no dot) in a zone file forexample.combecomesmx.example.com.example.com— almost certainly not what the operator intended. Cloud DNS provider UIs usually handle this automatically; manual zone-file editing requires care. - Missing PTR record on the MX
target IP. Receivers reject mail
from IPs without a matching reverse-DNS
record. If your MX is
mx.example.comat IP203.0.113.10, the PTR record at10.113.0.203.in-addr.arpashould resolve back tomx.example.com. Without matching PTR, your outbound mail will be rejected by Gmail, Microsoft 365, Yahoo, and most other major receivers. - Partial MX deployment that defeats the implicit MX rule. Publishing any MX record disables the RFC 5321 implicit-MX fallback to A/AAAA. An operator who publishes a single broken MX (typo in the target hostname, target that does not resolve, target that is offline) will not fall back to the A record of the domain; they will bounce. If you cannot deploy MX correctly, do not deploy MX at all and let the implicit-MX fallback to your domain's A record handle mail delivery.
- MX priority direction confusion. Operators sometimes assume HIGHER preference numbers mean higher priority. The opposite is true: LOWER preference numbers are tried FIRST. A backup MX at preference 10 and a "primary" at preference 20 means senders try the backup first.
- Publishing equal-preference MX records and expecting deterministic selection. Per RFC 5321 §5.1, senders MUST select randomly among MX records with equal preference. If you publish two MX records both at preference 10, you cannot predict which one any given message will hit. Use distinct preference values if you need a deterministic primary-vs-backup relationship.
- Forgetting to remove the null MX when starting to accept mail. If you previously published a null MX because the domain was parked and you now want to accept mail, the null MX must be REMOVED and replaced with a real MX before mail flows. Senders see the null MX first and bounce.
- Inconsistent MX between public DNS and internal split-horizon DNS. If your domain uses split-horizon DNS (different views for internal vs external queries), the public-DNS MX records are what other senders use; internal MX records affect only internal queries. Inconsistency causes "mail works from inside but not from outside" or vice versa.
12. Troubleshooting "mail is bouncing"
When MX-based mail delivery fails, work the diagnostic funnel:
- Confirm the MX record is
published.
dig +short MX example.comshould return one or more lines of the form10 mx.example.com.. If it returns nothing, the MX is either not published or not propagated yet — see DNS propagation. - Confirm the MX target resolves to
an A/AAAA record (not a CNAME).
dig +short A mx.example.comshould return one or more IP addresses directly. If it returns nothing, or returns a CNAME chain, the MX is misconfigured per the no-CNAME rule. - Confirm the MX target IP is
reachable on port 25. From a host
that has outbound port-25 access (not a
residential ISP — port 25 is blocked from
most residential connections),
telnet mx.example.com 25should produce a 220 SMTP banner. If the connection times out, port 25 is blocked upstream or the server is down. - Confirm PTR records on the
outbound IP. For outbound mail
being rejected by receivers,
dig -x <outbound-ip>should return a PTR pointing back to your MX hostname (or a closely-related hostname). Missing or mismatched PTR is the single most common cause of receiver-side rejection. - Check sender-side IP reputation. Even with correct MX and PTR, a sending IP with a bad reputation (recently used by spammers, listed on Spamhaus or other RBLs) will be rejected at the SMTP level. The DMARC Analyzer Blacklist Checker queries the major RBLs directly.
- Inspect the receiver-side bounce message. A clean bounce with a 5xx code and a descriptive reason (e.g. "550 5.7.1 SPF check failed", "550 5.7.26 DMARC alignment failed") tells you exactly what the receiver objected to. Use the Email Header Analyzer to parse the Authentication-Results header for the full receiver-side verdict.
- Compare against the DMARC RUA aggregate-report stream. The DMARC aggregate reports are the authoritative source for what receivers are observing across all your domain's mail flow. A drop in reported message volume from a specific receiver often indicates a delivery-rejection pattern that is otherwise invisible.
13. FAQ — common questions about MX records
- What is an MX record?
- An MX (Mail Exchanger) record is a DNS resource record type that maps a domain name to a list of mail-server hostnames willing to accept mail for that domain. Defined in RFC 1035 section 3.3.9 and used by SMTP per RFC 5321 section 5.1. Without an MX record (or a fallback A/AAAA per the implicit MX rule), no mail can be delivered to the domain.
- How does MX priority work?
- MX priority (technically "preference") is a 16-bit unsigned integer. LOWER values mean HIGHER priority — an MX with preference 10 is tried before one with preference 20. Among MX records sharing the same preference, RFC 5321 mandates random selection. Conventional spacing (10 / 20 / 30) leaves room to insert new records without renumbering.
- What is a backup MX and why are they often misconfigured?
- A backup MX is a secondary mail-exchanger for fallback when the primary is unreachable. The pattern was operationally useful in the 1990s but is now frequently a liability: spammers detect the backup and send all their spam there, bypassing the primary anti-spam filtering. Modern best practice: either configure the backup with IDENTICAL anti-spam policies as the primary, or do not publish a backup at all.
- Does my MX record affect SPF or DMARC?
- No, not directly. SPF and DMARC apply to OUTBOUND mail (authenticating the sending server); MX applies to INBOUND mail (telling senders where to deliver). The two operate on opposite sides of the SMTP transaction. The one indirect connection is the SPF "mx" mechanism, which authorises the IPs of your MX records to send on your behalf — useful only when inbound and outbound share IPs.
- What is a null MX record?
- A null MX (RFC 7505) is a special MX record that explicitly tells senders the domain does NOT accept mail. The syntax is a single MX with preference 0 and target "." (a literal dot — the DNS root name). Senders bounce immediately with permanent failure 550. Use for parked domains, marketing landing pages, and internal-only domains.
- What TTL should I set for my MX records?
- For stable production MX, use 3600 to 86400 seconds (1 hour to 24 hours). MX records change rarely and longer TTLs improve cache efficiency. Before a planned migration, lower the TTL to 300 to 3600 seconds two TTL cycles in advance, then raise back after the migration is stable.
- Can an MX record point to a CNAME?
- No. RFC 1034 section 3.6.2 and RFC 2181 section 10.3 prohibit pointing an MX at a CNAME alias. The MX target MUST resolve directly to an A or AAAA record. Violating this rule produces undefined behaviour across MTAs.
- Why is my MX record not working — mail is bouncing?
- Work the diagnostic funnel: confirm the MX record is published (dig +short MX), confirm the MX target resolves directly to A/AAAA (no CNAME), confirm SMTP connectivity on port 25, check reverse-DNS (PTR) on the IP, check IP reputation against RBLs, inspect the receiver-side bounce code, and compare against the DMARC aggregate-report stream. The most common actual cause is missing or mismatched PTR records.
15. Audit your MX configuration now
DMARC Analyzer's
Domain Security
Checker performs a live MX lookup against
your domain (via
includes/DnsChecker.php) and
reports the published MX records with their
preference values, target hostnames, resolved
A/AAAA records, DNS TTLs, and matching PTR
records on the resolved IPs. Use it to confirm
your MX is correctly configured, that the
target is not a CNAME, that reverse-DNS is in
place, and that the TTL matches operational
expectations. The
Email Header
Analyzer parses Received: chains from
captured messages (via
includes/EmailHeaderParser.php)
so you can see exactly which MX target
inbound mail traversed and whether the SMTP
handshake completed over TLS — useful for
diagnosing MTA-STS / DANE transport-security
issues alongside basic MX correctness.