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形式で、
\PST\フォルダに保存されます(ネットワーク上の他のコンピュータからは\\ServerName\Temp\PST\のように見えます)。 - 最後に、フォルダから共有が削除され、スクリプトの作業が終了します。
スクリプトの実行中にいくつかのエラーが発生する可能性があります。以下は最も頻繁に発生するエラーとその解決方法です。
-
エラー #1
名前はメールボックスごとに一意である必要があります。メールボックスによって所有される新しいリクエストのデフォルト名がありません 'mailbox.local/folder/user'。Removeコマンドレットを使用して既存のリクエストをクリーンアップするか、一意の名前を指定してください。 + 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'という用語は、コマンドレット、関数、スクリプトファイル、または操作可能なプログラムの名前として認識されません。名前のスペルを確認するか、パスが含まれている場合は、パスが正しいことを確認して再試行してください。 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解決策
メールボックスのエクスポートに使用され、スクリプトの
-dirパラメータで設定された\\ServerName\Tempフォルダーは、読み取りおよび書き込みアクセス用に共有されている必要があります。以前に共有した場合は、書き込みアクセスのみになっていないか確認し、正しくアクセスを変更してください。
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 -V
Python 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ファイルからのメールアドレスを持つ新しいポータルユーザーが作成されます;- MS Exchangeからのメールメッセージを持つONLYOFFICE Mail Serverのメールボックスが作成され、
users.csvファイルにリストされたユーザーのためにONLYOFFICEのMailモジュールに接続されます; results-ok.txtファイルがImportフォルダーに保存され、users.csvファイルからのすべてのユーザーアカウントと、正常に作成されたパスワードのリストが含まれます;result-err.txtファイルがImportフォルダーに保存され、users.csvファイルからのインポートおよび作成時に問題があったすべてのユーザーアカウントのリストが含まれます;mailboxes.jsonファイルがJSON形式でImportフォルダーに保存され、新しく作成されたメールボックスにサードパーティのメールクライアントから接続するために必要な設定のリストが含まれます。
ImportExchangeData.pyフォルダーに移動し、次のコマンドを実行します:
bash ./lib/get-mailboxes.sh -j
mailboxes.jsonファイルは新しいメールボックスデータで上書きされます。
- スクリプトを実行すると、出力ファイルに必要なファイルとフォルダー、およびMS Exchangeからエクスポートされた入力データを含むフォルダーの両方のメイン作業ファイルとフォルダーが設定されます。
- 次のステップでスクリプトはユーザーを作成し、その後にメールボックスを作成します。
- その後、スクリプトはエクスポートされたファイルを
mbox形式に変換します。 - 完了すると、スクリプトは
ASC.Mail.PasswordFinderプログラムをインストールし、サードパーティのメールクライアントから新しく作成されたメールボックスに接続するために必要な設定のリストを含むmailboxes.jsonファイルを作成します。 - その後、
mailboxes.json自体が作成されます。 - 最後に、
mbox形式のファイルがIMAPを介してメールボックスにインポートされます。