Thunderbirdのメール振り分けルールが壊れたときの対処方法(の一例)

デブサミなど、セミナや展示会に参加していると、結構な頻度で売り込みのメールが来たり、他にも頼んでもいないメルマガが入ってきたりしてしまって、そういうメールってうっとおしいですよね。
一件ずつお願いしてメール配信停止とか面倒ですし、停止をお願いしても、いつまでたっても配信停止しないメルマガとかありますよね。
というわけで私はThunderbird(以下TB)のメッセージフィルタをつかって、不要なメールを明示的にあるフォルダへ振り分けていました。迷惑メールフィルタは使っていません。
受信トレイにいらないメールが目立つようになってきたので、メッセージフィルタを使って整理していたところ、メッセージフィルタが更新できなくなってしまいました。その時はメッセージフィルタを追加して、その追加したフィルタをその場で受信トレイに適用して、、、ということを繰り返していました。
整理を終えて、違う仕事に取り掛かるためにTBを閉じ、再びTBを開いてメッセージフィルタを確認したところ、追加したフィルタが消えて元に戻っていました。
(フィルタを追加して、TBを再起動すると変更が消えて元に戻ってしまった。)

おかしいと思い、フィルタを再度追加して、TBを再起動すると、また元に戻ってしまう。どうも削除しても戻るので、追加できないだけではなく、更新がまったくできない状態になってしまったようでした。

エラーコンソールには次のように表示されていました。

エラー: uncaught exception: [Exception... "Component returned failure code: 0x8052ffff [nsIMsgFilterList.saveToDefaultFile]" nsresult: "0x8052ffff ()" location: "JS frame :: chrome://messenger/content/FilterListDialog.js :: onFilterClose :: line 396" data: no]

ぐーぐるで調べてみると、つぎのような情報にHit。
http://forums.mozillazine.org/viewtopic.php?f=31&p=4840105

これを見て、つぎのように試してみました。
なお、わたしは実際にやりませんでしたが、本来であれば事前にメールデータをバックアップしてから行ったほうがいいです。メールデータを失うかもしれませんので。

行った操作
  1. TBを閉じて、メールデータのフォルダを開く。
    • メールデータのフォルダは、デフォルトでは以下にあります。
      • C\Documents&Settings\User名\Application Data\Thunderbird\profiles\任意の文字数字.default\Mail\Local Folders
  2. msgFilterRules.datとtmprules.datを別フォルダに退避
  3. TBを起動
  4. メッセージフィルタを開く。登録は空なので、適当に振り分けルールを作る。
  5. メッセージフィルタとTBを閉じる
  6. 元のmsgFilterRules.datで上書きする
  7. TBを起動。メッセージフィルタを開いて、新しいルールを追加したら直った。

で、気づいたのですが、どうも、tmprules.datが悪さをしているようです。
tmprules.datとmsgFilterRules.datのDiffをとったら、中身は同一でした。
また、復旧後にtmprules.datが存在していませんでした。
tmp・・・一時ファイルかな?これがあると、書き込みができなくなるのかも。

tmprules.datが悪いかどうかを確かめるために、ためしに、tmprules.datという中身が空っぽのファイルを作ってからTBを起動してみたら、再現した。

ということで、何かの拍子にtmprules.datができてしまうとこのエラーになってしまい、さらにメッセージフィルタが書き込めなくなるみたいです。

そのtmprules.datを_tmprulues.datにリネームして起動すると、現象が出なくなりました。そして、_tmprules.dat.msfというファイルが起動時に作られた。(謎)

これ以上は調べる気は無いですが、どうやらtmprules.datというファイルをリネームすれば、復旧できそうな感じですね。。。メールデータのバックアップ取らなかったので、追試はできていません。残念。