本文介绍在Debian/Ubuntu/CentOS/RHEL系统下安装Imapsync的方法,并使用Imapsync将邮件帐户从一个服务器导入到另一个服务器。
背景 我使用Ispconfig提供Web托管服务,很长一段时间里,将现有的Cpanel客户迁移到Ispconfig真的很痛苦,特别是当你需要导入所有用户的邮箱和数据时,我不得不在两台服务器之间手动导入Dovecot邮箱文件夹。 这是一个枯燥乏味的手动过程,幸运的是,我确实发现了一个名为imapsync的工具,可以自动执行服务器之间的邮件同步过程,这可以在任何设置上工作,它不必是Cpanel-Ispconfig关系,只需要两台带有IMAP的邮件服务器。 使用Imapsync的条件: 有一个FQDN,在服务器A和B上两者都必须相同,就我而言,在Ispconfig(参考:在CentOS 7系统上安装及配置ISPConfig DNS的方法)和Cpanel(参考:在CentOS 7系统上配置Cpanel Firewalld的方法)上。 在两台服务器上运行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<<EOF #!/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在两台服务器之间同步邮件帐户的重要要点,这可以应用于任何邮件服务器。
相关主题 |