Becky!2 から Thunderbird 2 へ移行する方法

投稿日:

Thunderbird 2 がいろいろと良さそうな雰囲気を漂わせているのでちょっと試用してみることにしました。サーバ上からデータを削除せず Becky!2 としばらく併用してみて移行する価値があるかを試してみようかと思います。Thunderbird 2 は現在ベータ2がダウンロード可能です

で、設定の類は仕方がないのである程度手動を覚悟をいてはいるのですが、既存のメールボックスのデータは最低限移行できないと困るわけですが、Thunderbird 2 のエクスポート機能は見ての通り Becky!2 のようなシェアウェアは対応していません。

mail12.jpg

で、ちょっとネットを検索してみたら以下の二つのサイトが参考になりました。

- スポンサーリンク -


Becky!2 から Thunderbird 2 へ移行する方法

Becky!2 の標準 export はフォルダ単位でしかエクスポートできないので、全フォルダを手動でエクスポートする必要がある。これは手間なので、CircleBecky plug-in の手を借りることにします。CircleBecky plug-in をインストールして Becky2! を再起動すればフォルダルートから一括でエクスポートが可能となるのです。

mail02.jpg

この一括エクスポートを行う前にプラグイン設定で以下のようにエクスポート形式を mbox へ変更しておく。これで Thunderbird2 でインポート可能な形式になる。約3万通のメール数で約10分程度でエクスポートが完了しました。

mail06.jpg

さて、ここからちょっとしたテクニックが必要になります。Thunderbird2 のメールボックスの形式は以下のようになっています。Thunderbird2 のメールボックスの構造は以下の通りになっています。

 mailbox ファイル名 ・・・・ mailbox フォルダ名
 mailbox ファイル名.msf ・・・・ 自動生成される mailbox 管理情報
  ┃
  ┗━ mailbox ファイル名.sbd ・・・・ mailbox階層をディレクトリ構造で管理
       ┃
       ┗━ mailbox ファイル名 ・・・・ mailbox フォルダ名
           mailbox ファイル名.msf ・・・・ 自動生成される mailbox 管理情報

で、CircleBecky plug-in で生成されるエクスポートファイルはこの形式になっていないので何らかの変換を行う必要があります。フォルダを変換してくれる VBScript なるものが公開されているのですが、Vista だからなのかエラーで動かない。面倒なので Perl でスクリプト作りました。※多分標準で動くと思います。(嘘?)

use strict;
use warnings;
use File::Find;
use File::Copy;
our $root = './B2F_TMP';
our @filelist;

mkdir($root) unless ( -e $root );
find( { wanted => \&filter, no_chdir => 0 }, './' );

foreach my $e ( sort @filelist ) {
    if ( $e->{filename} =~ m!mbox$! ) {
        my @path = split( '/', $e->{dir} );
        shift @path;
        pop @path;
        my $str = $root;
        foreach my $p (@path) {
            $str .= "/$p.sbd";
            mkdir($str) unless ( -e $str );
        }
        my $cpfile = qq{$str/$e->{filename}};
           $cpfile =~ s/\.mbox//;
        print qq{$e->{fullpath} : $cpfile\n};
        copy( $e->{fullpath}, $cpfile );
    }
}

sub filter {
    push @filelist,
        {
            dir      => $File::Find::dir,
            filename => $_,
            fullpath => $File::Find::name,
        };
}

このスクリプトを動作させるには、ActivePerl を Windows にインストールしている必要があります。よくわからない場合は、知ってるお兄さんを見つけて聞いて下さい。

エクスポートしたフォルダ配下に、このスクリプトを適当に b2f.pl とでもしてファイルを作成して実行してください。B2f_TMP というフォルダが自動生成され、そのフォルダ配下に Thunderbird2 でインポート可能な形式のファイル群が生成されます。

mail09.jpg

このB2F_TMP 配下のファイルを全て Thunderbird2 の Local Folders フォルダ配下にごっそり移動します。Local Folders は Windows の検索機能を使えば何処にあるかすぐにでてくると思います。

mail10.jpg

さて、ここまで来たら Thunderbird 2 を起動してみます。ごっそり mailbox が見えているはずです。

mail11.jpg


さて、実はこれだけではインポートできない mailbox もあります。以下のように mailbox を階層化していて、しかもそのルートにメールが1通も無い場合です。

mail13.jpg

この場合は、Thunderbird 2 上からそのルートの mailbox 名を新規作成してやると、元の階層のままの mailbox が表示されるようになります。

と、とりあえずこれで Becky2! から Thunderbird 2 へのメールデータの移行は完了しました。後は設定ですが、いろいろt出回っているツールは何故かうまく動いてくれない(Thunderbird 1 用途だから?)ので手動でチマチマやることにします。疲れた・・・

- スポンサーリンク -