The Migration Challenge
Migrating corporate email from one provider to another (for example, from a legacy on-premise Exchange server to Microsoft 365 or Google Workspace) is a high-stress event for any system administrator. The goal is always a ‘zero-downtime’ migration, where no emails are lost or bounced during the transition. The success of this operation relies entirely on the precise manipulation of the MX records and, more importantly, their Time to Live (TTL) values.
The Danger of Caching
As with all DNS records, MX records are heavily cached by internet service providers (ISPs) and sending mail servers globally. If your current MX record has a TTL of 86400 seconds (24 hours), and you suddenly change the MX record to point to Microsoft 365, the internet will not immediately recognize the change. For the next 24 hours, some servers will deliver mail to your old Exchange server (using their cached record), while others will deliver to the new M365 environment. This ‘split-brain’ delivery scenario results in a fractured mailbox and massive user frustration.
The Pre-Migration TTL Strategy
To avoid split-brain delivery, you must control the cache. Days before the planned migration, the IT administrator must lower the TTL of the existing MX records to a very short duration, typically 300 seconds (5 minutes). You must wait at least the duration of the original TTL (e.g., 24 hours) for this new, short TTL to propagate globally. Once the global cache has expired, all sending servers are now programmed to only hold onto your MX record for 5 minutes at a time.
Flipping the Switch
When the actual migration window begins, you can update the MX records to point to the new provider. Because the TTL is now only 5 minutes, global mail traffic will almost instantly redirect from the old server to the new server. Once you have verified via a DNS Lookup tool that the new MX records are active and mail is flowing correctly into the new environment, you can safely raise the TTL back to a standard value (like 3600 seconds) to reduce DNS query load.
