将 MS Exchange 数据迁移到 ONLYOFFICE
简介
本文将展示如何将数据从 MS Exchange 转移到 ONLYOFFICE。目前支持以下数据类型的转移:
- 用户,
- 邮箱,
- 邮件信息。
在接下来的版本中,我们计划增加对以下数据的支持:
- 日历,
- 联系人,
- 任务。
从 MS Exchange 导出数据
启动必要的服务
首先,您需要确保 Microsoft Exchange Mailbox Replication(或 MSExchangeMailboxReplication)服务已启动。在 cmd 控制台中运行以下命令:
Get-Service -name MSExchangeMailboxReplication如果所需的服务正在运行,命令结果将如下所示:
Status Name DisplayName------ ---- -----------Running MSExchangeMailb... Microsoft Exchange Mailbox Replication或者,您可以进入 Windows 控制面板 - 管理工具 - 服务,找到 Microsoft Exchange Mailbox Replication 并启动它。
分配权限
为将要从 MS Exchange 导出邮箱的用户分配管理权限:
New-ManagementRoleAssignment –Role "Mailbox Import Export" –User <user name>其中 <user name> 是将要导出数据的用户名。如果您打算自己进行操作,则将此角色分配给您的帐户。
New-ManagementRoleAssignment –Role "Mailbox Import Export" –User John之后,以管理员权限重新启动 Exchange Web Services (EWS) 控制台。这可以通过在开始菜单中右键单击 EWS 图标并选择 以管理员身份运行 选项来完成。
运行脚本
现在下载将执行从 MS Exchange 正确导出数据所需操作的脚本。脚本可在这里下载。下载后,在 EWS 控制台中运行它:
.\ExportExchangeData.ps1 -dir "C:\Temp"其中 .\ExportExchangeData.ps1 是脚本的路径,-dir "C:\Temp" 是用于导出文件的文件夹路径。
-dir 参数中设置的文件夹将对所有人共享。这对于 New-MailboxExportRequest 命令的正确工作是必要的。脚本完成工作后,共享将从文件夹中移除。然后需要将包含导出文件的文件夹传输到安装有 ONLYOFFICE 的计算机上。
PST 文件中包含正确的数据,可以使用免费的 pst-viewer 工具来检查。- 首先,脚本创建上述
-dir参数设置的文件夹。如果参数缺失,将使用默认的C:\Temp文件夹。 - 创建后,文件夹将对所有人共享,以便
New-MailboxExportRequest命令能够正常工作。 - 然后脚本检查是否已创建用户列表文件,如果找到则删除,并使用以下命令将用户列表导出到其中:
Get-Mailbox | Select DisplayName, PrimarySmtpAddress, Alias | Export-Csv $usersListPath - 之后,创建邮箱文件夹(如果存在旧文件夹将被删除),并开始导出用户邮箱。根据用户数量、邮箱及邮件中的数据量,导出过程可能需要一些时间。邮箱和邮件将以 PST 格式保存到之前使用
-dir命令设置的目录的\PST\文件夹中(在网络上的其他计算机看来,它将显示为\\ServerName\Temp\PST\)。 - 最后,共享从文件夹中移除,脚本完成其工作。
在脚本工作期间可能会出现一些错误。以下是最常见的错误及其解决方法。
错误 #1
每个邮箱的名称必须是唯一的。没有可用的默认名称用于邮箱 'mailbox.local/folder/user' 拥有的新请求。请使用 Remove cmdlet 清理现有请求或指定唯一名称。 + CategoryInfo : InvalidArgument: (mailbox.local/folder/user:MailboxOrMailUserIdParameter)[New-MailboxExportRequest], NoAvailableDefaultNamePermanentException + FullyQualifiedErrorId : [Server=ServerName,RequestId=4a67e451-556c-4ba0-9ab9-9d2ce8a120ff,TimeStamp=11/7/2017 9:46:58 AM] [FailureCategory=Cmdlet-NoAvailableDefaultNamePermanentException] 7B0B3FF9, Microsoft.Exchange.Management.Migration.MailboxReplication.MailboxExportRequest.NewMailboxExportRequest + PSComputerName : servername.mailbox.local解决方案
运行以下命令:
Get-MailboxExportRequest | Remove-MailboxExportRequest错误 #2
New-MailboxExportRequest : 未能识别 'New-MailboxExportRequest' 作为 cmdlet、函数、脚本文件或可操作程序的名称。检查名称的拼写,或如果包含路径,请验证路径是否正确并重试。 At line:1 char:39 + ... oreach ($Mailbox in (Get-Mailbox)) { New-MailboxExportRequest -Mailbo ... + ~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : ObjectNotFound: (New-MailboxExportRequest:String) [], CommandNotFoundException + FullyQualifiedErrorId : CommandNotFoundException解决方案
重新启动 EWS 控制台,并确保以管理员权限运行。
错误 #3
\\ServerName\Temp\PST\user.pst 指定路径中的服务器或共享名称可能无效,或者文件可能被锁定。 + CategoryInfo : NotSpecified: (:) [New-MailboxExportRequest], RemotePermanentException + FullyQualifiedErrorId : [Server=ServerName,RequestId=40efdbf2-53bf-47e8-92b8-f8fa8a8f15db,TimeStamp=11/7/2017 9:55:48 AM] [FailureCategory=Cmdlet-RemotePermanentException] 94719DAF, Microsoft.Exchange.Management.Migration.MailboxReplication.MailboxExportRequest.NewMailboxExportRequest + PSComputerName : servername.mailbox.local解决方案
用于邮箱导出的
\\ServerName\Temp文件夹(使用脚本-dir参数设置的文件夹)必须共享以进行读取和写入访问。如果您之前已共享,请检查它是否仅具有写入访问权限,并正确更改访问权限。
将 MS Exchange 数据导入到 ONLYOFFICE
安装 ONLYOFFICE Workspace 企业版并配置邮件服务器
安装 ONLYOFFICE Workspace 企业版 的 Docker 版本。这可以通过安装 ONLYOFFICE Workspace 企业版 使用脚本 并选择 Docker 安装选项来完成。之后,根据此处的说明设置邮件服务器。
users.csv 文件(在上一步中获得),将所有旧 MS Exchange 域的条目替换为新的。这可以通过以下命令完成:
sed -i 's/exchange-domain.com/new-domain.com/g' users.csv
其中 exchange-domain.com 是与 MS Exchange 使用的旧域名,new-domain.com 是您现在要使用的新域名。
下载脚本并安装/更新依赖项
现在您需要下载并解压缩将执行数据导入过程的脚本。这可以使用以下命令完成:
wget -O "ImportExchangeData.tar" "https://help.onlyoffice.co/products/files/httphandlers/filehandler.ashx?action=view&fileid=5549294&version=0&doc=TWVPQks1aUo2MEprc0tkbUF6K2Y4Um1OSi9tTkd6V0lyTHFocG0xZHE0QT0_IjU1NDkyOTQi0" && tar -xvf ImportExchangeData.tar && cd ./Import该命令将下载并解压文件,创建以下文件夹结构:
Import|-lib
|---create_users.py
|---mbox2imap.py
|---mapping.json
|---pst2mbox.sh
|---get-mailboxes.sh
|---install-passfinder.sh
|---ASC.Mail.PasswordFinder.tar
|-ImportExchangeData.py
|-requirements.txt您需要安装 Python v2.7。它通常默认安装在各种 Linux 发行版中,但如果缺失,您需要自行安装。这是 Debian 系列发行版的安装方法:
# apt install python# python -VPython 2.7.12安装 pip(包管理器),这也是脚本正常工作的必要条件:
# apt install python-pip# pip -V
pip 9.0.1 from /usr/local/lib/python2.7/dist-packages (python 2.7)并安装其他所需的包:
pip install -r requirements.txt运行脚本
现在您可以运行脚本,指定必要的参数:
./ImportExchangeData.py -d "<portal domain>" -u "<portal administrator email>" -pw "<portal administrator password>" -f <path to the folder with the exported data>-s "https" 参数。用您自己的门户数据替换括号中的参数并运行脚本:
./ImportExchangeData.py -d myportal.com -u "my.email.address@gmail.com" -pw "123456" -f /root/Temp/等待脚本完成工作。根据用户数量及其数据量,可能需要一些时间。
脚本工作结果
当脚本完成其预期工作时,结果将如下:
- 将根据
users.csv文件中的电子邮件地址创建新的门户用户; - 将在 ONLYOFFICE 邮件服务器上创建邮箱,其中将包含来自 MS Exchange 的邮件,并将在 ONLYOFFICE 邮件 模块中为
users.csv文件中列出的用户连接; results-ok.txt文件将保存到Import文件夹中,其中包含从users.csv文件中成功创建的所有用户帐户及其密码的列表;result-err.txt文件将保存到Import文件夹中,其中包含从users.csv文件中导入和创建时出现问题的所有用户帐户的列表;mailboxes.json文件将以JSON格式保存到Import文件夹中,其中包含从第三方邮件客户端连接到新创建邮箱所需的设置列表。
ImportExchangeData.py 文件夹并运行命令:
bash ./lib/get-mailboxes.sh -jmailboxes.json 文件将被新邮箱数据覆盖。
- 运行时,脚本设置主要工作文件和文件夹:包括输出文件所需的文件和文件夹以及包含输入数据的文件夹(从 MS Exchange 导出)。
- 接下来,脚本创建用户及其邮箱。
- 然后脚本将导出的文件转换为
mbox格式。 - 完成后,脚本安装
ASC.Mail.PasswordFinder程序,该程序将协助创建mailboxes.json文件,其中包含从第三方邮件客户端连接到新创建邮箱所需的设置列表。 - 之后,创建
mailboxes.json文件。 - 最后,通过 IMAP 将
mbox格式文件导入到邮箱中。