あけましておめでとうございます。2022年もよろしくお願いします。
古に作ったメールサーバーをそろそろ無くそうと思って何年経ったか忘れたけど、正月に酒のんだ勢いでMS365にお引越しした記録
移行元
古のメールサーバー にある通り、職人の手作りメールサーバーが移行元メールサーバーです。 CentOS6上で以下の組み合わせで動いていました。
- Postfix
- milter
- Dovecot
- Postfix Admin
- Roundcube
移行先
流石に手作りは時代ではないな…と思ったりしたのでクラウド系をメインに移行条件は以下
- 現状のサーバー維持費用と同等以下
- オンラインストレージあるとうれしい
とは言ってもMSかGoogleくらいしか選択肢は無いので、実質2択…
年末のオンライン飲みでMSだとAzureADも使えるとか話を聞いたのと、現状Googlのサービス使いまくってるのでMS365に決定しました。
契約方法なんかはMSの資料とかに細かく記載があるので飛ばしますが、移行前にアカウント作成までは完了している必要があります。
移行方法
正直、テストメールとゴミメールしか無いメールサーバーなのでメール全消しでもOKなのですが、せっかくなので、メールデータ移行を実施してみることに。
軽くググるとimapsync で簡単!みたいな話があったので試してみました。
前提
名前通り、IMAPで同期するツールなので、imapsyncが動作している環境から移行元メールサーバーとMS365にIMAP接続できる必要があります。
imapsync
環境準備
手持ちのサーバーにインストールするのも面倒くさかったので、AWSのEC2インスタンス(t2.micro/Amazon Linux 2)を雑に作って使います。
imapsync インストール
手順はここ に記載ありました。
sudo yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
sudo yum install imapsync
データ移行
以下のコマンドでユーザー単位でデータを同期させることができます。
imapsync --host1 source_ip --port1 source_ip --ssl1 --authmech1 LOGIN --user1 source_user_id --password1 source_user_pw --host2 outlook.office365.com --port2 993 --ssl2 --authmech2 LOGIN --user2 MS365_user_id --password2 MS365_user_pw
コマンドの引数の意味は以下
引数 | 内容 |
---|---|
–host1 | 移行元IMAPサーバーIPorホスト名 |
–port1 | 移行元IMAPサーバーポート番号 |
–ssl1 | SSL利用有無 |
–authmech1 | LOGIN,PLAIN,CRAM-MD5から選択 |
–user1 | 移行元IMAPサーバーログインID |
–password1 | 移行元IMAPサーバーログインパスワード。パスワードは環境変数やファイルでも設定可能 |
–host2 | 移行先IMAPサーバーIPorホスト名(今回はMS365なのでoutlook.office365.comで固定値となる) |
–port2 | 移行元IMAPサーバーポート番号(今回はMS365なので993で固定値となる) |
–ssl2 | SSL利用有無(今回はry) |
–authmech2 | LOGIN(今回はry) |
–user2 | MS365のログインユーザー名 |
–password2 | “MS365のログインユーザーパスワード |
–dry | これを設定するとドライランとなり、動かさずにテストできる |
コマンドを実行した時のカレントディレクトリにLOG_imapsyncディレクトリが作られ、ログが保存されます。
移行結果
t2.microで5万通近いメールを3時間くらいで移行できました。
ログ
Transfer started on : Sat Jan 1 06:45:16 2022
Transfer ended on : Sat Jan 1 09:46:53 2022
Transfer time : 10897.9 sec
Folders synced : 12/12 synced
Messages transferred : 48933
Messages skipped : 0
Messages found duplicate on host1 : 0
Messages found duplicate on host2 : 0
Messages void (noheader) on host1 : 0
Messages void (noheader) on host2 : 0
Messages deleted on host1 : 0
Messages deleted on host2 : 0
Total bytes transferred : 1098829930 (1.023 GiB)
Total bytes duplicate host1 : 0 (0.000 KiB)
Total bytes duplicate host2 : 0 (0.000 KiB)
Total bytes skipped : 0 (0.000 KiB)
Total bytes error : 0 (0.000 KiB)
Message rate : 4.5 messages/s
Average bandwidth rate : 98.5 KiB/s
Memory consumption : 434.3 MiB
Biggest message : 666278 bytes (650.662 KiB)
Memory/biggest message ratio : 683.4
Start difference host2 - host1 : -48932 messages, -1098680047 bytes (-1.023 GiB)
Final difference host2 - host1 : 0 messages, 544733636 bytes (519.498 MiB)
Detected 0 errors
ちなみに、再実行すると差分で同期されます。
データ移行完了後にMXレコードなどをMS365の指示通りに修正して移行完了です。
まとめ
- データ移行、思ってたよりも簡単でした
- ユーザー単位なので、実サーバーで実施する場合は一捻りいる感じ
- MS365のサービスを使えるようにしていかないと…
- 酔っぱらいでも移行できる!そう、imapsyncならね