While migrating websites is usually not a problem, sometimes it's more difficult to migrate email boxes. This is especially the case when two servers do not use the same software. Fortunately, to simplify this step, there are many tools, including Imapsync, which is the one we are going to talk about today.
Imapsync tool makes it possible to synchronize mailboxes using the IMAP protocol. This will only work if you also use IMAP to retrieve your emails, or if you do not erase your emails from the server with the POP protocol.
Before installing any packages on the Ubuntu server instance, it is recommended that you update the system.
sudo apt-get update sudo apt-get -y upgrade
First, you need to install the necessary prerequisites to run Imapsync.
sudo apt-get install \ git \ libauthen-ntlm-perl \ libclass-load-perl \ libcrypt-ssleay-perl \ libdata-uniqid-perl \ libdigest-hmac-perl \ libdist-checkconflicts-perl \ libfile-copy-recursive-perl \ libio-compress-perl \ libio-socket-inet6-perl \ libio-socket-ssl-perl \ libio-tee-perl \ libmail-imapclient-perl \ libmodule-scandeps-perl \ libnet-ssleay-perl \ libpar-packer-perl \ libreadonly-perl \ libsys-meminfo-perl \ libterm-readkey-perl \ libtest-fatal-perl \ libtest-mock-guard-perl \ libtest-pod-perl \ libtest-requires-perl \ libtest-simple-perl \ libunicode-string-perl \ liburi-perl \ make \ cpanminus \
It may be necessary to update the IMAP and JSON clients with
sudo cpanm Mail::IMAPClient sudo cpanm JSON::WebToken
Download the latest Imapsync code from its official Git repository.
git clone https://github.com/imapsync/imapsync.git
Navigate to the newly cloned repository and install it with the following commands on your system.
cd imapsync mkdir -p dist sudo make install
You can check the version of Imapsync using the following command.
The syntax for syncing emails from
server2 using only the required options is shown below.
imapsync --host1 server1.imap.tld --user1 firstname.lastname@example.org --password1 password1 --host2 server2.imap.tld --user2 email@example.com --password2 password2
To avoid entering plain text mailbox passwords, you can store them in files and use the
--passfile2 arguments to automatically load them from the files containing the passwords.
imapsync --host1 server1.imap.tld --user1 firstname.lastname@example.org --passfile2 /home/user/pass1 --host2 server2.imap.tld --user2 email@example.com --passfile2 /home/user/pass2
Several options are available to connect Imapsync to your mail server, including the type of connection used. By default, Imapsync will try to use SSL or TLS on port
993 to connect. The following are examples for the connection on the server to migrate (replace
2 for the second server).
--nossl1for an unencrypted connection via port
--ssl1for an encrypted connection with SSL via port
--tls1to connect with TLS via port
There are also options to define the type of authentication. This is specified with the
--authmech2 arguments, whose possible values are as follows (in upper case).
Folder synchronization can cause problems, especially if the default folders, (Inbox, Spam, Archive, Sent), are not named the same on both mail servers. Imapsync offers several options for this:
--automapto use automatic default folder recognition.
--nomixfoldersto avoid merging folders with a similar name according to case sensitivity.
--prefix1to remove a prefix from the folders to migrate.
--prefix2to add a prefix to migrated folders.
--skipemptyfoldersto not recreate empty folders on the destination server.
To speed up email migration, you can use the
--usecache argument to temporarily store the folders on the server where you installed Imapsync.
You can also delete messages from the first server with the
Finally, before starting your migration, do not hesitate to use the
--dry argument to check the result of a command, without executing it.