2020.11.11

大森 拓也

GmailからMicrosoft Exchangeに移行した話

WRITER

大森 拓也

株式会社PLAN-B システム開発本部 PMOチーム

2018年8月入社。全社的なIT環境の改善や、SEARCH WRITEのインフラや運用、品質保証を担当。最近は主にGSuiteからMicrosoft365への移行や社内ネットワーク改善を推進。B級ホラー映画探しをするのが好き。

目次
    1. 切り替えを極力意識させない
    2. Exchangeのマイグレーションツールを確認
      1. API連携
      2. 同期
      3. ルーティング機能
    3. マイグレーションツールの実行環境を作成する
      1. GSuite – ルーティング用ドメインを準備する
      2. GCP – マイグレーション用のプロジェクトを作成する
      3. サービスアカウントの作成
      4. APIの使用を有効にする
      5. GSuite – APIクライアントを登録する
      6. APIスコープ
    4. 移行を始める前に考えないといけないこと
    5. マイグレーションツールを実行する
    6. マイグレーション中の注意点
    7. まとめ

社内グループウェアをGSuiteからMicrosoft 365に切り替えました。 本稿ではメール機能、つまりGmailからExchangeへの切り替えでどのようなことを行ったかをご紹介します。

切り替えを極力意識させない

アプリケーションの切り替えにあたり、まず検討したのはデータ移行についてでした。 メールの仕組み上、データのバックアップは従業員に行ってもらうことはできます。 しかし全従業員が移行をきちんと行えるとも限りません。もしかするとデータ移行時にデータ欠損を起こすかもしれません。 アプリケーションの切り替えは仕方ありませんが、データ部分の変化をユーザーに意識させないことで業務負担を抑えられると思います。

移行要件として以下の整理をしました。

  • GmailにあったメールはExchangeにも存在してほしい
  • 従業員にメール移行の作業負担をかけたくない
  • 大容量のメールデータを転送したい
  • 移行期間中にメールデータの混在を起こしたくない
  • Gmailで移動したメールがExchangeでは受信トレイにある

幸いにもExchangeにGSuite → Microsoft 365のマイグレーション機能がありました。 公式ドキュメントを参考に移行を行います。

Exchangeのマイグレーションツールを確認

Exchangeのマイグレーションツールについてまとめます。

API連携

このツールではGCPのGmail API を利用しメールデータの操作を行っています。 POPやIMAPでメールを取得して移動…みたいな事は不要です。

同期

Gmail → Exchangeの一方向で同期する機能があります。同期中はGmailに届いたメールがExchangeに差分移行されるのはもちろん、Gmail側で消したり移動したりしてもExchange側で状態が反映されます。よって何度も差分同期を行う必要がありません。

ルーティング機能

メールを切り替えるには、plan-b.co.jpのMXレコードを書き換える必要があります。 移行に同ドメインを使用すると、DNSキャッシュが更新される間移行が失敗する可能性があります。 そこでルーティング機能と言うものが用意されています。別途サブドメインを用意しそれを経由して同期処理を行うことができます。

マイグレーションツールの実行環境を作成する

マイグレーションツールを利用できるようにするにはいくつかの準備が必要です。

GSuite – ルーティング用ドメインを準備する

ルーティング用のドメインを用意し、GSuiteに登録します。 登録が正しく出来ると、ステータスがアクティブになります。

GSuite-ルーティング用ドメインを準備

GCP – マイグレーション用のプロジェクトを作成する

https://console.cloud.google.com/home/dashboardにアクセスして新しいプロジェクトを作成します。 プロジェクト名は「gmail-migration」などの名前をつけます。

GCP-マイグレーション用のプロジェクトを作成する

サービスアカウントの作成

IAM & Admin > service アカウント に移動し、[サービスアカウントの作成] をクリックし、[サービスアカウント名] で、サービスアカウントに「Gmail オンボード」などの名前を付けます。 [作成] をクリックします。

