While I never like losing a customer, sometimes people want to move away from Kerio Connect. That's not hard to do.
Hurricane Sandy cost me a customer. Long lasting power and Internet outages after the storm made them decide that they need to have their email and other critical servers moved to the cloud. They chose Google Apps and will not be using Kerio Connect any longer.
Of course they didn't have to switch off Kerio Connect. They could have moved it to Amazon or to smaller (and easier to deal with) hosting services like the Linode server I run on. It would have cost far less money and they would have retained control of their email. However, their decision was Google Apps and that's that.
Well, not quite "that's that". Changing mail servers requires transferring some data. I'll look at transferring from Kerio to Gmail here, but the concepts are the same no matter what mail server you choose.
If you are using Outlook or some other mail client that supports IMAP, transferring mail to a new service can be as simple as setting up both accounts (enable IMAP in Gmail) and dragging and dropping mail folders from one place to another. That could be a fair amount of manual labor and it does require that the client be smart enough to automatically create new folders when needed - older versions of Outlook Express lacked that ability; other clients may still.
POP only looks at the INBOX, though, so that would require that you move all messages to your INBOX. As Google nicely offers to label messages as they are imported, you could do that in stages, bringing in subfolders, importing and labeling, rinse and repeat.
If you couldn't do that, you'd need to use something like PerlMail::IMAPClient to read and then inject messages to the new account. Or, assuming that you have enough clout, you might be able to convince the receiving end to do the work for you. One of the nice things about Kerio Connect is that the messages are just individual text files - there is no proprietary database to decode. Any decent programmer could take those messages and insert them into another mailserver without needing any special knowledge of Kerio Connect at all.
By the way, that's not necessarily going to be true going the other direction. Google does make it easy to move data out of its systems, but not everyone is as friendly.
Even if moving a few hundred gigabytes of email is too much to contemplate, most people would want to move contacts. Just like the email itself, Kerio Connect stores contacts as individual text files. These are just vCard format with a little extraneous data at the top:
Subject: Tony Lawrence
Date: Fri, 17 Jun 2011 09:13:48 -0400
Content-Type: text/vcard; charset="utf-8"
EMAIL;TYPE=PREF,HOME;CN="Tony Lawrence":[email protected]
Many mail programs understand how to import vCard, and Google is no exception. However, you certainly don't want to import these files one by one, so you'll want to prepare a single file for Google to import. Google won't like that extra information Kerio includes, but other than that we can just glom everything together in one file. I did this using "sed" on a Linux version of Connect:
cat *eml | sed '/^Subject:/d;/^Date:/d;/^Content-.*:/d' > ~/t
You could write a Perl script to do something similar or just load them up in a text editor and delete the unneeded lines. Again, this is also the sort of thing you could farm out to any programmer: these are just text files and Gmail will happily import the data once you strip out the stuff that isn't vCard.
Moving Calendar Items
Once again, Kerio's use of text files and standard formats makes this easy. Kerio Calendar uses iCalendar and Google Calendar will import these. This does require a little more work, but it's nothing difficult for anyone who can do scripting. A Kerio Calendar entry looks like this:
What you need from each file is just the stuff that starts with "BEGIN:VEVENT" and goes through "END:VEVENT". You create a file that looks like this:
PRODID:-//Kerio Technologies//Outlook Connector//EN
(the VEVENTS will go here)
and you put all the "BEGIN:VEVENT", "END:VEVENT" lines in as shown. Google Calendar will import that to a Calendar.
What about all the user names and aliases? Kerio Connect keeps these in an XML file (that's just text with some extra formatting) called "users.cfg". It contains every user along with the groups they belong to and any aliases. It doesn't require great programming skill to reformat that to whatever the receiving end might need (such as the CSV file needed for Google's IMAP transfer tool).
Unfortunately, single user Gmail doesn't support aliases. Google Apps does (they call these "nicknames") and you can bring these in using their GoogleApps Directory Sync capability, which requires an LDAP server. You may already be using that with Kerio, but if you are not, you'll want to look at Google Apps Provisioning API to create aliases and groups from the data contained in the Kerio "users.cfg" file.
I think that pretty well covers any type of transfer. If you have any other suggestions or tips, please leave them in the comments.
By the way, if you want to move you Kerio Connect to the cloud, I'm happy to help. There's no reason to learn a new email system or give up the features and support you get from us. You don't even necessarily need to be "in the cloud" right now - just ready to move should circumstances require it. I'm available to discuss this and other options, of course.