This weekend I had to migrate an email account that had been hosted alongside its website for years.
My hosting disk space is 5GB and this single mailbox was taking up almost 1,5 GB, so there was no choice but to clean it up or move it elsewhere.
Since it is my partner's professional email and I knew that if I asked her to clean it up it would take several days, I started looking into the migration route.
Some time ago I already explained how to get a free 5GB mailbox with Zoho Mail, which is what I use for every new project.
Starting from scratch is easy. The problem here, however, was what to do with all the messages already stored. Simply changing the domain records so that new emails would start arriving in the new Zoho account was not enough.
I also wanted to move the account to Zoho Mail using only its free plan without paying for a plan for a month just to perform the migration, or activating a Premium trial and cancelling it afterwards.
I can tell you in advance that it can be done and it is not particularly complicated either. That said, if your mailbox is packed, as mine was, it will take a while.
In my specific case, the original account was hosted at Webempresa and the domain DNS was managed through Cloudflare, but the method I am going to explain works with virtually any email provider that lets you access the mailbox via IMAP.
The menus will obviously differ. In Webempresa, the IMAP details and certain settings are in one place, while another host will put them somewhere else, but the logic of the migration is the same. Especially if your provider uses cPanel to manage the hosting.
Also, for safety, we are not going to change the mail servers until we have a complete copy of the old mailbox inside Zoho.
That way, while we work and until everything has been switched over, the current account will continue sending and receiving messages exactly as before.
By the way, before I forget, if you manage your business email in Gmail, you should know that Google has warned that it will shut this service down at the end of 2026, so this alternative I am describing will be very useful to you.
Before you start: what Zoho Mail offers for free and its limitations
The first thing is to check that Zoho's free plan works for you, because it has one important limitation you should know about before moving absolutely anything.
As of today, Zoho Mail Free lets you host one domain, create up to five users and provides 5 GB of email storage for each of them. For a normal small-business, professional or personal-website account, 5 GB can go a long way, especially if you adopt good practices when sharing attachments.
The main drawback is access: the free plan does not include IMAP, POP or ActiveSync. This means that once the migration is complete, you will not be able to set up that Zoho Free account in Thunderbird or Outlook via IMAP as you would with a paid plan. You will have to use Zoho webmail or its apps.
This can be a major inconvenience depending on how you work. In my case it was not, because my partner used the hosting provider's webmail, so the change is straightforward.
On the other hand, Zoho lets you import emails stored in EML format and group them into ZIP files of up to 500 MB each. This is exactly the feature we are going to use to move the entire archive without paying a penny.
How we are going to migrate the email without interrupting the service
Before starting the steps, it is worth knowing what we are going to do, because that makes each step much easier to understand.
The process will be this:
Current provider > Set up in Thunderbird > Export EML files > Import into Zoho Mail Free
- First we will connect Thunderbird to the current server via IMAP and download a complete copy of the mailbox to the computer.
- Then we will export the messages as EML files, which are simply files containing each email together with its information and attachments.
- Next we will create the new mailbox in Zoho and import those files.
- Throughout this time, the domain's MX records will continue pointing to the old provider, so new emails will keep arriving there as normal.
- Only once we have checked that the entire archive is correctly inside Zoho will we change the MX records.
From that point on, the old mailbox will stop being the destination for new messages and Zoho will take over.
It is a slightly long process, but a fairly safe one.
Step 1. Clean up the mailbox and check how much email you actually have
This is optional but HIGHLY recommended.
Before downloading several gigabytes, it makes sense to delete anything you already know you do not want to keep.
Start by logging into your current provider's webmail and pay particular attention to Spam and Trash. If you are sure there is nothing important there, empty them before continuing.
There is little point spending time downloading, exporting, compressing and re-uploading 500 messages you had already decided to throw away.
In my case, the mailbox initially occupied 1.353 MB. After emptying those two folders, the email that actually had to be migrated came down to around 1.150 MB, so I eliminated about 200 MB of unnecessary work with a couple of clicks.
I also recommend checking which are the largest messages you have stored. Many webmail systems let you sort the Inbox by size, and some hosting providers also have tools for finding the files that take up the most space.
I found roughly ten messages larger than 10 MB, and the biggest was around 37 MB. I did not have to delete any of them and they all migrated correctly, but it is worth knowing in advance whether you have any exceptionally large email that could cause problems.
For additional reference, Zoho currently sets 40 MB as the maximum size of a message normally received by the mailbox. This limit should not be confused with the 500 MB limit for the ZIP files we will use to import the archive.
Step 2. Set up the old account in Thunderbird using IMAP
Now we need a tool that can:
- Connect to the old server.
- Download all the messages.
- Export them as EML.
Mozilla Thunderbird, is free and available for Windows, macOS and Linux.
Once you have downloaded and installed it normally, add the account you want to migrate and enter the connection details provided by your provider:
- Email address.
- Password.
- The IMAP and SMTP server name.
- The port and encryption type in both cases.
Here it is important to choose IMAP rather than POP. IMAP lets us work with the folders and messages that already exist on the server while preserving their structure, which is exactly what we need to obtain a faithful copy of the mailbox.
In Webempresa, the details appear in the settings for the email account itself. If you use another host, look for an option similar to “Set up email client”, “Manual configuration”, “IMAP” or “Connection details”.
When you are done, Thunderbird should start showing the same folders you currently see in your webmail: Inbox, Sent, Archive and any others you have created over the years.
Do not export anything yet. First we need to make sure Thunderbird has actually downloaded all the content.
Step 3. Download all messages and their attachments to the computer
IMAP has one peculiarity: being able to see an email in Thunderbird does not mean all of its content is stored locally. The program can download certain parts when you need them.
For a migration, we want exactly the opposite. We need a complete copy of the message, including attachments, because in a moment we will have to export it.
To do this, in Thunderbird go to:
Account Settings > Synchronization & Storage
and check that the following option is enabled “Keep messages for this account on this computer”.
In the advanced options you can also review which folders will be synchronized. Make sure you select all the ones you want to move to Zoho (Inbox, Sent, Drafts if you want…).
Once that is done, you can force the download from:
File > Offline > Download/Sync Now
Important: in my version of Thunderbird, the top menu containing the File option was hidden. Just press Alt to temporarily display the usual menu bar.
Once synchronization is finished, we can still perform a very simple test to check that we really have a complete local copy.
Select File > Offline > Work Offline and open several messages.
Do not test only with the email you received yesterday: find one from a few years ago and, above all, open a message with a reasonably large attachment.
If you can read the email and open the attachment while Thunderbird is offline, that means the information is already stored on the computer and is not being requested from the server.
When you finish checking remember to reactivate “Work Online”.
It is pretty obvious, but I forgot. If the same happens to you, fortunately Thunderbird reminded me very politely later in the process and I turned it back on.
Step 4. Export the messages to EML format
We now have the mailbox downloaded to our PC, which is an excellent backup. Now we need to transform it into a format that Zoho can import.
The format we are going to use is EML, a common standard for storing email messages. Zoho can import these files directly while preserving all the message information and attachments.
If you have only a few folders, as in my case, you do not even need to install extensions in Thunderbird. If you have lots of folders, use ImportExportTools NG.
Go to Inbox, press Ctrl + A to select all messages and then:
Right-click > Save As
Create a folder on the computer called, for example, inbox, and save them there. Thunderbird will generate one .eml file for each selected email.
Then you can repeat the process with Sent , Archive or any other folder you want to keep.
What happens if Thunderbird finds two identical names?
This is where one of the few problems in my entire migration appeared.
Thunderbird automatically generates the EML filenames and, for a couple of messages, ended up trying to save two files with exactly the same name. Windows warned me that the file already existed and asked whether I wanted to replace it.
Do not replace it, because you would remove one of the two messages from the copy.
In my case it happened only twice and I was able to fix it manually by renaming one of the files.
If you have tens of thousands of messages or many folders and run into lots of conflicts, then it may be worth installing an extension such as ImportExportTools NG, which provides more options for bulk exports.
For a simple mailbox with two or three folders, Thunderbird's built-in method is more convenient.
Step 5. Check that you really exported all the emails
Before uploading anything to Zoho, spend a minute checking that the numbers add up.
In Thunderbird, select all the messages in Inbox and see how many there are. Then open the inbox folder you just created in Windows and check how many EML files it contains.
Do the same with Sent and the rest of the folders.
One thing: the local folder's size in MB will not be the same as the size shown by the hosting provider, because the way the information is stored may differ. What matters is the number of messages.
If you have 665 emails in Thunderbird and 665 EML files in the Inbox, you can continue.
Step 6. Create the free Zoho account and verify your domain
Now it is time to prepare the new webmail.
Do what I explain here and sign up for Zoho Mail for free.
Add the domain you are going to use and create the corresponding email address.
If you are migrating nombre@tudominio.com, my advice is to create the account with that same address in Zoho. Because although the account that manages administration in Zoho does not need to be the same email account you import -one thing is the Zoho account (higher up in the hierarchy) and another is the email account itself- it will be easier for you to manage.
Once your account has been created, Zoho will first need to verify that the domain really belongs to you. It will do this by asking you to add a verification DNS record. Follow the instructions shown in the console, as they may vary depending on where you manage the domain.
Important: if you use Cloudflare to manage your domain, it is much more convenient and you will only have to log into your account there and accept. The technical changes will be made automatically.
Here comes one of the most important parts of the entire procedure:
Do not change the MX records yet.
MX records are the DNS records that tell servers where email for your domain should be delivered. As long as they continue pointing to the old provider, you will keep receiving emails correctly. That is why we will not change them until almost the final step of the migration.
Step 7. Compress the EML files into ZIP files under 500 MB
You can import EML files individually, but with hundreds or thousands of messages that is a waste of time. It is much better to compress them into ZIP files.
Zoho lets you put several EML files into the same archive and currently sets 500 MB as the maximum size per imported ZIP. If, after compressing the EML files exported from each folder, one of the archives is larger than 500MB, all you have to do is split them into several ZIP files below that size.
In my case, the Inbox EML files took up roughly 300 MB and the Sent ones around 700 MB. I ended up preparing three ZIP files: one for Inbox and two for Sent.
There is no problem using four, five or ten if your account is larger. The only important thing is that each individual file stays below the limit.
It is also advisable to keep Inbox and Sent separate even if they would all fit into a single ZIP by size. Inside Zoho we are going to import each group into its corresponding folder, which helps us avoid mistakes.
Step 8. Import the ZIP files from Zoho Mail
This is the step that lets us complete the whole process without paying for Zoho Premium.
Open the Zoho webmail (note: the webmail, not the account management area) and go to:
Settings > Import/Export Emails > Import from EML
From there you can select either .eml files or ZIP archives containing them.
When importing them, pay close attention because Zoho also lets you choose the folder where you want to store the messages or preserve the folder structure included inside the ZIP.
This way you can replicate the folder structure you had in your previous email account
First import:
entrada.ZIP > Inbox
Wait for it to finish and open the Import History to check that there are no errors.
Zoho warns you when a message could not be processed and shows the reason for the failure.
Then open several imported emails. Check an old one, a recent one and one that includes attachments.
If everything is correct, repeat the operation with Sent:
enviados-1.ZIP > Sent
And then with the rest of the packages you have.
In my case, all three ZIP files imported correctly, and emails up to 37 MB that I had detected at the beginning were also uploaded with their attachments.
Step 9. Check whether new messages arrived during the migration
Up to this point, the old provider has continued handling the email, which is exactly what we wanted.
That has one consequence: if someone wrote to you while we were downloading, exporting and importing the mailbox, that new message will still exist only on the source server.
So go back to Thunderbird now, make sure you have disabled offline mode and refresh the Inbox.
If there are messages newer than the original export, select them, save them as EML and perform one final import into Zoho. You can do exactly the same with Sent if you have used the account during the process.
It is a small final manual synchronization that lets us reach the switchover with both mailboxes practically identical.
Step 10. Change the MX records so new email arrives at Zoho
Now, yes.
We now have the complete archive inside Zoho, we have checked that messages open correctly, and we know there is no new email left only on the old server. It is time to tell the Internet to deliver any messages we receive from now on to Zoho.
To do that, you must modify the domain's MX records at the provider that manages your DNS.
Open the Zoho console and use the values it gives you specifically for your domain, because they may vary depending on the data center where your account is located.
Again, if your DNS is managed through Cloudflare, the process is very simple. Zoho detects the provider and offers to make the changes through a one-time authorization: it shows you which records it will add and which ones it will replace before carrying it out.
If you manage DNS through your hosting provider, domain registrar or another service, you will have to create the records manually. It is not difficult, but it is a little more time-consuming. If you do not know how, ask support for help because the first time can seem a bit confusing.
However you do it, the result is the same: the old MX records must be removed and the ones provided by Zoho must remain configured.
Step 11. Review the hosting mail routing if some emails still arrive in the old mailbox
Okay, this step will not be necessary with every provider, but it is worth explaining because it was the only real problem that appeared after changing the MX records.
As soon as I made the change, I sent a message from Gmail to the newly migrated account.
It arrived correctly in Zoho.
Then I ran the same test from another address belonging to a domain that was also hosted at Webempresa, and the message appeared in Thunderbird, inside the old mailbox.
Had the MX records failed? No, because Gmail made that clear.
What was happening was that the hosting provider itself still considered email for that domain to be handled locally. When one of its other servers tried to deliver a message, it deposited it directly in the old mailbox without ever checking the new external MX records.
In Webempresa, you fix this by changing the mail routing to remote server. Another hosting provider may have an equivalent option, or you may not need to do anything at all.
Again, if this happens to you and you do not know how to fix it, contact support and ask them to explain it.
As you can see, the way to detect the problem is quite simple: if emails sent from Gmail, Outlook or other external providers arrive at Zoho, but those generated inside your old hosting still appear in the previous mailbox, review its local routing settings.
Once you change this option, repeat the test and all messages should arrive correctly in Zoho.
Step 12. Configure SPF and DKIM and review your existing DMARC
Changing the MX records gets us receiving email in Zoho, but we still need to make sure that messages sent from there can prove that they are genuinely authorized to use our domain.
That is achieved with the following acronyms: SPF, DKIM and DMARC.
- SPF indicates which servers are authorized to send email using our domain.
- DKIM adds a cryptographic signature to the message so its authenticity can be verified.
- DMARC uses these checks to tell receiving servers what to do when a message fails authentication.
Zoho provides the records you need to add to your DNS and lets you verify them from its own console.
Here you need to pay special attention to SPF if you already use other services to send emails.
For example, an email marketing tool, a CRM or a transactional system may also be authorized to use your domain. Do not remove those senders just to add Zoho, and do not create several separate SPF records. Review your existing configuration and combine the authorized services correctly.
Again, Zoho's integration with Cloudflare detects the existing SPF record and generates a new one that preserves the previous senders and adds Zoho.
DMARC is similar, although in my case I did not use what Zoho suggested because the domain already had a similar, though not identical, policy configured that worked for me.
Important: you must not publish two different DMARC records for the same domain.
Step 13. Send an email to Gmail and actually check SPF, DKIM and DMARC
Zoho's console lets you verify the DNS records, but there is an even better final check: send a real email and see what happened to it.
Send a message from the new Zoho account to one of your Gmail accounts.
Then open the received message, click the three dots at the top right and select Show original.
Gmail will show you the email authentication results.
What you want to find is:
- SPF: PASS
- DKIM: PASS
- DMARC: PASS
This test lets you check not a TXT record, but that a real message sent from Zoho reached its destination and the receiving server considers all three main authentication checks valid.
Another important point: the first emails you send from the account may end up in the recipients' spam folder That is why it is important to warn them or ask for a reply, or at least confirmation of receipt.
Normally, after you send a few ordinary emails, all the ESPs will understand that your account is not spam and you will get through their filters.
Final check: how to know the migration is complete
Very simple: send email from Gmail, Yahoo, Outlook or another external provider to Zoho, reply from Zoho, and also test with an address belonging to the previous hosting provider if you have that possibility.
Also check that you can view old messages in Inbox and Sent, that their attachments are still available, and that no new email appears exclusively in the previous mailbox.
If everything works, the migration is complete.
Even so, I would not immediately delete two things:
- The old hosting account. Keep it available for one or two days while you check that no server is still delivering messages there because of a pending setting or some temporary DNS-related effect.
- The EML files downloaded to your PC for a reasonable amount of time, in case there is a large email that did not make it through and you need to recover it.
Once you are sure everything is in Zoho and new mail is arriving correctly, you can delete both backups.
Conclusions. A long path, but not a difficult one
Migrating more than 1 GB of email may initially seem much more complicated than it really is.
The key is to approach it as two separate processes:
- Migrate everything correctly.
- Change the MX records so mail starts arriving at the new email provider.
Keeping a backup of everything.
This way you can do the delicate part of the migration without pressure:
- If a ZIP fails, generate it again.
- If a message is missing, go back to Thunderbird or your PC.
- If you discover a folder you forgot, export it and import it.
Meanwhile, real email continues arriving at the same server as always. And when you finally make the switch, Zoho already contains everything you need.
If you start from scratch (without Thunderbird or a Zoho account), you should have it ready in roughly an hour of work, depending, of course, on how many GB and folders you need to migrate.
The good thing is that the hour spent migrating will make those free 5GB last you several years. Seen that way, the ROI is unquestionably positive.
Frequently asked questions
Can you migrate email to Zoho Mail for free without losing messages?
Yes. You can download the old mailbox with Thunderbird, export it to EML and then import it into Zoho Mail Free.
Does Zoho Mail Free include IMAP?
No. The free plan does not include IMAP, POP or ActiveSync, so you will have to use Zoho webmail or its apps.
How can I keep old emails when migrating to Zoho?
Download them via IMAP in Thunderbird, export them as EML files and then upload them to Zoho.
Does Zoho allow EML files to be imported?
Yes. You can import individual EML files or group them into ZIP files.
What is the maximum ZIP size for importing into Zoho?
Each ZIP file must be smaller than 500 MB.
Should I change the MX records before importing the emails?
No. It is better to keep the MX records pointing to the old provider until you have checked that the entire archive is correctly inside Zoho.
Why should I use IMAP instead of POP in Thunderbird?
Because IMAP preserves the folder structure and lets you download a more faithful copy of the existing mailbox.
How do I check that Thunderbird has downloaded all the emails?
Enable offline mode and try opening old messages and their attachments. If they work, the copy is stored locally.
What happens if new emails arrive during the migration?
Before changing the MX records, sync Thunderbird again and export the new messages so you can import them into Zoho too.
What should I do if some emails still arrive at the old hosting provider?
Review the hosting provider's mail routing, because it may still treat the domain as local email even after you have changed the MX records.
Do I need to configure SPF, DKIM and DMARC after migrating?
Yes. It is advisable to configure them and check that emails sent from Zoho correctly pass all three verifications.
When can I delete the old account and the EML files?
It is better to wait a few days and confirm that everything works correctly before deleting those backups.

Leave a Reply