サービスアカウントの作成

以下の名前で作成します。

秘密鍵をJSON形式で保存します。 また、一意のIDを控えておきます。
サービスアカウントの作成2

APIの使用を有効にする

APIの使用を有効にするAPIの使用を有効にする 同様にGoogle Calendar API、Contacts APIも有効にします。

GSuite – APIクライアントを登録する

クライアントID(=先ほど控えた一意のID)とAPIスコープを入力しAPIクライアントを登録します。GSuite-APIクライアントを登録する

APIスコープ

移行を始める前に考えないといけないこと

移行を実施する前に気をつけないといけないことがあります。

  • Exchangeのメールボックスの容量は50GB
  • GmailのタグはExchangeではフォルダーになる
  • Gmailのタグ付きメールはタグの分だけフォルダーにコピーされる

例えばGSuiteの管理画面でメール使用量が30GBだったとしても、タグが大量に付けられていたらExchangeでは50GBを超過してしまうケースが発生してしまいます。 50GBを超過するとExchangeから送受信が出来なくなるので、事前にメール容量を減らすように従業員へアナウンスする必要があります。
Gmailの使用量は、https://one.google.com/u/0/storageより各自確認ができます。

マイグレーションツールを実行する

マイグレーションツールの実行環境が構築出来たらマイグレーションを実施します。マイグレーションツールを実行する1GSuiteの移行を選択し次へマイグレーションツールを実行する移行対象のユーザーのCSVをアップロードします。マイグレーションツールを実行する3CSVは、ヘッダにEmailAddressを用意し移行対象のユーザー名を記載します。CSV移行エンドポイントに値が入っていることを確認して次へマイグレーションツールを実行する4ターゲットの配信ドメインを入力します。 ルーティング用に用意したドメインを入力します。マイグレーションツールを実行する5移行バッチの開始・終了条件を設定します。 今回は開始・終了の両方を手動で設定します。 これで任意のタイミングで開始ができ、手動で停止するまで随時移行が行われます。マイグレーションツールを実行する6新規作成をすると管理画面に戻ります。 先程作成したプロファイルが表示されているので、▶で移行を開始します。マイグレーションツールを実行する7しばらく待つとGmailのデータがExchangeにコピーされます。 移行するデータ量にもよりますが、数十分から数日かかります。特に初回は全データ移行の為時間がかかります。

マイグレーション中の注意点

マイグレーションツールはメールデータを同期するので、マイグレーションツールが実行中は以下の挙動になります。

  • 移行中にGmailで受信したメールはExchangeにコピーされる(ただし即時ではなく数時間の遅延がある)
  • Gmailでメールを移動(削除など)するとExchangeでも反映する
  • Exchangeからメールを削除してもGmailに残っていたら同期でデータが復元される

まとめ

Microsoftの純正マイグレーションツールでの移行手順を紹介しました。 感想をまとめます。

良かった点

  • 純正ツールなので安心感がある
  • DNS切り替え中にも同期が取れたのでメールの取りこぼしがなかった
  • プログラムや、ややこしい設定ファイルを用意せず移行が実施できた
  • Googleグループの移行にはGASとPowerShellが必要でしたが今回は割愛します
  • 移行に伴うツール等購入が必要なく、無料で行えた

悪かった点

  • 移行の進捗率がユーザー単位で完了/未完了しか分からず、そのユーザーのどこまで移行が完了しているのかが分からない
  • エラーメッセージで検索してもドキュメントやナレッジが存在しなかった
    • エラーのスタックトレースから起きている問題を推測してトライアンドエラーで解決しなければならなかった
    • 例えば、Exchangeのメール容量上限を超過したユーザーの同期エラー

Microsoft365は機能と価格の総合評価から導入を検討されている企業も多いと思います。 ベンダーに依頼せずに情シスで移行を完遂できたのはいい経験になりました。