IMAPでメールデータ変換

IMAPでメールを送り込む


まだまだ引っ張る「メールを自動で取り込んでウマー」プロジェクト、今日は古いメールデータの移行の話です。

私はいままでWindows上でThunderbirdを使って複数のメールサーバーからメールを受信していましたが、全てのメールは自家のLinuxサーバーに溜めて、IMAPでそれにアクセス、という形にしようとしています。IMAPの設定は昨日済ませましたので、次には、Windowsに溜まっているメールをLinuxのメールボックスにコピーしておきたいと思います。

Thunderbirdのメールデータは mbox で保存されているので、Maildir形式にも比較的簡単に変換できる……はずなのですが*1、私はMaildir 形式の、特にサブフォルダの扱いをあまり良く理解していないので、今日は安全で簡単な別の方法でデータ移行してみます。

私が試したのは Thunderbird 1.5 での話ですが、別のバージョンや、別のメーラーを使っている人でも、IMAP対応メーラーであれば同様の方法が使えるはずです。

ThunderbirdIMAPに接続する

Thunderbirdは、POPだけでなく、IMAPクライアントにもなれますので、ThunderbirdLinux箱の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が定期的にポーリングするように設定すれば完了です。というわけで、明日はこの設定をして仕上げてしまいましょう。

*1:mb2mdなんてのがあるようです

*2:Evolutionは標準で全てを表示します