除了人们期待已久的功能(如分层通讯簿)和对Ubuntu 18.10 LTS的官方支持之外
,Zimbra 8.8.12的
发布还为我们带来了即将取消对从其他邮件系统迁移到Zimbra Collaboration Suite所需的许多实用程序的支持的消息。 特别是,对Domino的ZCS迁移向导的支持已完全停止,并且Exchange的ZCS迁移向导现在将仅支持从Outlook导入PST文件。 为了实现全面的迁移,Zimbra Collaboration Suite的开发人员提供了使用付费在线服务的功能,但是出于安全原因,并不是每个公司都准备好将其邮箱数据提供给第三方,并且并非每个公司都能负担与迁移到Zimbra相关的额外费用。 特别是对于此类用户,有imapsync程序,该程序能够提供从任何邮件系统到Zimbra的可靠增量迁移。

Imapsync是一个免费的免费实用程序,可在任何官方支持的Zimbra Linux发行版的存储库中使用。 该程序的目的是在不同的邮件服务器之间传输电子邮件,并且可以完美应对。 由于设置的灵活性,可以以全自动模式逐步传输邮件。 让我们看看如何使用imapsync从Lotus Domino和MS Exchange迁移到Zimbra Collaboration Suite。
从MS Exchange迁移到Zimbra
为了使电子邮件迁移成功,您需要完成一系列准备工作。 首先,我们需要使用相同的密码在Zimbra服务器上创建与MS Exchange服务器上相同的用户。 在执行此任务时,使用AD自动配置Zimbra用户非常有用。 我们以前的一篇文章中
介绍了这种自动调整的过程。
从AD或Exchange迁移所有帐户之后,您需要使用Zimbra在服务器上安装imapsync软件包。 如果将Ubuntu用作Zimbra的操作系统,则可以使用命令
sudo apt-get install imapsync -y安装程序 ,在CentOS和RHEL中,将使用命令
sudo yum install imapsync -y执行
安装 。
软件包和所有依赖项的安装完成后,让我们继续配置Exchange服务器。 在它上面,我们将需要启用IMAP4服务。 这是通过运行
services.msc文件完成的,之后您需要转到“工具”>“服务”->“ IMAP4 Microsoft Exchange”->“启动”。 此后,您将需要授予管理员访问用户邮箱的权限,以避免在迁移过程中使用用户密码,还需要禁用或配置速度限制策略,以免它们成为迁移的障碍。 现在,您可以开始在服务器之间传输邮件了。
在我们的基础结构中,MS Exchange将位于主机
exchange.company.ru上 ,而Zimbra将位于主机
zimbra.company.ru上 。 使用命令行将一一转移用户,在该命令行中,我们将使用迁移所需的许多参数来运行imapsync实用程序。 首先,应该注意的是,在Zimbra中,就像在MS Exchange中一样,管理员帐户可以访问所有用户邮箱的内容,这意味着要迁移到新的邮件服务器,系统管理员无需知道普通用户帐户的密码。 这就是为什么将使用以下格式的命令将每个用户从MS Exchange迁移到Zimbra的原因:
imapsync --host1 exchange.company.ru --user1 "xxxxx" --authuser1 "yyyyy" --password1 "zzzzz" --nosslcheck --host2 zimbra.company.ru --user2 "XXXXX" --authuser1 "YYYYY" --password2 "ZZZZZ"
在此命令中,我们指定
imapsync将从其获取帐户数据的源主机(
--host1 ),以及将写入此数据的主机(
--host2 )。 我们还在第一台主机上指定用户名(
--user1 ),在第二台主机上指定相应的用户名(
--user2 )。 为了访问其数据,我们指定第一个主机的管理员帐户名(
--authuser1 )和管理员密码(
--password1 ),并且为了记录传输的数据,请指定管理员帐户名(
--authuser2 )和密码第二个主机的管理员(
--password2 )。
在理想情况下,这样的命令足以在使用MS Exchange和Zimbra的服务器之间传输用户数据,但是,经常发生的是,解决方案之间的差异会自行纠正,因此,从MS Exchange进行数据的简单传输将导致Zimbra邮箱的混乱。 在这种情况下,绊脚石是邮箱中文件夹的不同名称。 为了避免在数据传输过程中造成混乱,有必要使我们的团队采用以下形式:
imapsync --subscribe_all --maxmessagespersecond 4 --addheader --f1f2 "Inbox=INBOX" \ --f1f2 "Sent Items=Sent" --f1f2 "Sent items=Sent" --exclude "^Journal|^Tasks|^Trash|Contacts|Calendar|RSS Feeds" \ --useheader "Message-ID" --buffersize 8192000 --nosyncacls --allowsizemismatch --usecache --syncinternaldates --skipsize --nofoldersizes \ --tls1 --port1 143 --user1 "xxxxxxxxxx" --authuser1 "besadmin" --password1 "XXXXXXX" \ --host2 'xxxxxxx' --user2 "xxxxxx" --authuser2 "XXXXXX" --password2 "XXXX" --tls2 --port2 7143 \ --regextrans2 "s/Inbox1/INBOX/i" --regextrans2 "s/Sent Items/Sent/i" --regextrans2 "s/sent-mail/Sent/i" --regextrans2 "s/Deleted Items/Trash/i" --regextrans2 "s/Deleted Messages/Trash/" \ --delete2duplicates --timeout 600 --pidfile "impasync.local.pid" --logfile "imapsync.log" --sep1 "/" --errorsmax "100"
请注意,这不是一个通用脚本,无法在任何基础架构中正常工作。 其中的许多内容可能取决于基础架构的各种功能。 因此,在开始全面迁移之前,一定要测试多个非关键业务帐户在系统之间的数据传输。
让启动imapsync的大量参数不会吓到您。 精确地需要它们中的大多数,以便从邮箱传输文件夹时不会造成混乱,并且来自MS Exchange的所有元素都将传输到Zimbra。 例如,--
subscribe_all参数允许imapsync获取您帐户中的所有文件夹,以便您以后可以使用它们。 使用
--f1f2选项 ,
您可以在同步期间更改文件夹的名称。 即,例如在同步时。 “已发送邮件”文件夹将其名称更改为“已发送”,从而使您的内容完全适合Zimbra Collaboration Suite的文件夹结构。
--regextrans2参数还允许您更改文件夹名称,并且基于Perl编程语言的regex机制,因此熟悉该语言的人将可以轻松学习此参数。
为了解释
--addheader和
--useheader选项的作用 ,有必要深入研究imapsync中字母的同步是如何发生的。 事实是,为了同步imapsync,有必要在两台服务器上标识字母以决定是否同步它们。 为了验证它们,此实用程序使用诸如“草稿”之类的电子邮件中所没有的参数,例如“ Message-Id:”和“ Received:”(标识号和接收时间)。 为了正常同步它们,我们需要--addheader命令。 它允许您向它们添加一个标识号,以便在同步期间以某种方式标识和比较这些字母。 使用--useheader参数可以在同步期间仅使用两个参数之一来比较字母。
编写了使我们能够将帐户从MS Exchange完美转移到Zimbra的完美脚本之后,仍然存在一个重大问题,该问题与我们仍然必须一次在服务器之间转移用户这一事实有关。 这不是很理想,特别是在那些有很多员工并且邮箱数以千计的公司中。 但是,可以通过创建帐户列表,然后编写一个小的脚本来根据帐户名称自动传输邮件来极大地优化此过程。 为此,我们将创建
imap_users文件,并以以下形式将所有必要的数据添加到其中:
domains=( domain1\ domain2) users=( user1@domain1\ user2@domain1\ user3@domain1\ user1@domain2\ user2@domain2\ user3@domain2)
之后,我们将编写脚本本身。 我们得到这样的东西:
. imap_users src_srv = exchange.company.ru dest_srv = zimbra.company.ru for ((i = 0; i < ${#users[@]}; i++ )) do /usr/bin/imapsync --subscribe_all --maxmessagespersecond 4 --addheader --f1f2 "Inbox=INBOX" \ --f1f2 "Sent Items=Sent" --f1f2 "Sent items=Sent" --exclude "^Journal|^Tasks|^Trash|Contacts|Calendar|RSS Feeds" \ --useheader "Message-ID" --buffersize 8192000 --nosyncacls --allowsizemismatch --usecache --syncinternaldates --skipsize --nofoldersizes \ --tls1 --port1 143 --host1 $src_srv --user1 ${users[$i]} --authuser1 "besadmin" --password1 "XXXXXXX" --nosslcheck \ --host2 $dest_srv --user2 ${users[$i]} --authuser2 "XXXXXX" --password2 "XXXX" --tls2 --port2 7143 \ --regextrans2 "s/Inbox1/INBOX/i" --regextrans2 "s/Sent Items/Sent/i" --regextrans2 "s/sent-mail/Sent/i" --regextrans2 "s/Deleted Items/Trash/i" --regextrans2 "s/Deleted Messages/Trash/" \ --delete2duplicates --timeout 600 --pidfile "impasync.local.pid" --logfile "imapsync.log" --sep1 "/" --errorsmax "100" done
由于数据传输是增量传输,因此您可以首先在服务器之间传输大量数据,然后在短暂的技术突破内传输自上次同步以来累积的少量数据,然后将所有传入的邮件传输到Zimbra并使其成为主要邮件系统。 我们提醒您,在迁移到新的邮政系统之前,您需要通知员工即将进行的过渡,与他们进行培训,并准备备忘录,以了解其在Zimbra中通常位置的位置。 因此,迁移将更加顺利,并且不会给业务造成问题。
从Lotus / Domino迁移到Zimbra
在许多方面,使用imapsync从IBM邮件系统进行的迁移过程重复了从MS Exchange和任何其他邮件系统进行的迁移过程。 但是,在直接迁移过程中,许多管理员在通过IMAP断开连接并因此终止同步时遇到错误。 同时,日志中没有错误消息出现。 如果在从Lotus / Domino迁移期间遇到此问题,那么以下操作将有助于解决此问题:
- 以管理员权限启动Lotus Notes,然后转到通讯簿。
- 在“通讯簿”设置中,将默认邮件格式更改为“首选MIME”
- 在以管理员特权运行的同一Lotus Notes中,将用户数据库格式更改为Mail(R6),该格式是从服务器而不是从邮件客户端获取的
- 使用tell router quit命令从Domino管理控制台中关闭Lotus Domino Router。
- 使用“ load compact userdb.nsf”命令从Domino管理控制台打包用户数据库。
- 通过从Domino控制台(而不是从管理员控制台)运行fixup userdb.nsf命令来检查数据库中的错误。
- 在Domino管理控制台中,运行命令“ convert -e userdb.nsf”以准备数据库以进行imap传输
- 在Domino管理控制台中,运行命令“ convert -h userdb.nsf”,将imap头添加到所有消息中。
完成所有这些步骤之后,使用imapsync将邮件从Lotus / Domino传输到Zimbra的过程应该没有问题。
除了用于迁移的实用程序外,台式机和移动设备的Zimbra客户端也没有支持。 此外,HTML Web客户端也从支持中删除,该客户端用于确保与旧版浏览器和低功耗设备的兼容性。 由于Zimbra支持几乎所有开放标准和协议,因此所有这些都可以由第三方客户轻松替换。
回想一下,可以使用免费的Zextras迁移工具完成Zimbra服务器之间的迁移,您可以从
Zextras官方网站上下载该
工具 。
有关Zextras Suite的所有问题,您可以通过电子邮件katerina@zextras.com与Zextras Katerina Triandafilidi的代表联系。