Migrate accounts from Kerio Connect to Zimbra Collaboration with ImapSync

In previous posts we saw what Zimbra Collaboration is, which prerequisites are necessary for its installation, how to install and configure DNSMasq and finally, how to install Zimbra.

Now we’re going to see how to migrate our accounts from a Kerio Connect server to a Zimbra Collaboration server, since this was my case. To do this, we will use a free product called ImapSync. There is other software that can be used for this migration, some even based on ImapSync, but I tried a few, some with a graphical interface and some through the command line, and none did end up working correctly or as I needed between these two servers. Maybe it was me just doing something wrong, but with ImapSync I was able to achieve the results I needed.

Some considerations

PLAIN Authentication

First, ImapSync requires PLAIN authentication to be enabled in Zimbra. This can be done in Configuration > General Configuration > Proxy > Proxy Congiguration for mail

PLAIN Authentication

Size Limits

This may or may not be necessary depending on the size of the accounts you are going to migrate, and the size of the emails and attachments. If you are not sure how big your accounts, its emails and attachments are, I’d suggest to increase the maximum allowed sized in Zimbra, and decrease them again later, once the migration is complete.

First, verify the current maximum allowed sized, configured by default in Zimbra. I suggest copying these values so you can reset them later.

zmprov getConfig zimbraFileUploadMaxSize
zimbraFileUploadMaxSize: 10485760
zmprov getConfig zimbraImapMaxRequestSize
zimbraImapMaxRequestSize: 10240
zmprov getConfig zimbraMailContentMaxSize
zimbraMailContentMaxSize: 10240000
zmprov getConfig zimbraMtaMaxMessageSize
zimbraMtaMaxMessageSize: 204857600

Configure new size limits:

zmprov modifyConfig zimbraFileUploadMaxSize 150000000
zmprov modifyConfig zimbraImapMaxRequestSize 150000000
zmprov modifyConfig zimbraMailContentMaxSize 150000000
zmprov modifyConfig zimbraMtaMaxMessageSize 150000000

Check that the changes have been applied correctly:

zmprov getConfig zimbraFileUploadMaxSize
zmprov getConfig zimbraImapMaxRequestSize
zmprov getConfig zimbraMailContentMaxSize
zmprov getConfig zimbraMtaMaxMessageSize

Restart mailboxctl:

zmmailboxdctl restart

ImapSync

With the information of the official ImapSync website, its GitHub site and the Zimbra Wiki, I did a few tests with some fake accounts until I managed to migrate/sync all folders and emails between Kerio Connect accounts and Zimbra Collaboration accounts. The final command I used was the following:

imapsync --nosyncacls --subscribe --syncinternaldates --nofoldersizes --skipsize --noauthmd5 --host1 11.11.11.11 --user1 user1@domain.com --password1 123456 --host2 22.22.22.22 --user2 user2@domain2.com --password2 123456 -authmech2 PLAIN --ssl2

The following were the options I used:

--nosyncacls
  Don't sync ACLs (Listas de Control de Acceso). Enabled by default.
--subscribe
  Subscribe to transferred folders on Server2 if subscribed on Server1. Enabled by default.
--syncinternaldates 
  Sync the original mail dates.
--nofoldersizes
  Do not calculate the folder size before syncing them. By default it does calculate it, but we want to sync everything either way, so there's no point.
--skipsize
  Ignore sizes. Enabled by default.
--noauthmd5
  Don't use MD5 for the Authentication. Enabled by default.
--authmech2 PLAIN 
  Authentication mechanism on Server2 (Zimbra).
--ssl2
  Use SSL on Server2 (Zimbra) if possible. Enabled by default.

Monitor the logs

Something very important which I recommend to to is to monitor the logs during each migration. This way you can see at all times what is being done and if any error occurs. To do so, we can use the simple command tail:

tail -f log/mailbox.log | grep -i warn

Calendars and Contacts

ImapSync does not migrate calendars or contacts between servers and accounts, only folders and emails. In my case I simply exported the calendars and contacts from the accounts on the Kerio Connect server and imported them into the accounts on the Zimbra Collaboration server. There are other ways to do this, for example through Microsoft Outlook, the migration app from Zimbra or other software, but in my case the number of accounts was not too big and I was able to do this manually.

And here ends this tutorial! There are probably other ways to migrate accounts and emails between Kerio Connect and Zimbra Collaboration, but I did not find any that worked better for me than ImapSync and I personally think that it’s one of the most secure, fast and best methods. Try it out and let me know how it went or if you know any better alternative!