IMAPメールサーバーを手軽に移行する(乗り換える)方法

この記事は公開から3年以上経過しています。

exceedsystem.comドメイン用として10年以上利用していたWebArena SuiteXからさくらのレンタルサーバーに移行するにあたり、既存のIMAPメールサーバーの全アカウントデータを丸々移行したので、その作業手順メモ。

メールサーバーの移行だけがネックで長年移行を見送っていましたが、こんなに楽に済んでしまうとは…imapsync便利すぎます。


作業手順

以下の手順は、openSUSE(LEAP15.3)で説明していますが、Debian10でもパッケージマネージャの違い以外は同様でした。

予め移行先のIMAPメールサーバーにメールアカウントを作成しておく必要があります。

1. IMAP転送ツール(imapsync)の導入

  1. ターミナルを開き、任意の作業フォルダで以下のコマンドを実行してimapsyncソースをクローンする。

    cd /var/tmp
    git clone https://github.com/imapsync/imapsync.git
  2. 以下のコマンドで依存関係パッケージの調査を行う(環境変数設定は登録されていない場合)。

    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.
  3. 前項のメッセージに従い、不足している依存パッケージ群をインストールする。

    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
  4. Perlモジュールのインストールが完了したらsh prerequisites_imapsyncを実行して全ての結果がOKであることを確認する。

    All needed modules are already installed
    Ok: Found cpanm cpanm (App::cpanminus) version 1.7044 (/usr/bin/cpanm)
  5. 以下のコマンドでPerlモジュールをビルドする。

    make
  6. 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. メールデータの移行

  1. 各種パラメーターを指定してimapsyncコマンドを実行する。

    利用可能なパラメーターはお使いのメールサーバー環境によって異なります。詳細はドキュメントを参照してください。

    ./imapsync \
    --host1 移行元サーバーIP --port1 993 --ssl1 --authmech1 LOGIN \
    --user1 移行元メールアカウント名 --password1 移行元メールパスワード \
    --host2 移行先サーバーIP --port2 993 --ssl2 --authmech2 LOGIN \
    --user2 移行先メールアカウント名 --password2 移行先メールパスワード
  2. 移行先のIMAPメールボックスで移行結果を確認する。


参考ウェブサイトなど

以上です。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする