Migrate your IMAP data

    

On my way to move from Zarafa to SOGo, I needed a way to migrate my e-mail between the two systems. Both provides IMAP capabilites and that’s the service I’m gonna use to move the data.

You can either copy/move the e-mail manually using your favorite IMAP client or automate the migration using imapsync.

Here are simple examples to show you how it works.

Test drive

You can simulate the command w/o any damage ; just use the --dry parameter:

# imapsync --host1 zarafa.tumfatig.net --ssl1 --user1 joe --password1 MASKED  \
           --sep1 / --prefix1 "" --host2 www.tumfatig.net --ssl2 --user2 joe  \
           --password2 MASKED --folder INBOX --noauthmd5 --idatefromheader    \
           --skipsize --allowsizemismatch --dry
(...)
Time: 25 s
++++ End looping on each folder ++++
++++ Statistics ++++
Time                   : 28 sec
Messages transferred   : 0 (could be 147 without dry mode)
Messages skipped       : 0
Total bytes transferred: 0
Total bytes skipped    : 0
Total bytes error      : 0
Detected 0 errors

Copy the INBOX folder

Remove the --dry option to really copy the e-mails. This will take a bit more time:

# imapsync --host1 zarafa.tumfatig.net --ssl1 --user1 joe --password1 MASKED  \
           --sep1 / --prefix1 "" --host2 www.tumfatig.net --ssl2 --user2 joe  \
           --password2 MASKED --folder INBOX --noauthmd5 --idatefromheader    \
           --skipsize --allowsizemismatch
(...)
Time: 129 s
++++ End looping on each folder ++++
++++ Statistics ++++
Time                   : 132 sec
Messages transferred   : 147
Messages skipped       : 0
Total bytes transferred: 25622686
Total bytes skipped    : 0
Total bytes error      : 0
Detected 0 errors

Copy a whole sub-folder

You may want to copy a single whole sub-folder. This would require the --folderrec parameter.

First of all, get the exact name of the folder using raw IMAP commands:

# openssl s_client -connect zarafa.tumfatig.net:imaps
(...)
* OK Zarafa IMAP gateway ready
. login joe MASKED
. OK LOGIN completed
. list "" "*"
* LIST (HasNoChildren) "/" "INBOX"
(...)
* LIST (HasNoChildren) "/" "Archives/Free"
* LIST (HasNoChildren) "/" "Archives/Jobs/NetXP"
* LIST (HasNoChildren) "/" "Archives/Jobs/Altran"
* LIST (HasNoChildren) "/" "Archives/Jobs/Dell"
* LIST (HasChildren) "/" "Archives/Jobs"
* LIST (HasChildren) "/" "Archives"
* LIST (HasNoChildren) "/" "Trash"
. OK LIST completed
. logout
* BYE Zarafa server logging out
. OK LOGOUT completed
closed

Now that you know the exact name of the folder you want to copy, just do it (c):

# imapsync --host1 zarafa.tumfatig.net --ssl1 --user1 joe --password1 MASKED  \
           --sep1 / --prefix1 "" --host2 www.tumfatig.net --ssl2 --user2 joe  \
           --password2 MASKED --folderrec "Archives/Jobs" --noauthmd5         \
           --idatefromheader --skipsize --allowsizemismatch
(...)
Time: 29 s
++++ End looping on each folder ++++
++++ Statistics ++++
Time                   : 88 sec
Messages transferred   : 240
Messages skipped       : 10
Total bytes transferred: 12719525
Total bytes skipped    : 134980
Total bytes error      : 0
Detected 0 errors

That’s All Folks!