Feb 122009


There are just a few applications that keep me tied to Microsoft Windows.  For work, there is primarily one, and it’s a bigee!  Microsoft Office, especially Outlook.  We have looked at a few other solutions previously that mitigate this problem by running Office on top of either Wine (a Windows emulation layer) or KVM (a Virtual Machine with a Windows installation).  However, I wanted something more complete.  I wanted a native client that could access my corporate email and calendar on a Microsoft Exchange server.  As far as I know, at this point in time, there is only one client that would claim such functionality – Gnome’s Evolution.

Installing Evolution with the Microsoft Exchange Connector plug-in is not so bad.  Under the hood, it’s a bit of kludge, accessing your email through Exchange’s HTTP interface, but hey, it works!  🙂  The big question is, “How do I import all my Outlook data, archived in local PST files?

Unfortunately, PST is a proprietary Microsoft format (I know, you are shocked), and the only way to access it is through a proprietary Microsoft library (mapi32.dll or mapi.dll) that only exists on a Microsoft Windows installation.  (I know, again, you are flabbergasted.)

There are 3 types of solutions that I found to migrate and liberate your email.  None of them are trivial.  Yuck!  😥  All of them are potentially time-consuming, especially if you have lots of data, but here are a few pointers.  🙂

Solution #1:  Migrate Through Mozilla Thunderbird on Windows

Assuming you still have access to your Windows machine that is running Outlook, you can install Mozilla Thunderbird on the same machine.  The advantage being that Thunderbird can use the proprietary library to import your Outlook email!

The importing process if fairly simple.  Roughly, it is:

  1. Install Thunderbird, and uses its import wizard to suck in your Microsoft Outlook email and contacts.
  2. Close Thunderibrid.  Find where it stored the email, usually in a place like:
    C:\Documents And Settings\<USERNAME OR DEFAULT>\Application Data\Mozilla\Profiles\default\XXXX\Mail\imported.mail
    where, XXXX is some random collection of letters and numbers.
  3. In Evolution, import each email folder (named after the email folder, saved as an extensionless file by Thunderbird in the MBOX format) — one at a time!  Yikes!

As you can see, there are a few problems here:

  1. You have to process each folder one at a time!  Very time consuming, tedious, and boring…
  2. You cannot have nested folders, especially with email in a folder with additional folders.  Thunderbird’s storage format (MBOX) is standard, but old.  In fact, it has been “hacked” to support nested folders.  That was not part of the original idea.  Anyway, things can get messy if you have lots of folders, especially nested folders with messages and sub-folders in the same folders.
  3. Furthermore, this does not really address your calendar.
  4. Some people have reported that Thunderbird drops some of their email!!!!

I gave up on this method somewhere between problem #1 and #2.  … This could still work for you, and it does for many people, provided you either don’t have many folders or you don’t mind lots of pointy-clicky.  😉  If you go this route, make sure you count the number of messages in each folder inside Outlook and verify those counts once you import your email into Evolution.  You don’t want to lose any email.

Solution #2:  Migrate Through Outport on Windows

This solution is very similar to the above solution, except it uses an open source tool, Outport, to migrate your email on a Windows machine.  Consequently, I believe it has the same limitations.  It may be able to migrate calendar, but I still don’t like the idea of having to import my email into Evolution one MBOX file at a time.

Plus, Outport seems to have not been updated since 2003.  That’s worrisome, but maybe it’s no big deal…  Anyway, I wanted something easier.

Solution #3:  Migrate via an IMAP server

You may be thinking, “What?  This is easier?”   Well, it was to me.  🙂

An IMAP email server not only supports providing messages, but it also supports uploading them.  In most email clients, you can add an IMAP based email account and then simply “drag-and-drop” your email or folders from your local computer to the IMAP server, or vice-versa.

The basic idea of this method is roughly this:

  1. Setup or procure access to an IMAP server. (You have friends, right?  Gmail provides IMAP support too.  ;-))  You will need to know the machine name, possibly the port number, account id, password, and authentication method (plain text, SSL, TLS, etc.).
  2. Add this server as an IMAP account to Outlook.
  3. Drag and drop all your email to the IMAP account.  (You may not be able to put folders inside the “Inbox”, but you can add them to the “root” of the account.)  I know this is still “pointy-clicky”, but it’s much less than the other methods.
  4. Close Outlook.
  5. Open Evolution.
  6. Add the same IMAP server as an account in Evolution.
  7. Drag and drop all your email from the IMAP account to your local store on Evolution.  Done!  Tada!!!  🙂

If you are worried about setting up an IMAP server, I have some basic instructions listed below.

Migrating Contacts

You can export your contacts in Outlook to CSV files or other formats, which you can read into Evolution.  Thunderbird can also read them and export them into other file formats, if you wish.  No biggee here.

Migrating Calendar Entries

This can be more problematic.  If you are like me, you may not have many entries, so I simply moved my calendar entries back up the Exchange server, using it as a temporary staging area.

Others have suggested exporting the Calendar entries up to Google’s Calendar and then back down to Evolution in iCal format.  Sounds good, but I can’t offer any experience on this method.

Setting Up A Temporary IMAP Server

I did not want to transfer all my email via Gmail’s IMAP server for lots of reasons (bandwidth, privacy, possible sub-folder complications, etc.).  So, I decided to set up my own local IMAP server on my Gentoo Linux box.  Here’s a few quick pointers, if you decide to do the same.

Install dovecot’s IMAP server:

emerge dovecot

Verify the configuration is set up to use the “maildir” format, not MBOX.  The “maildir” format was created by the qmail folks, and it has several advantages over the older MBOX format, including native sub-folder support.  Here are the important configuration changes that I had to make in /etc/dovecot/dovecot.conf. You may want to verify or research these further:

# Config file = /etc/dovecot/dovecot.conf
# This is required to enable network access - otherwise, it may be restricted to localhost only
listen = *, [::]
# This enables plain text passwords.
# This is not good on a public network, but works fine for private LAN's.
# And, it simplifies the login process in Outlook and Evolution.
disable_plaintext_auth = no
# This sets the mailbox format to 'maildir', and it stores the mail
# in your user's homespace on the IMAP server, avoiding
# various file permission problems on the remote box.
mail_location = maildir:~/.maildir

Then you fire up the dovecot server:

# /etc/init.d/dovecot start

And, away you go!


It’s not a pretty process, but if you bang your head on it long enough, you’ll get through it!  🙂  Just remember, freedom awaits all those who persist!  😀  Good luck!