本文介绍在Debian/Ubuntu/CentOS/RHEL系统下安装Imapsync的方法,并使用Imapsync将邮件帐户从一个服务器导入到另一个服务器。
背景
我使用Ispconfig提供Web托管服务,很长一段时间里,将现有的Cpanel客户迁移到Ispconfig真的很痛苦,特别是当你需要导入所有用户的邮箱和数据时,我不得不在两台服务器之间手动导入Dovecot邮箱文件夹。
这是一个枯燥乏味的手动过程,幸运的是,我确实发现了一个名为imapsync的工具,可以自动执行服务器之间的邮件同步过程,这可以在任何设置上工作,它不必是Cpanel-Ispconfig关系,只需要两台带有IMAP的邮件服务器。
使用Imapsync的条件:
在两台服务器上运行IMAP服务。
如果在共享主机上,请确保你知道托管Web内容的服务器的IP地址。
应该知道源电子邮件帐户和目标的用户名和密码。
安装imapsync
在使用Imapsync之前,你肯定需要先安装。
一、在Debian和Ubuntu上安装imapsync
1.首先安装所需的依赖包:
sudo apt-get install \
liburi-perl \
make \
libauthen-ntlm-perl \
libcrypt-ssleay-perl \
libdigest-hmac-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 \
libterm-readkey-perl \
libtest-pod-perl \
libtest-simple-perl \
libunicode-string-perl \
cpanminus
2.然后手动安装perl模块Data::Uniqid和Mail::IMAPClient
# cpanm Data::Uniqid Mail::IMAPClient
3.现在下载imapsync tarball并安装它
cd /usr/local/src
wget https://github.com/imapsync/imapsync/archive/imapsync-1.882.tar.gz
tar zxvf tar zxvf imapsync*
cd imapsync-imapsync*
做一个依赖测试,它也显示了基本的例子:
./imapsync
显示imapsync工作的实时测试:
./imapsync --testslive
现在安装命令(需要root权限再次):
# cp imapsync /usr/bin/
二、在CentOS/RHEL上安装imapsync
# yum -y install epel-release
# yum -y install imapsync
附:Imapsync使用语法
imapsync --host1 server1.example.com \
--user1 user@domain.com --password1 secret1 \
--host2 server2.example.com \
--user2 user@domain.com --password2 secret2
server1.example.com和server2.example.com可以替换为适当的IP地址。
使用Imapsync:迁移电子邮件帐户
使用Imapsync需要创建一个带有用户名和密码的文件,如下所示:
# vim $HOME/accounts.txt
添加带密码的邮箱帐户:
host1_1;user1_1;password1_1;host1_2;user1_2;password1_2;
host2_;user2_1;password2_1;host2_2;user2_2;password2_2;
host3_1;user3_1;password3_1;host3_2;user3_2;password3_2;
e.t.c
每行包含6列,列是-host1 -user1 -password1 -host2 -user2 -password2的参数值。
分隔符是字符分号“;”它可以通过下面的while循环中的任何字符更改IFS=';'来更改。
添加此脚本:
cat > $HOME/imapsync-batch.sh<
#!/bin/bash
echo "Looping on account credentials found in accounts.txt"
echo ""
{ while IFS=';' read h1 u1 p1 h2 u2 p2 fake
do
{ echo "$h1" | egrep "^#" ; } > /dev/null && continue # this skip commented lines in accounts.txt
echo "==== Starting imapsync from host1 $h1 user1 $u1 to host2 $h2 user2 $u2 ===="
imapsync --host1 "$h1" --user1 "$u1" --password1 "$p1" \
--host2 "$h2" --user2 "$u2" --password2 "$p2" \
"$@"
echo "==== Ended imapsync from host1 $h1 user1 $u1 to host2 $h2 user2 $u2 ===="
echo
done
} < $HOME/accounts.txt
EOF
你可以继续使用Imapsync脚本并等待IMAP Mail同步完成:
# bash $HOME/imapsync-batch.sh
这将同步从host1到host2的电子邮件,并为你提供有关传输的实时进度。
如果遇到网络连接问题或超时,只需再次运行脚本,它将从它断开的地方继续运行。
结语
上面我们已经介绍了使用Imapsync在两台服务器之间同步邮件帐户的重要要点,这可以应用于任何邮件服务器。
相关主题