migrate from mbox to Maildir

Facebooktwittermail

mbox形式で運用しているメールサーバをMaildir形式に移行したときのMemo

既存サーバ
Postfix 2.2.10 + mbox

新サーバ
postfix 2.6.6 + Maildir

移行に利用したプログラム Perfect_maildir
http://perfectmaildir.home-dn.net/

参考にしたサイト [メールデータ移行]
http://scientificsrv.com/migrate_to_maildir.shtml


メールをmboxからMaildirに移行するまえに当然ながら、既存サーバから新サーバにアカウント情報、メールスプールを移行しておきます

  1. perfect_maildir.plダウンロード
  2. コンバートプログラムのperfect_maildir.plを上記サイトからダウンロードして適当なフォルダに保存します

  3. perfect_maildir.plの実行権限
  4. 手っ取り早くperfect_maildir.plの実行権限を追加します
    また perl-TimeDateモジュールがインストールされているか確認して下さい

  5. スクリプト作成
  6. 参考サイトのスクリプトを元に今回の条件にあったスクリプトを作成しました
    駄作ですが一応載せておきます。条件は
    ・ホームディレクトリがそれぞれグループ毎に分かれている
    ・所属グループが分かれている
    またmboxからMaildirへの移行処理に限定しています

  7. アカウントリスト作成
  8. 移行するアカウントリストを/etc/passwdなどを元に作成します
    列はアカウント:グループID:ホームディレクトリになります

  9. スクリプトの実行
  10. スクリプトに実行権限を与えて実行します

  11. pop3で確認
  12. Dovecotなどのpopやimap経由でメールが読めるか確認します。取り敢えず今回は無事にpop3でメールが読めました

ちなみにperfect_maildir.plのログに警告が出力されます。
Use of uninitialized value $date in string at /usr/local/bin/perfect_maildir.pl line 93.
Use of uninitialized value $delivered_time in concatenation (.) or string at /usr/local/bin/perfect_maildir.pl line 109.
Use of uninitialized value $delivered_time in utime at /usr/local/bin/perfect_maildir.pl line 135.

最初の変数定義で
my $date;
my $delivered_time;
となっていて初期化されていないからだとは思うのですが….

Leave a Reply