Imapsync
About
imapsync allows you to transfer or synchronize data between any two IMAP servers. This could be used in any of several scenarios:
- Upgrading from one mail server to another (SME -> SME, Exchange -> SME, Notes -> SME)
- Backing up email from one IMAP server to another
- Automated spam learning when using SME with an internal mail server (see the Advanced example below).
Author: Gilles LAMIRAL <lamiral-at-linux-france.org>
- Author's README
- Author's Change Log
- Author's Distribution Folder
- Note about Bugs with perl-Mail-IMAPClient-3.x
Installation
Enable the dag repository
You need to activate the Dag reposity before installing this contrib.
see dag repository
For SME Server 8 and 9 you can find imapsync in epel
Install imapsync
yum --enablerepo=dag install imapsync
or
yum --enablerepo=epel install imapsync
Examples
Basic Example: Account Duplication
This example would copy all existing folders from foo@imap.truc.org to bar@imap.trac.org
/usr/bin/imapsync --noauthmd5 \ --host1 imap.truc.org --user1 foo --passfile1 /etc/secret1 \ --host2 imap.trac.org --user2 bar --passfile2 /etc/secret2
Bear in mind that you would need to create /etc/secret1 and /etc/secret2 containing the correct passwords for imapuser1 and imapuser2 respectively.
Advanced Example: Exchange Public Folders
This example will transfer the public folders 'LearnAsSpam' and 'LearnAsHam' from an Exchange server to the specified user on your SME server.
If you create and schedule a script to run this command regularly, and combine it with LearnAsSpam.pl and Auto-Learning you could let the users on an internal Exchange Server train your SME spamassassin by dragging SPAM or HAM into public folders in their Outlook.
Assumptions:
- For the Exchange Server:
- the user spamfilter exists on the Exchange server
- the password for spamfilter on the Exchange server is in the file /root/secret1
- the Exchange Server user spamfilter has Owner permissions on both Public Folders/LearnAsSpam and Public Folders/LearnAsHam
- For the SME Server
- the user spamfilter exists
- the password for spamfilter on the SME server is in /root/secret2
- the folders LearnAsSpam and LearnAsHam exist in the email root for spamfilter
imapsync command
/usr/bin/imapsync \ -- noauthmd5 \ --host1 a.b.c.d --port1 993 --ssl1 --user1 spamfilter --passfile1 /root/secret1 \ --delete --expunge1 --prefix1 "Public Folders." \ --host2 localhost --port2 993 --ssl2 --user2 spamfilter --passfile2 /root/secret2 \ --folder "Public Folders/LearnAsSpam" \ --folder "Public Folders/LearnAsHam" \ --noauthmd5
Migrating users and data to Zarafa
Zarafa migration whitepaper describes various ways of migrating your users and your data to a Zarafa server.
http://download.zarafa.com/zarafa/release/docs/zarafa_migration.en.pdf
Folder Naming
SME and Zarafa use different folder naming. To enhance migration SME folders should be renamed prior to migration.
drafts > Drafts sent-mail > Sent Items trash > Deleted Items junkmail > Junk E-mail
IMAP migration from SME/IMAP to Zarafa/IMAP
By default smeserver-zarafa enables zarafa IMAP on port 8143
Perform a user mail sync from SME/IMAP (host1/port1) to Zarafa/IMAP (host2/port2)
imapsync --noauthmd5 --host1 localhost --port1 143 --split1 500 --user1 <username> \ --password1 <password> --sep2 / --prefix2 "" --host2 localhost --port2 8143 \ --split2 500 --user2 <username> --password2 <password>
Example to synchronize a user named 'bob' with password 'bob123' from SME IMAP into Zarafa:
imapsync --noauthmd5 --host1 localhost --port1 143 --split1 500 --user1 bob \ --password1 bob123 --sep2 / --prefix2 "" --host2 localhost --port2 8143 --split2 500 \ --user2 bob --password2 bob123
Note: If the synchronization process terminates, apparently successfully, but only part-way through, delete the dovecot.index.cache file in the last folder copied and restart the process. Adding "--useheader 'Message-ID' --skipsize" to the command above will prevent duplicates if the process does have to be restarted.