云网牛站
所在位置:首页 > Linux云服务器 > 安装和使用Imapsync将邮件帐户从一个服务器导入到另一个服务器

安装和使用Imapsync将邮件帐户从一个服务器导入到另一个服务器

2019-03-04 16:02:47作者:叶云稿源:云网牛站

本文介绍在Debian/Ubuntu/CentOS/RHEL系统下安装Imapsync的方法,并使用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在两台服务器之间同步邮件帐户的重要要点,这可以应用于任何邮件服务器。

 

相关主题

在Ubuntu 18.04系统上安装phpList电子邮件软件的方法

精选文章
热门文章