ThunderbirdでIMAP使用時、消しても消しても復活してくる幽霊フォルダ

ThunderbirdIMAPを使っていて、とあるフォルダを削除したのに再起動すると復活してくるとか、そもそも削除できないとか、削除すると増殖するとか(これ意味不明だけどホントの話)、そのフォルダにアクセスすると「Mailbox does not exist, or must be subscribed to.」と言われるとか、まぁそういう幽霊フォルダ怪現象に襲われたという話。


prefs.jsいじくったり、メールフォルダの*.msfを消したり、global-messages-db.sqliteまでも恐る恐る直接弄ってみたり、
Net::IMAP::Client::delete_folderしてみたり、色んなことをやりました。しかしフォルダは消えてくれません…。


ところで他のメーラー(例えばBecky!とか)で見ると、そんなフォルダは存在しなかったりする。Net::IMAP::Client::foldersでも出てこない…。
これがさっぱり意味分からんかったのだが、プロトコルログを見てやっと気づいた。
(ちなみにThunderbirdプロトコルログは、環境変数で NSPR_LOG_MODULES=IMAP:5 と NSPR_LOG_FILE="C:\thunderbird.log" をexportしてからThunderbirdを実行すれば取得可能)
ThunderbirdがLSUBしてる。これ、フォルダの一覧ではなくて購読の一覧。


つまり、すでに存在しないフォルダをThunderbirdが購読し続けていたということが分かった。
消せなくなったフォルダは日本語が文字化けしてしまったフォルダだったので、購読の解除辺りで日本語に起因するバグがありそう。


幽霊フォルダを消すには、フォルダを消す(DELETE)のではなく、購読解除(UNSUBSCRIBE)しないといけない。
ちなみにNet::IMAP::Clientは対応してないので、Net::IMAP::Client::_tell_imapを使ってLSUB、UNSUBSCRIBEした。