Thunderbird(&Courier IMAP)からMail.app(&iCloud)への移行

Before:

After:

iCloudが始まり、無料のAppleID(*@me.com)アカウントと一緒にメールボックス(最大5GB)が貰えるようになったので、IMAPサーバとして使っていたさくらのメールボックスサービスから移行することにしました。
Mail.appを使ってさくらとiCloudIMAPに接続し、さくら内のメールをiCloudD&Dで移動しようとしたところ、「〜:Message contains invalid header」とダイアログが表示されて移動できません。これは困ったと言うことで調べてみると、どうやらThunderbirdがさくら内のメールに付けてたFromヘッダ関連でちょいと都合が悪いものがあるらしい。仕方がないので、さくらのメール群を一端mbox形式でローカルにコピーします。

  1. Mail.appにてローカルに保存したいメールの入ったフォルダを指定する
  2. メニューより「メールボックス>メールボックスを書き出す...」を選択
  3. ダイアログより書き出し先フォルダを選択し、出力する
  4. メニューより「ウィンドウ>動作状況」を選択し、書き出しが終わるのを見守る

Terminal.appを起動し、書き出し先フォルダでFromヘッダ関連(および、なぜかヘッダの体をなしていなかった妙な日付情報)を削除するコマンドを発行します。

$ cd /path/to/書き出し先フォルダ
$ find . -name mbox -print0 | xargs -0 sed -i '' -e "/^>From /d" -e "/^ [A-Z][a-z][a-z] [0-9][0-9] /d"

Mail.appのメニューより「ファイル>メールボックスを読み込む...」とし、読み込みダイアログでApple Mail」を選び、書き出し先フォルダを選択して読み込みます。
読み込まれたメールは「このMac内」のカテゴリの中の「読み込み」の下に置かれるので、これをiCloud上のメールボックスなどにD&Dでコピーします。
これで幸せになれました。

参考:
http://kb.mozillazine.org/Message_contains_invalid_header
Fix invalid mail headers when moving from Thunderbird to IMAP « Python recipes « ActiveState Code