Move email from one host to another sounds simple until the first mailbox comes across twice and someone’s Sent history disappears. That’s the part most guides skip. They treat email like files. It isn’t.
You’re copying live IMAP data between two servers with different folder rules, different UID behavior, and different ideas about what “Sent” even means. One bad assumption and users see empty folders, duplicate threads, or mail split across old and new systems.
The fix is not more hope. The fix is a staged IMAP process, clear folder mapping, and hard verification after cutover. If you want the broader planning layer around providers, pricing, and ownership, read our guide to business email first. This article stays focused on the migration itself.
If you’re moving to TrekMail, start with the live docs for IMAP migration overview, then use the Gmail or cPanel guides based on your source server. TrekMail’s server-side IMAP migration is available on paid plans, and paid plans start at $3.50/mo. The Nano plan stays free, with no card required, while paid plans can be tested with a 14-day free trial.
When you move email from one host to another, what actually happens?
Short answer: when you move email from one host to another, an IMAP tool logs into the old mailbox, reads folders and messages, then copies them into the new mailbox. It does not magically normalize folder names, deduplicate bad source data, or protect you from DNS timing mistakes unless the workflow handles those steps.
IMAP migration is a copy operation across two mail systems. The source account stays intact. The destination account gets new copies of messages, folder names, and sometimes flags like read or unread. That sounds safe, but the danger is in how the two servers identify mail.
Under RFC 3501, every mailbox has UIDs and a UIDVALIDITY value. Those help clients and migration tools track what they’ve already seen. If that state changes, the tool can stop recognizing prior copies and import the same mail again.
That’s why a clean-looking first pass can still fail on the second pass. It’s also why you should never promise users that a migration is done just because the dashboard says “completed.”
Why duplicates happen when you move email from one host to another
Short answer: duplicates happen when the migration tool loses confidence in message identity. That usually means UIDVALIDITY changed, the destination folders were recreated, or Gmail labels were treated like normal folders. The result is simple: the tool thinks old mail is new mail and copies it again.
The UIDVALIDITY trap
When you move email from one host to another, most tools compare UIDs inside each folder. That works until it doesn’t. If the source server reindexes mail, if the destination folder is deleted and recreated, or if the tool loses its prior state, the mailbox identity shifts.
RFC 3501 is clear on the core rule: UIDs should remain stable, and any change between sessions must be detectable through UIDVALIDITY. In plain English, if UIDVALIDITY changes, your sync history is no longer trustworthy. A second pass can import thousands of messages again.
Example: first pass copies 38,000 messages from Inbox. The admin reruns the job after a timeout. The source or destination folder was rebuilt overnight. The tool no longer trusts its old UID map. Inbox gets 38,000 more messages.
The Gmail label problem
Gmail is worse because Gmail doesn’t behave like a normal folder-based IMAP server. A message can carry multiple labels, and archived mail lives in All Mail. Google’s own Gmail help docs explain that a message can have multiple labels and that archiving moves mail out of Inbox into All Mail.
If you move email from one host to another from Gmail and blindly import [Gmail]/All Mail plus labeled folders, you can multiply the same message across the destination. That inflates storage and leaves users convinced something is broken. They’re right.
If you’re handling Gmail manually, TrekMail’s Import from Gmail guide is the right baseline because it covers the source login requirements, including the App Password requirement Google enforces for IMAP imports.
If you’re using CLI tools, this is the safe pattern:
imapsync \
--host1 imap.gmail.com \
--user1 user@gmail.com \
--password1 'APP_PASSWORD' \
--host2 mail.newhost.com \
--user2 user@example.com \
--password2 'DEST_PASSWORD' \
--exclude "\\[Gmail\\]/All Mail" \
--useheader "Message-ID" \
--dryThe dry run matters. So does header-based matching. If you need a deeper CLI playbook, our imapsync guide covers the operator side in more detail.
Why folders go missing when you move email from one host to another
Short answer: missing folders are usually not missing at all. When you move email from one host to another, they often land under the wrong hierarchy, get renamed into the wrong system folder, or arrive with a prefix the user’s mail app doesn’t display the way you expect.
Namespace and delimiter clashes
Different IMAP servers use different hierarchy delimiters and folder namespaces. One server may use dots like INBOX.Sent. Another uses slashes like Inbox/Sent Items. Another insists on an INBOX. prefix.
When that mapping is not handled before or during import, folder drift starts fast. A folder called Project.Alpha might become a child folder under Project. A system folder might show up as a custom folder. A mobile mail app may then subscribe to the wrong folder and hide the real one.
The Sent versus Sent Items mess
When you move email from one host to another, Sent mail is where users panic first. One host writes sent mail to Sent. Another expects Sent Items. Another shows Sent Messages.
If the old folder is copied as a normal custom folder instead of mapped to the destination system folder, the destination’s default Sent folder stays empty. From the user’s point of view, years of mail are gone even though the data still exists.
| Source folder | Destination system | Safe mapping |
|---|---|---|
INBOX.Sent | Exchange / Microsoft 365 | Sent Items |
Sent Messages | Dovecot / standard IMAP | Sent |
[Gmail]/Sent Mail | Standard IMAP | Sent |
INBOX.Trash | Exchange / Microsoft 365 | Deleted Items |
If your source is a shared hosting stack, TrekMail’s Migrate from cPanel or Other Hosts guide gives you the common IMAP credential patterns. It won’t remove the need to verify folders, but it does remove the guesswork around source access.
Safe 3-phase plan to move email from one host to another
Short answer: the safest way to move email from one host to another is a three-phase sync. Pre-stage old mail first, run a delta pass near cutover, then change MX and do one final sweep. That avoids long outages, reduces duplication risk, and keeps the rollback window manageable.
- Historical sync. Copy older mail first, usually everything older than 30 days. This moves most of the data while users still work on the old system.
- Delta sync. Run a second pass for the recent window. This is where duplicate handling matters most because you’re comparing against already imported history.
- Freeze and final sweep. Switch MX, wait for propagation, then run one last pass to catch stragglers that landed on the old host during the cutover window.
This is the point where people usually break mail with DNS. If you mess up the records, new messages keep landing on the old host or start bouncing. TrekMail’s DNS docs for required DNS records are worth having open during cutover.
; Example cutover records
@ MX 10 mail.trekmail.net.
@ TXT "v=spf1 include:spf.trekmail.net -all"
_dmarc TXT "v=DMARC1; p=quarantine;"One more rule: once the final sweep is done, lock or disable access on the old host. If users keep logging into the old server after MX changes, you create split brain. Some mail exists on the new host. Some new Sent items stay on the old host. Now you have a reconciliation project instead of a migration.
This staged method also scales better for agencies and MSPs. If you’re juggling many brands or client domains, the real problem is operational sprawl, not just copying mail. That’s where a platform built for multi domain email hosting starts to matter.
Verification checklist after you move email from one host to another
Short answer: after you move email from one host to another, verify message counts, first and last message dates, and folder hierarchy. Do not trust total gigabytes alone. Compression, indexing, and attachment handling can change the reported size without meaning any mail is missing.
1. Compare item counts, not mailbox size
If Inbox had 4,502 items before cutover, Inbox should have 4,502 items after cutover. Size can change between systems. Counts are harder to fake.
2. Check the edges
Sort by date. Compare the oldest message and the newest message in key folders like Inbox and Sent. If the oldest is missing, your historical pass failed. If the newest is missing, your delta or cutover sweep failed.
3. Scan for orphan folders
Look for root-level folders like INBOX.Sent, leftover [Gmail] folders, or duplicate Sent folders. Those are direct evidence of bad mapping.
4. Test live receive and live send
Send a message from an outside mailbox. Reply from the destination account. Confirm the message lands in Inbox and the reply lands in the correct Sent folder.
5. Check the new client settings
A migration can be perfect and still look broken because the client is pointed at the old server. After cutover, update clients using TrekMail’s standard IMAP and SMTP settings. If the new platform receives mail but users can’t see it, this is often the cause.
That last step is why migration and provider replacement should be planned together. Our titan email alternative piece makes the same point from a provider-switch angle: the mailbox copy is only one part of the change.
Old Way vs New Way to move email from one host to another
Short answer: the old way to move email from one host to another is manual, repetitive, and full of edge cases. The new way is server-side IMAP migration with built-in duplicate protection, pooled storage, and one dashboard for domains, mailboxes, DNS, and cutover checks.
| Old way | New way with TrekMail |
|---|---|
| Per-user pricing makes every extra mailbox cost more | Flat, plan-based pricing starting at $3.50/mo |
| Admins handhold every mailbox one by one | One dashboard for domains, mailboxes, forwarding, and migration |
| Storage is trapped in per-user buckets | Pooled storage across domains and mailboxes |
| Manual IMAP sync scripts and ad hoc folder mapping | Built-in server-side IMAP migration on paid plans |
| DNS setup spread across notes and screenshots | DNS workflow with SPF, DKIM, and DMARC guidance |
For a small team, that means less admin drag. For an agency, it means margin. For an operator cleaning up a shared-hosting mess, it means one place to work instead of five. You can review the current plans on TrekMail pricing. The Nano plan is always free, and the paid tiers come with a 14-day free trial.
Final take
If you need to move email from one host to another without duplicates, missing folders, or downtime, stop treating it like a bulk file transfer. Treat it like a controlled IMAP cutover. Map folders before you import. Exclude Gmail traps. Run staged syncs. Verify counts. Then shut the old door behind you.
If you want TrekMail to handle the hosting side after the migration, start at trekmail.net. You get flat-rate multi-domain email hosting, pooled storage, built-in IMAP migration, and no per-user tax waiting for the next hire.