IMAPでメールデータ変換
まだまだ引っ張る「メールを自動で取り込んでウマー」プロジェクト、今日は古いメールデータの移行の話です。
私はいままでWindows上でThunderbirdを使って複数のメールサーバーからメールを受信していましたが、全てのメールは自家のLinuxサーバーに溜めて、IMAPでそれにアクセス、という形にしようとしています。IMAPの設定は昨日済ませましたので、次には、Windowsに溜まっているメールをLinuxのメールボックスにコピーしておきたいと思います。
Thunderbirdのメールデータは mbox で保存されているので、Maildir形式にも比較的簡単に変換できる……はずなのですが*1、私はMaildir 形式の、特にサブフォルダの扱いをあまり良く理解していないので、今日は安全で簡単な別の方法でデータ移行してみます。
私が試したのは Thunderbird 1.5 での話ですが、別のバージョンや、別のメーラーを使っている人でも、IMAP対応メーラーであれば同様の方法が使えるはずです。
Thunderbird でIMAPに接続する
Thunderbirdは、POPだけでなく、IMAPクライアントにもなれますので、ThunderbirdでLinux箱のIMAPサーバーに接続することができます。
メールの移行の最初のステップは、いままで使っていたメーラーにサブアカウントを追加して新しいIMAPサーバーに接続する設定をすることになります。
設定方法は省略しますが、難しいことは無いでしょう。POPと違うのは、プロトコルを「POP」ではなく「IMAP」と指定するところだけです。
最後の直接受信を行い、自動受信を切る
移行前に、サーバーに溜まっているメールは一旦すべて受信してしまいましょう。メールをサーバーに残す設定にしているひとは、それを切ったあと、全受信をしてください。
また、受信が終わったら、全てのメールアカウントで、メールの自動受信の設定(アカウント設定内、各アカウントのサーバー設定の「起動時に新着メッセージがないか確認する」「新着メッセージがないかN分ごとに確認んする」「自動的に新着メッセージをダウンロードする」あたり)をOFFにしておきましょう。
もし、移行作業中に自動受信が動いてしまうと、それで受信したメールは移行しわすれてしまう危険性があります。
ただし、オフラインモードにしてしまうと、IMAPサーバーが操作できなくなってしまうので、オフラインモードにしてはいけません。
IMAPサーバーに送り先フォルダを作成する
IMAP アカウントは、Thunderbirdでは、ローカルフォルダとは別のツリーとして表示されます。普通、メールはデフォルトで受信トレイ(INBOX)直下に入るので、古いメールもそこに入れてしまうといろいろと混乱するかもしれません。一応、移行用に新規のフォルダを作成しておいた方が良いでしょう。
フォルダの作成はローカルフォルダと同様に、親フォルダを右クリックして「新しいフォルダ」です。この操作は即座にLinuxサーバー側にも適用されます。
ただ、私の勘違いかもしれませんが、作成したディレクトリの表示がおかしくなっていたので、いちどThunderbirdを再起動しました。
あと、混乱しがちなのですが、サーバー側にディレクトリがあっても購読(subscribe)されていなければThunderbirdでは表示されないので *2、サーバー側でいろいろと弄ったあとなどは、購読リストを確認したほうが良いでしょう。
古いファイルのコピー
ここまで出来れば、あとはメーラーの「メールをコピー」の機能でメールをローカルフォルダからIMAPのフォルダへ個別にコピーするだけです。
転送対象のメールを全選択したうえで、「メッセージ」→「コピー」→「(メールアカウント名)」→(作成したフォルダ)→「ここへコピー」と選べば、バックグラウンドでコピー作業がはじまります。
この処理は1秒あたり数通程度しか処理できないので、万単位のメールがある場合は数時間かかります。覚悟してください(笑)
転送中でも、別のメールの転送を仕掛けることが出来るので、複数のフォルダを転送したい場合は、全部のメールの転送操作をしてしまったうえで、放置しておくのが楽です。
転送完了
コピー中にずっとステータスバーに出ていた「xxxx にメッセージをコピーしています xxxxx / xxxxx to」が消えたらコピー完了です。
ステータスバーの右下に表示中のフォルダのメールの総数が出ますので、これを使って、ローカルフォルダとIMAPのフォルダのメールの数に違いが無いことを最後に確認したうえで、Thunderbirdを終了させましょう。おつかれさまでした。
さて、明日は
これで、ひっぱり続けた「メール(中略)」プロジェクトも大詰め、あとはprocmailが定期的にポーリングするように設定すれば完了です。というわけで、明日はこの設定をして仕上げてしまいましょう。