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
The following command will configure the dag repository on SME Server. EDIT NOT COMPLETE!
To create an entry in the database for the epel repository we open put the following commands in a terminal
window or in a shell window:
/sbin/e-smith/db yum_repositories set epel repository \
Name 'SME Server - epel' \ BaseURL 'http://<http://download.fedoraproject.org/pub/epel/7/$basearch' \ EnableGroups yes \ GPGCheck yes \ Visible no \ status disabled
To enable the changes:
signal-event yum-modify
Just to be sure, give yum a fresh start:
yum clean all
After adding it to the database we have to update the changes to the configuration file:
signal-event yum-modify
Install imapsync
yum --enablerepo=dag install perl-Mail-IMAPClient-2.2.9 imapsync
IMPORTANT If you install imapsync without specifying perl-Mail-IMAPClient-2.2.9 on the command line as shown above, yum will download and install the latest available version of perl-Mail-IMAPClient - currently 3.x - which does not work according to the author of imapsync. If this happens, you will get an error about IMAPClient every time you run imapsync.
If you have accidentally installed the wrong version of IMAPClient, you can correct the problem using the command below. When done, reinstall imapsync as shown above.
yum remove perl-Mail-IMAPClient
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 \ --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
This section needs merging and updating, ports have changed, and scripts should be written
Folder Naming
SME and Zarafa use different folder naming. To enhance migration SME folders should be renamed prior to migration.
drafts > Drafts ## we should write a script, foreach user, mv folder, both ways sent-mail > Sent Items trash > Deleted Items junkmail > Junk E-mail
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
IMAP migration from SME/IMAP to Zarafa/IMAP
Configure zarafa-gateway for migration enabling IMAP on port 144 only as shown above
Get imapsync and required perl module
http://wiki.contribs.org/Imapsync
Perform a user mail sync from SME/IMAP (host1/port1) to Zarafa/IMAP (host2/port2) [NOTE, ports have changed]
imapsync --noauthmd5 --host1 localhost --port1 143 --user1 <username> --password1 <password> --sep2 / --prefix2 "" --host2 localhost --port2 144 --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 --user1 bob --password1 bob123 --sep2 / --prefix2 "" --host2 localhost --port2 144 --user2 bob --password2 bob123
After syncing is complete, stop zarafa-gateway service and/or edit /etc/zarafa/gateway.cfg to meet your needs.