この記事は公開から3年以上経過しています。
exceedsystem.com
ドメイン用として10年以上利用していたWebArena SuiteX
からさくらのレンタルサーバー
に移行するにあたり、既存のIMAPメールサーバーの全アカウントデータを丸々移行したので、その作業手順メモ。
メールサーバーの移行だけがネックで長年移行を見送っていましたが、こんなに楽に済んでしまうとは…imapsync
便利すぎます。
作業手順
以下の手順は、openSUSE(LEAP15.3)で説明していますが、Debian10でもパッケージマネージャの違い以外は同様でした。
予め移行先のIMAPメールサーバーにメールアカウントを作成しておく必要があります。
1. IMAP転送ツール(imapsync)の導入
-
ターミナルを開き、任意の作業フォルダで以下のコマンドを実行して
imapsync
ソースをクローンする。cd /var/tmp git clone https://github.com/imapsync/imapsync.git
-
以下のコマンドで依存関係パッケージの調査を行う(環境変数設定は登録されていない場合)。
export PERL_CPANM_OPT="--local-lib=~/perl5" export PATH=$HOME/perl5/bin:$PATH; export PERL5LIB=$HOME/perl5/lib/perl5:$PERL5LIB; cd imapsync sh INSTALL.d/prerequisites_imapsync
依存関係が不足している場合は、以下のようなメッセージが表示される。
Here is a cpanm command to install missing Perl modules: cpanm App::cpanminus Authen::NTLM CGI Crypt::OpenSSL::RSA Data::Uniqid Dist::CheckConflicts Encode::IMAPUTF7 File::Copy::Recursive File::Tail IO::Socket::INET6 IO::Tee JSON JSON::WebToken JSON::WebToken::Crypt::RSA Mail::IMAPClient Module::Implementation Module::Runtime Module::ScanDeps Package::Stash Package::Stash::XS PAR::Packer Readonly Regexp::Common Sys::MemInfo Test::Fatal Test::Mock::Guard Test::MockObject Test::Requires Test::Deep Unicode::String Failure: cpanm is not here. You have to install the "cpanm" command.
-
前項のメッセージに従い、不足している依存パッケージ群をインストールする。
Perlライブラリ管理ツール
cpanm
がインストールされていないのでインストール(インストール済ならスキップ)。sudo zypper in cpanm
前項2で表示されたメッセージの
cpanm …
の部分をコピー&ペーストして実行する。cpanm App::cpanminus Authen::NTLM CGI Crypt::OpenSSL::RSA Data::Uniqid Dist::CheckConflicts Encode::IMAPUTF7 File::Copy::Recursive File::Tail IO::Socket::INET6 IO::Tee JSON JSON::WebToken JSON::WebToken::Crypt::RSA Mail::IMAPClient Module::Implementation Module::Runtime Module::ScanDeps Package::Stash Package::Stash::XS PAR::Packer Readonly Regexp::Common Sys::MemInfo Test::Fatal Test::Mock::Guard Test::MockObject Test::Requires Test::Deep Unicode::String
-
Perlモジュールのインストールが完了したら
sh prerequisites_imapsync
を実行して全ての結果がOKであることを確認する。All needed modules are already installed Ok: Found cpanm cpanm (App::cpanminus) version 1.7044 (/usr/bin/cpanm)
-
以下のコマンドでPerlモジュールをビルドする。
make
-
Perlモジュールのビルドが完了したら以下のコマンドで動作テストを行う。
./imapsync --testslive
テストが完了すると以下のようなレポートが表示される。
Time spent on sizing: 30.4 seconds ++++ Statistics Transfer started on : 木曜日 28 10月 2021-10-28 20:49:13 +0900 JST Transfer ended on : 木曜日 28 10月 2021-10-28 20:51:20 +0900 JST Transfer time : 127.1 sec Folders synced : 24/24 synced Messages transferred : 0 Messages skipped : 341 Messages found duplicate on host1 : 0 Messages found duplicate on host2 : 0 Messages found crossduplicate on host2 : 0 Messages void (noheader) on host1 : 0 Messages void (noheader) on host2 : 0 Messages found in host1 not in host2 : 0 messages Messages found in host2 not in host1 : 0 messages Messages deleted on host1 : 0 Messages deleted on host2 : 0 Total bytes transferred : 0 (0.000 KiB) Total bytes skipped : 59013160 (56.279 MiB) Message rate : 0.0 messages/s Average bandwidth rate : 0.0 KiB/s Reconnections to host1 : 0 Reconnections to host2 : 0 Memory consumption at the end : 257.6 MiB (started with 224.5 MiB) Load end is : 0.53 0.49 0.39 1/1087 on 8 cores CPU time and %cpu : 1.13 sec 0.9 %cpu 0.1 %allcpus Biggest message transferred : 0 bytes (0.000 KiB) Memory/biggest message ratio : NA Start difference host2 - host1 : 0 messages, 0 bytes (0.000 KiB) Final difference host2 - host1 : 0 messages, 0 bytes (0.000 KiB) The sync looks good, all 275 identified messages in host1 are on host2. There is no unidentified message on host1. The sync is strict, all 275 identified messages in host2 are on host1. Detected 0 errors Check if a new imapsync release is available by adding --releasecheck Homepage: https://imapsync.lamiral.info/ # Entering tests_live_result() Live tests ended successfully # Leaving tests_live_result() Exiting with return value 0 (EX_OK: successful termination) 0/50 nb_errors/max_errors PID 20908 Removing pidfile /tmp/imapsync.pid Log file is LOG_imapsync/2021_10_28_20_49_13_249_test1_test2.txt ( to change it, use --logfile filepath ; or use --nolog to turn off logging )
2. メールデータの移行
-
各種パラメーターを指定して
imapsync
コマンドを実行する。利用可能なパラメーターはお使いのメールサーバー環境によって異なります。詳細はドキュメントを参照してください。
./imapsync \ --host1 移行元サーバーIP --port1 993 --ssl1 --authmech1 LOGIN \ --user1 移行元メールアカウント名 --password1 移行元メールパスワード \ --host2 移行先サーバーIP --port2 993 --ssl2 --authmech2 LOGIN \ --user2 移行先メールアカウント名 --password2 移行先メールパスワード
-
移行先のIMAPメールボックスで移行結果を確認する。
参考ウェブサイトなど
-
GitHub
imapsync/imapsync
以上です。