Becky2 -> Thunderbird の移行
長らくBecky2を使っていたのですが、Thunderbirdに移行することにしました。
Becky!2 から Mozilla Thunderbird への移行を参考に、CircleBecky plug-inを使って、mbox形式で、メールフォルダを一括エクスポートします。
Thunderbirdのメールフォルダの構造は、次のようになっています。
○○○ ○○○.msf ○○○.sbd +-- △△△ +-- △△△.msf | +-- □□□ | +-- □□□.msf | +-- □□□.sbd | +-- △△△ | +-- △△△.msf +-- □□□ +-- □□□.msf
ひとつのメールフォルダに対して、3つのファイルが割り当てられています。各ファイルの役割は次のとおりです。
- メールボックス本体
- 拡張子のない、mbox形式のファイルです。ファイル名がメールフォルダの名前になります。
- 管理情報
- 拡張子が".msf"のファイルです。自動で作成されます。
- サブフォルダ
- 拡張子が".sbd"のフォルダです。サブのメールフォルダがある場合にのみ、存在します。
この形式は、エクスポートしたデータとは合っていません。そこで、これに合わせるためのPythonスクリプトを用意しました。src-dirとして、エクスポートしたデータ全体を含むフォルダを指定し、dst-dirに何か適当な名前を指定して、このスクリプトを実行します。dst-dirを作成して、その中にThunderbirdの形式に合わせたデータを作成します。
# -*- coding: utf-8 -*- # # Becky2からThunderbirdへのデータ移行スクリプト # # Usage: b2t.py src-dir dst-dir # import sys, os from os.path import * from shutil import copyfile, move flag_force = True encoding = sys.getfilesystemencoding() def _(s): return unicode(s, encoding) def mknod(path): open(path, 'w').close() src_root = _(abspath(sys.argv[1])) dst_root = _(abspath(sys.argv[2])) if not isdir(src_root): print u"<%s>ディレクトリが存在しません。" % src_root exit() if dst_root.startswith(src_root): print u"<%s>は<%s>の下にあります。" % (_(sys.argv[2]), _(sys.argv[1])) exit() if lexists(dst_root): if not flag_force: print u"<%s>ディレクトリがすでに存在しています。" % dst_root exit() else: os.mkdir(dst_root) base = basename(src_root) for root, dirs, files in os.walk(src_root): dst_dir = dst_root + "\\" + base + root[len(src_root):] if len(dirs) > 0: os.mkdir(dst_dir) for file in files: if file.endswith(".mbox"): src_path = root + "\\" + file #dst_path = dst_dir + "\\" + file if len(dirs) == 0: dst_path = dst_dir else: dst_path = dst_dir + "\\" + file[:len(file)-len(".mbox")] copyfile(src_path, dst_path) dirs = [] for root, dir, files in os.walk(dst_root): if root <> dst_root: dirs.append(root) dirs.reverse() for d in dirs: move(d, d+".sbd") for root, dirs, files in os.walk(dst_root): if root <> dst_root: mknod(root[:len(root)-len(".sbd")])
Thunderbirdのメールフォルダのありかは、Vistaの場合、次のようになっています。この下に、dst-dirの下のデータをコピーして、Thunderbirdを再起動すると、エクスポートしたメールフォルダが見えるようになっているハズです。
C:\Users\<ユーザ名>\AppData\Roaming\Thunderbird\Profiles\<ランダムな文字列>.default\Mail\Local Folders