インポートできちゃった

Opera は mbx 形式でのエクスポートができるので(ただし拡張子は .mbs だけど)、Thunderbird への移行も Eudora 形式のインポートを使えば楽勝かなと思っていたけど、実際インポートしてみると、本文は確かに取り込めるのですが、添付ファイルが開けないのです。
で、何とかできないかといろいろ調べてたら見つけました。
http://stuff.techwhack.com/archives/2004/09/08/importing-mails-from-opera-m2-to-thunderbird/
この人は何やったかというと、Thunderbird のメールボックスファイルを Opera のエクスポートファイルに置き換えちゃうという荒業。しかし、試してみたところばっちりいけたのでご報告しておきます。

  1. Thunderbird で適当なアカウントに移行用のフォルダを作成。(例:import)
  2. Thunderbird のメールボックスディレクトリ(※)に移行用フォルダに対応するファイル(作成したフォルダの名称と同一でサイズ0の拡張子なしファイル。例:import)が作成されていることを確認。
  3. Opera でエクスポートするメールボックスを右クリックし「エクスポート...」を選択。
  4. 適当な名称で保存。(拡張子は変更しても強制的に .mbs にされちゃいます)
  5. Thunderbird のメールボックスディレクトリに移動し、2.の移行用フォルダに対応するファイルを削除します。
  6. 4.でエクスポートした Opera のメールボックスのファイルを、Thunderbird のメールボックスディレクトリにコピーする。
  7. 6.でコピーしたファイルを、5.で削除したファイルと同一名称(例:import)にリネームする。
  8. Thunderbird で移行用ディレクトリをクリックすると、インデックスの作成が始まる。これが終了するとインポートしたメールが確認できる。

※:【例】C:\Documents and Settings\goking\Application Data\Thunderbird\Profiles\randomname\Mail\hatena.ne.jp

ついでにコンタクトリストをアドレス帳にインポート

Thunderbird では csv ファイル形式のアドレス帳とかならインポートできるのですが、Opera のエクスポート機能ではオリジナルフォーマットの .adr というファイルしか吐き出せません。
.adr の中を見てみると、かなり単純な形式なので、sed でデータ変換してみました。作成した sed スクリプトは以下の通り(ここでは contacts.sed というファイル名をつけたと仮定します)。かなり単純です。

/^#CONTACT$/{
N
N
N
N
N
N
s/^.*\n\tNAME=\([^\n]*\).*\n\tMAIL=\([^\n]*\).*$/"\1",\2/
p
}
d

これを、以下のように実行します。なお、opera からエクスポートしたコンタクトリストは contacts.adr というファイル名だと仮定します。(ちなみに私は cygwin で実行してます)

$ sed -f contacts.sed contacts.adr > contacts.csv

ちなみにここで作成されるファイルは、以下のような形式になります。

"表示名", メールアドレス
"goking", goking@example.com

こうやって作成された contacts.csv ですが、実はそのままではインポートできません。opera は UTF-8 でエンコーディングしているため、Thunderbird ではうまく読んでくれないっぽいです。
そこで、私は適当なテキストエディタを使って保存しなおし、エンコーディングを Shift JIS に、改行コードを CRLF に変換しました。ここまでくれば後は、Thunderbird のアドレス帳のインポート機能で、適切にフィールドをマッピングしてあげればOK。
なんとか移行完了。