Namazu検索ができるようになったので、追加してみました。一番下です。
フォルダごとにした方がよいかと思ったけど、それはまずいかも。たとえば、オフラインでメールを移動した場合、
・ローカルキャッシュからメッセージを作って移動先のフォルダにローカルメッセージとして追加する(テンポラリとして)
・Deletedフラグを立てる
・後でサーバ側に反映できるように、COPYコマンドとSTOREコマンドをセットで保存しておく
ということになるけれど、オンラインにしたときに移動先のフォルダを同期すると、テンポラリのローカルメッセージは削除されるものの、COPYコマンドがまだ実行されていないのでメッセージが消えたようになってしまう。
接続時にCOPYコマンドだけを実行してしまうという手もあるけれど、移動の場合、COPYとSTOREが不可分に行われて欲しいので(実際には途中でエラーになるとロールバックできない場合もあるけれど)、そう考えると、接続時に全てのオフライン間のコマンドを実行してしまう(QMAIL 2.xと一緒)方がやっぱり良さそう。
複数のフォルダを別スレッドで同期することもあるので、サーバに反映するときには、オフライン間のコマンドを実行しおわるまでロックを保持する必要がある。最初につかんだスレッドが処理し、他のスレッドは全てのコマンドを処理し終わるまで待つ必要がある。そうじゃないと、やっぱりオフラインの状態が更新される前に、他のフォルダがアップデートされてしまいかねなくて混乱を招きかねないので。