To copy mailboxes between two mail servers, use imapsync. It connects to both servers over IMAP, compares what's already there, and copies only what's missing, folder by folder. Nothing on the source server is touched or deleted, so you can run it as many times as you need before you're confident the copy is complete.
This covers the sync step on its own: useful if you're consolidating two mailboxes, copying mail to a backup account, or syncing between two servers that aren't part of a provider switch at all. If you're moving your whole account to Flashcloud instead, see moving your email to Flashcloud from another provider.
Before you run anything
Both mailboxes need to already exist. imapsync copies messages into a mailbox, it doesn't create one. If you're syncing into a Flashcloud address, create it first in the portal under the Email Accounts tile.
You'll need four pieces of information for each side: the IMAP hostname, port, and the username and password for that mailbox. For a Flashcloud destination, that's mail.yourdomain.com, port 993 with SSL, and the full email address as the username.
Running the sync
A basic command looks like this:
imapsync --host1 mail.source.com --user1 you@olddomain.com --password1 'oldpass' \ --host2 mail.yourdomain.com --port2 993 --ssl2 \ --user2 you@yourdomain.com --password2 'newpass'
--host1, --user1, and --password1 point at the source mailbox: wherever the mail currently lives. --host2, --user2, and --password2 point at the destination. --port2 993 --ssl2 tells imapsync to connect to the destination over SSL, matching the IMAP settings above.
Add --dry for a first pass. It reports what would be copied without writing anything, which catches a wrong password or a folder-naming mismatch before you commit to a real run. Drop it once the dry run looks right.
Run one command per mailbox. imapsync syncs a single account per invocation, so if you're copying ten mailboxes, that's ten separate commands (or a small shell loop if the credentials follow a pattern).
Reading the output
Each run ends with a summary: messages copied, messages skipped because they already existed on the destination, and any errors. Skipped messages aren't a problem: imapsync recognizes a message it already copied and doesn't duplicate it. This is what makes it safe to run the same command twice; the second run only picks up what changed since the first.
Errors are worth reading individually. A single malformed message won't stop the whole sync, but it will show up in the summary so you can go back and check it by hand if needed.
Folders that don't map cleanly
Most providers use similar folder names (Inbox, Sent, Trash, Drafts) but not identical ones. Some use "Sent Items" instead of "Sent Mail," or nest folders differently. imapsync generally maps common folder names automatically, but a folder with an unusual name on the source may land as its own top-level folder on the destination instead of merging into the expected one. After a sync, open the destination mailbox in a client and check that folders line up the way you expect, particularly if the source was a provider with nonstandard naming.
When you're done
Run the sync once, wait a day or two if new mail is still arriving on the source, then run it again to pick up anything new. Once a final sync shows zero new messages copied, the destination mailbox is a complete copy and it's safe to point clients, or MX records, at the new server.
If a sync keeps failing with authentication errors even though the password is correct, or specific messages consistently error out, open a ticket through the portal (Support → New ticket). It's a real person on the other end, and they can check server-side logs that aren't visible from the imapsync output alone.