MozillaZine.jp フォーラム https://forums.mozillazine.jp/ |
|
ゴミ箱消えすぎ https://forums.mozillazine.jp/viewtopic.php?f=3&t=14840 |
ページ 2 / 2 |
作成者: | WADA [ 2014年11月20日(木) 18:12 ] |
記事の件名: | Re: ゴミ箱消えすぎ |
c889a138.msf/c889a138.msf ⇒ trash/trash.msf ⇒ trashXXX/trashXXX、とコピーされたファイルが引き起こした、怨霊による超常現象は、 1. trash/trash.msfが「Trashという特別なフォルダー」として使われ、「trash/trash.msfはTrashという特別なフォルダーである」と記録される。 2. Thunderbirdを終了し、trash/trash.msfを、無理矢理、trashXXX/trashXXX.msfにリネーム。 3. Thunderbirdを再起動。 ⇒ trashXXX/trashXXX.msfは、ファイル名から「trashXXX」というフォルダーである、と普通に認識される。 URI=mbox:// ... /trashXXX ⇒ しかし、「trash/trash.msfはTrashという特別なフォルダーである」と記録されていたので、 フォルダーの実名(prretiestName)が、「Trash」になる。 ⇒ 「trashXXX」というフォルダーとしては、「Trashという特別なフォルダー」とはセットされない。 4. このため、 メールの削除、では、Trash⇒URI=mbox:// ... /Trashを探しに行くが、Trash/Trash.msfは無い、 あるいは、「Trashという特別なフォルダー」はどこにも無いので、メールを移動できない、 になり、 新規に「Trashフォルダー=Trash/Trash.msf」を作ろうにも、フォルダーの実名=Trashのものが既にあるので、作れない。 と言うような感じです。 Trash/Trash.msf(Trash.msfの中に「ゴミ箱」)の場合は、 (A) ファイル名経由で、URI=mbox:// ... /Trash、フォルダーの実名=Trash (B) Trash.msfの中に「ゴミ箱」、によって、URI=mbox:// ... /Trash、フォルダーの実名=ゴミ箱 の両方ができてしまい、 Empty Trash(ゴミ箱を空にする)で、Trash/Trash.msfを消し、(A)を消したけれど、 (B)があるせいで、「Trash」というフォルダー == URI=mbox:// ... /Trash が既にあるのでTrash/Trash.msfを作りに行かない、 ということのように思えます。 この仮定が概ね当たっていれば、 既に(B)があって、Trash/Trash.msfというファイルへのポインターはあるから、 Trash/Trash.msfを作れば、「Trash」というフォルダーにアクセスでき、 Trashの日本語名=ゴミ箱、経由であろうと、(B)の、フォルダーの実名=ゴミ箱、経由であろうと、 いずれにせよ、フォルダーペインでは「ゴミ箱」と表示されることになるから、 Trash/Trash.msfを作れば回復、の説明がつく。 でも、この場合には、Trash/Trash.msfというファイルは既に存在しないのだから、再起動すれば、(A)も(B)も消し去られるわけで、 そうなれば、再起動で、無ければ勝手にTrash/Trash.msfを作る、が効いて、一件落着、なわけで、 二度と問題が起こらない、と思うのだが... もしそうだとすると、 選りによって、なんでまた、運悪く問題が再発するようなファイルをわざわざ選択し、問題が再発しない方の手順ではなく、問題が再発してしまう方の手順をわざわざ実施してしまうのだろうか... 普通の人ならば経験しない、たとえあったとしても、ごく一部の環境だけでしかも一度だけ、 というようなものを、何度も経験なさる方々には、どこか共通点があるような気が... |
作成者: | WADA [ 2014年11月21日(金) 08:11 ] |
記事の件名: | Re: ゴミ箱消えすぎ |
とおりすがり さんが書きました: 消えてしまった時は他のアカウントから「Trash」と「Trash.msf」をコピーして貼り付けていたが、毎日のことで面倒になったので「Trash」と「Trash.msf」をコピー用にデスクトップに置いておき、それを貼り付けしている 通常、Thunderbirdを起動中のTrash.msfファイルはオープンされていて、Thunderbirdの起動中のTrash.msfは、大体は「Trash.msfとTrashの間の整合性がとれていない」という状態になっています。 「Trash.msfとTrashの間の整合性がとれている」という状態は、Trash.msfというファイルをクローズする時点で、Trash.msfに書かれます。 それをそのままコピーすれば、コピー先のTrashフォルダーにも、「Trash.msfとTrashの間の整合性がとれていない」という状態をコピーすることになります。 「Trash.msfとTrashの間の整合性がとれていない」という状態であっても、 フォルダーを明示的にオープンした時に、Rebuild-Index(Repair Folder,フォルダーの修復)が実行され、通常は問題ないのですが、 フォルダーを明示的にオープンせずに、手動でメールを移動したりメッセージフィルターでメールを移動した時などには、xxx.msfのきちんとした更新ができないまま、xxxというファイルにメールデータを書きに行きます。 これは、意図してそのようにしている、というわけではなくて、現在の仕様では、 POP3のメールのダウンロード中に「Inbox.msfとInboxの間の整合性がとれていない」という状態が起こっても、 ダウンロードを取り止めてRebuild-Indexという時間のかかることをしてダウンロードを再開、ではなく、 まずはダウンロードしてデータをInboxの中に書き込んでおき、次回のオープンの時にRebuild-Index(Repair Folder,フォルダーの修復)を行う、というようになっていて、 それが、全てのローカルのメールフォルダーにも適用されている、というだけのことです。 メールのコピー・移動でのフォルダーへの書き込みも、POP3のメールのInboxへ書き込みと同じ扱いになります。 当然ですが、メールの削除も、Trashへのメールの移動、ですから、同じになります。 闇雲に、xxx/xxx.msfというファイルのセットをThunderbirdの起動中にコピーすれば、何が起こってもおかしくは無い、と言えます。 ましてや、メールが削除できない、自動的にTrash/Trash.msfを作りにいかない、というような、大きな問題が発生している時に、そのようなことをすれば... 目的は、「Trash/Trash.msfというファイルが存在するという状態を作ってみる」ということなんだから、コピーするにしても、せめて、ヌルのTrashとヌルのTrash.msfにしていさえすれば... ご参考までに。 |
作成者: | WADA [ 2014年11月21日(金) 11:51 ] |
記事の件名: | Re: ゴミ箱消えすぎ |
何でまた、他のアカウントのTrash/Trash.msfをコピー、に走ってしまうんだろう、と思って、「Thunderbird ゴミ箱 消える」でググってみた。 パターンとして、 (A) ゴミ箱が表示されない、Trash/Trash.msfはある (B) ゴミ箱が表示されない、Trash/Trash.msfはない の両方あり、圧倒的に(B)が多く、(B)の回復手順としては、 (B-1) trashというフォルダーをUIから作成 (B-2) 他のアカウントのTrash/Trash.msfをコピー の順に多く、この二つがほとんど。 (B-3) 適当にテキストファイル(ヌルファイル)を作り、Trash/Trash.msfにリネーム もあるにはあったが、極く僅か。 (B-4)TrashというフォルダーをUIから作成 は、それほど多くをチェックしたわけではないので、一件だけ。 (B-1)も(B-2)も、出所は一つで、一番多く引用された・パクられたのが(B-1)と(B-2)だった、ということなんでしょう これならば、「他のアカウントのTrash/Trash.msfをコピー」が実行されても当然ですね。 それが、「Trash/Trash.msfのバックアップをコピー」、に変ってしまう例は、稀だと思いますけど。 結構古くからある問題で、最適化が起こった時に多い、とかの記述があるところを見ると、 元々は、ゴミ箱の最適化とゴミ箱を空にするが同時に起こると、Trash/Trash.msfを消してしまうが、再作成しない、というような問題だったのでしょう。 そして、Trash/Trash.msfが無い場合に再起動で自動的に作るようにはなっていない時のものが多そう。 また、Trash.msfに「ゴミ箱」を書いてしまうバグが作りこまれる前のThunderbirdでの話がほとんどに見える。 でも、自動的な最適化、は、どんなに多くても一時間に一回しか発生しないから、最適化が原因でゴミ箱が消える現象が、あるThunderbirdで毎日のように起こる、とは、到底考えられない。 「Trash.msfにゴミ箱が書いてある状態だとゴミ箱が消える現象が起こる」が正しいのならば、 1. Trash.msfに「ゴミ箱」を書いてしまうバグが作りこまれる 2. Trash.msfに「ゴミ箱」が書いてあると、ゴミ箱が消える現象が起こり得る、という問題が作りこまれる 3. Trash.msfに「ゴミ箱」を書かないように修正はされたが、 依然、既存のTrash.msfに「ゴミ箱」が書いてある状態のままだと、ゴミ箱が消える現象が起こり得る。 4. 運が悪いと、Trash.msfに「ゴミ箱」が書いてある状態のままになっていて、ゴミ箱が消える現象が起こる。 その時に、運が良ければ、同時に全部のアカウントで問題が起こってくれて、 Trash/Trash.msfがなければ再起動時にTrash/Trash.msfが作られるので、一回の再起動で、お終い。 その時に、運が悪いと、一度に一つのアカウントでしか問題が起こってくれなくて、 それで、アカウントの数だけ問題が起こることになって、憤慨する。 5. 「他のアカウントのTrash/Trash.msfをコピー、で回復する」派の人が、 「他のアカウントのTrash/Trash.msfのバックアップをコピー、で回復」に手法を変えた時に、 運が悪いと、バックアップが、「Trash.msfにゴミ箱が書いてあるもの」になり、 毎日のように、ゴミ箱が消える現象を見る。 ということのように思えます。 |
作成者: | WADA [ 2014年11月21日(金) 14:34 ] |
記事の件名: | Re: ゴミ箱消えすぎ |
c889a138.msf/c889a138.msf ⇒ trash/trash.msf ⇒ trashXXX/trashXXX、とコピーされたファイルが引き起こした、怨霊による超常現象は、 よくよく考えると、c889a138.msf/c889a138.msf(###というフォルダー名)は、現象には本質的に関係ないはず。 trash/trash.msfが「Trashという特別なフォルダー」として使われたものであり、trashXXX/trashXXXはそれをコピーしたものである、ということだけが、キーのはず。 と思って、Trash/Trash.msfをtrashXXX/trashXXX.msfにリネームして、Thunderbirdを再起動してみたら、 案の定、怨霊による超常現象は、見事に再現(^^; 現象としては、 ーtrashXXX/trashXXX.msfというファイルのセットは、 「Trash」という名前のフォルダーとして表示されるが、 (多分、prettiestNameが表示されている) Trashアイコンはつかない(Trashという特別なフォルダーとしては認識されていない) ーTrash/Trash.msfはリネームしてしまったから、存在しない。 ーメールを削除、では、移動もしないし、Trash/Trash.msfを作りにもいかない。 ー再起動しても、prettiestName=Trashのものがあるから、Trash/Trash.msfを作りにいかない。 この場合は、「Trash」というprettiestNameのフォルダーが実際にあるから、「UIからTrashを作る」という手は効かず、リネームしてからでないと、できない。 何度かリネームして遊んでいたら、 trashXXX/trashXXX.msfというファイルのセットが、Trashと表示され、 Trashアイコンがつく(Trashという特別なフォルダーになっている)、 という状態になることもあり、 この場合は、メールの削除なども普通にできて、 TrashフォルダーにtrashXXX/trashXXX.msfというファイルのセットを使えたことになり、 Trashフォルダーに任意のファイル名を使う、という道が開けたことになる(^^) もっとも、Empty Trashで、Trash/Trash.msfに戻されちゃいますけど。 となると、 Trash.msfの中に「ゴミ箱」が書いてあると、 (i) msgFolder.URI=.../Trash, msgFolder.prettiestName=ゴミ箱、対応するファイル=Trash/Trash.msf (ii) msgFolder.URI=.../Trash, msgFolder.prettiestName=Trash、対応するファイル=Trash/Trash.msf の両方ができ、 「Trashという特別なフォルダー」、フォルダーペインに表示するもの、としては、 (i)のTrash.msfの中の「ゴミ箱」由来の方が使われ、 Empty Trashでは、(i) の方が消され、 (ii) のゴミが残っていて、prettiestName=Trashのものがあるので、Trash/Trash.msfを作りに行かない、 と考える方が良さそうです。 これならば、Trash.msfの中に「ゴミ箱」が書いてあると、英語版のThunderbirdでも「ゴミ箱」と表示される、という現象とも合致する。 こちらのケースの場合は、Trash/Trash.msfのリネームなんてなアホなことはしていないから、 prettiestName=Trashの実体は存在せず、 現在のThunderbirdは、再起動で、Trash/Trash.msfが無ければ勝手に作るわけだし、 メールの削除ができない、ゴミ箱がなくなった、Trash/Trash.msfが消えてしまった、というような、非常に重大な問題が起こってしまったんだから、一旦はThunderbirdを終了する、 という、ごく普通のことをすれば済む話のはずなんだけど... |
作成者: | WADA [ 2014年11月21日(金) 18:40 ] |
記事の件名: | Re: ゴミ箱消えすぎ |
.msfにフォルダー名が入っているもので、もう少し遊んでみました。 Local Folders の Outbox : File名 = Unsent Messages / Unsent Messages.msf Unsent Messages.msf の中に、 msgStoreファイル名の Unsent Messages フォルダー名のOutbox (フォルダーの実名) という文字列のデータを持っている。 これを、Trash/Trash.msfにコピーしてTrashフォルダーとして使うと、フォルダーの実名=Trashに更新するので、 それを、ABC/ABC.msfにコピーして使うと、 フォルダーの実名=Trashがフォルダーペインに表示されるし、「Trashという特別なフォルダー」の状態が維持されるので、 Trashフォルダーが二つでてくる(一つはABC/ABC.msfから、もう一つはTrash/Trash.msfから)、といった面白い現象を簡単に見られて、 (A) Empty Trash(ゴミ箱を空にする)を行うと、 (A-1) 一回目は、ABC.msf由来のTrashが消されて、本物のTrashではないから、フォルダーは再作成されないが、 (A-2) 二回目は、Trash.msf由来のTrashが消されて、本物のTrashなので、フォルダーが再作成される、 とか、 (B-1) ABC.msfの中のフォルダーの実名=Trashだと、Trash/Trash.msfを消して再起動してもTrash/Trash.msfが作られないが、 (B-2) ABC.msfの中のフォルダーの実名=TrXshにすると、Trash/Trash.msfを消して再起動するとTrash/Trash.msfが作られる、 とかがあって、いくつかの知見が得られました。 一言で言うと、msgStoreファイルはコピーしてから.msfファイルを再作成させればいいが、.msfファイルはコピーして使うためのものではない。 そのフォルダーのバックアップから戻す時に、セットで戻すのならいいが。 Trash.msfの中にフォルダー名の「ゴミ箱」(上記だと、Outboxという名前にあたる)があっただけでは、Trash/Trash.msfが消されたあとにTrash/Trash.msfが再作成されない、という現象にはならないはずだけれども、 Trash.msfの中にフォルダー名が入っているフォルダーの.msfファイルをコピーすれば、上記のような様々な変った現象を簡単にみられます。 「Trash/Trash.msfのバックアップからコピー、によって回復」をしたいのならば、 Trash/Trash.msfが無い状態で再起動してTrash/Trash.msfを作らせてTrashにアクセスしてThunderbirdを終了、の後のクリーンなバックアップ、とか、 Trash/Trash.msfが無い状態の時に、UIから作成したTrashというフォルダー用の、Thuderbird終了後のTrash/Trash.msf、とか、 ヌルファイルを作ってTrash/Trash.msfにリネームしたもの、など、 完全にクリーンで、Trash.msfの中にフォルダー名の「ゴミ箱」が確実に無いものを使用してみてください。 これを使っても、毎日問題を見ることができますか? |
作成者: | WADA [ 2014年11月22日(土) 12:54 ] |
記事の件名: | Re: ゴミ箱消えすぎ |
Unsent Messages/Unsent Messages.msfのようなものをTrash/Trash.msfにコピーし、prettiestName=Trashになったものを別のxxx/xxx.msfにコピー、だけでは、どうやってもフォルダーペインに「Trash」が表示されてしまい、 Trashフォルダー由来の「Trash」がxxx.msfに書いてあるのに、フォルダーペインではファイル名の方が表示される、という状態を、もう一度作り出せない... フォルダーペインには「Trash」も「ごみ箱」も無いのに、pretttiestName=Trashのものが居る、という状況に二度とできない... と悩んでいて、panacea.dat(FolderCache)の存在を思い出した。 FolderCacheに書かれている「フォルダーの表示名」が、xxx.msfに書かれている「フォルダー名」よりも強かった。 そして、xxx.msfに書かれていないといけないのは、「ごみ箱」ではなく「Trash」だった。 ABC/ABC.msfがあってそれがフォルダーペインに表示されている時に、 Thunderbirdを終了し、Trash.msfに「Trash」と書かれているTrash/Trash.msfを、ABC/ABC.msfに上書きコピーし、Thunderbirdを再起動すると、 フォルダーペインでは「ABC」で、しかし内部的なフォルダー名=Trash、という妖怪を、容易に作れます。 Trash.msfに「Trash」と書かれているTrash/Trash.msfは、 Trash.msfに「ごみ箱」と書いた頃のTrash/Trash.msf、あるいはそのバックアップ、から、ずっとTrash(ごみ箱)として使われてきたもの、 Unsent Messages/Unsent Messaages.msfや、「###」のようなハッシュされたファイル名のものを、Trash/Trash.msfにコピーし、それをThunderbirdの「Trash(ごみ箱)」として使ったもの、 のいずれでも同じです。 .msfにフォルダー名が書かれた場合、その後、それは一切変更されないのですが、 Trashの場合は、他の名前が書かれていると問題があるので、.msfにフォルダー名が既にある場合、そのエントリーを消すのではなく、Trashという文字列で置き換えているようです。 また、Empty Trash(ゴミ箱を空にする)場合でも、Trash.msfの内容の一部は引き継ぎます(スレッドペインのカラム、など)。 こういった、Trash/Trash.msfのセットをコピーして作ったフォルダーがありませんか? 以前書いたように、こういったフォルダーのxxx.msfの中には「Trash」という文字列が書かれ、 このフォルダーが、Trash/Trash.msfと同じところにあれば、 Empty Trash(ごみ箱を空にする)で、Trash/Trash.msfを消した後、Trash/Trash.msfを作りに行かない・行けない、という現象は、確実に起こります。 単純に、Trash.msfに「Trash」と書いてあるTrash/Trash.msfをコピーしただけでは、フォルダーペインに「Trash」が複数現れるので、 フォルダーペインには、一つしかTrash(orごみ箱)はない、 Empty Trash(ごみ箱を空にする)で、毎日のように、ごみ箱が消える、 という状況の原因としては、上記のことしか思いつきません。 Trash.msfに「ごみ箱」と書いてあるTrash/Trash.msfであっても、一度クローズされればTrash.msfには「Trash」が書かれそうだし、 (訂正: 「Trash」は英語版、日本語版は「ごみ箱」を書く」) Trash.msfに「ごみ箱」と書いてあるTrash/Trash.msf、というだけで、毎日のようにごみ箱が消える、とは、ちょっと考えにくい。 [11/22 16:00 訂正・追記です] (1) 日本語版では、既にTrash.msfにフォルダー名がある場合、Trash.msfには常に、「ごみ箱」の、エスケープしたUTF-8のデータ($E3$81$94$E3$81$BF$E7$AE$B1)を書きます。 従って、.msfに「Trash」が書いてある妖怪を作るには、 英語版で、xxx.msfにフォルダー名があるxxx/xxx.msfのセットをTrashフォルダーとして使い、それをyyy/yyy.msfにコピー、 という操作が要ります。 普通、日本語版を使っていてこんなことはしないだろうから、このケースではなさそうですね。 (2) 英語版だと、Trash/Trash.msfが無ければ、再起動で自動的にTrash/Trash.msfを作ってくれるが、 日本語版だと、Trash/Trash.msfだけでなく、Inbox/Inbox.msfも無い場合でないと、再起動で自動的にTrash/Trash.msfを作らない、 というような違いがあるようです。 英語圏では、Trashが消えた!、削除できない!、とあまり騒いでいなかったみたいなのは、再起動してみればOKだったせいかな? |
作成者: | WADA [ 2014年11月23日(日) 11:41 ] |
記事の件名: | Re: ゴミ箱消えすぎ |
Unsent Messages由来の妖怪ファイルだと、queuedというOutboxのフラッグも書かれ、「ごみ箱」として使ってくれなくて、アイコンも未送信フォルダのものになってしまって、現象の再現・把握には不向きなので、 原点に戻って、「###」のハッシュされたファイル名のmsfファイル由来の妖怪ファイルで遊んでみた。 英語版で作った、ファイル名=ABC/ABC.msf、フォルダーペインでは「ABC.msf」、しかしABC.msfの中には「Trash」と書いてある、というファイルは、 フォルダーをクリックしてオープンして再起動すると、ABC.msfの中に書いてある「Trash」がフォルダーペインに表示されてしまうので、 「Trash」という名前のフォルダーがフォルダーペインには無い、という状態を維持するためには、 作り出した、ファイル名=ABC/ABC.msf、フォルダーペインでは「ABC.msf」、しかしABC.msfの中には「Trash」と書いてある、という妖怪ファイルをオープンしないように、細心の注意を払う必要があるけれど。 手順。 (1) 前準備 (1-1) 英語版で、「###」というフォルダー用のファイルのセットをTrash/Trash.msfにコピーして再起動。 ファイル名=Trash/Trash.msf、フォルダーペインでは「Trash」、Trash.msfの中には「Trash」と書いてあり、 Trashのフラッグも書かれている、というファイルができる。 Thunderbirdを終了し、このセットを、Trash英語版/Trash英語版.msfという名前で、バックアップをとる。 (1-2) ABCというフォルダーを作り、Thunderbirdを終了。 Trash英語版/Trash英語版.msfという名前のバックアップを、ABC/ABC.msfに上書きコピー。 ファイル名=ABC/ABC.msf、フォルダーペインでは「ABC」、しかしABC.msfの中には「Trash」と書いてある、 という妖怪ファイルのできあがり。 (1-3) Trash英語版/Trash英語版.msfという名前のバックアップを、Trash/Trash.msfに上書きコピー。 日本語版Thunderbirdを起動し、メールを削除し、Trash/Trash.msfに書かせ、 削除されたメールを未読にして、フォルダーペインに数字がでるようにしておく。 日本語版Thunderbirdをなんどか再起動し、Trash/Trash.msfが、確実に、 フォルダーペインでは「ごみ箱」でごみ箱アイコン、メールを削除すれば移動されるもの、 になっていることを確認する。 Thunderbirdを終了し、このセットを、Trash日本語版/Trash日本語版.msfという名前で、バックアップをとる。 Trash日本語版.msfの中には「ごみ箱」という文字列が書かれている。 (2) ごみ箱フォルダーをたくさん作って、遊んでみる。 Trash日本語版/Trash日本語版.msfという名前のバックアップを、 A-1/A-1.msf、A-2/A-2.msf、 ... 、A-n/A-n.msf にコピーし、 Trash/Trash.msfを削除して、Thunderbirdを再起動。 ⇒ n個の「ごみ箱」の完成 フォルダーのプロパティで、使われているファイル名を確認しておく。 ⇒ 日本語版だと、Trash/Trash.msfがないというだけでは、再起動でTrash/Trash.msfを作ってくれないから、 Trash/Trash.msfは作られていない。 英語版であっても、妖怪ファイルがあるから、Trash/Trash.msfを作れない。 メールの削除を行うと、一番上のものの、(A-1)に移動されることがわかる。 このアカウントが選択された状態で、ファイル/ごみ箱を空にする、を行うと、 A-1/A-1.msf由来の「ごみ箱」がなくなる。 この時、ファイル名=ABC/ABC.msf、フォルダーペインでは「ABC」、 しかしABC.msfの中には「Trash」と書いてある、 という妖怪ファイルがあるから、 Trash/Trash.msfの再作成には行かない。 ⇒ メールの削除、ファイル/ごみ箱を空にする、を繰り返すと、 「ごみ箱」が一つづつ消えていき、そして誰もいなくなった... (3) 妖怪ファイルの実体を見る。 日本語版Thunderbirdで、ABCというフォルダーをオープン、メールをコピー、必要なら再起動、 をおこなうと、おっつけ、フォルダーペインでは、ABC.msfに書いてある「Trash」が表示される。 どこかにおいてあるTrah/Trash.msfのバックアップをコピーすると、 Thunderbirdの再起動をしていないのに「ごみ箱」が現われて、またメールの削除ができるようになる、 という現象の再現は不可能ですし、 日本語版ユーザーの環境ではちょっと考えられない、英語版でのTrashのバックアップ由来のファイルが要りますが、 少なくとも、 どこかにおいてある、Trash.msfに「Trash」または「ごみ箱」と書いてあるTrash/Trash.msfのバックアップをコピーするだけで、 ごみ箱がなくなる、メールの削除ができなくなる、Trash/Trash.msfが再作成されない、 というような奇妙な現象を、 非常に簡単に、何度でも確実に引き起こせる、 ということは、明らかでしょう。 ご参考までに。 なお、「ローカルフォルダ」では問題が起こらないことは、「ローカルフォルダ」にInbox/Inbox.msfが無い場合には、容易に説明がつきます。 ー POP3アカウントの場合には、Inbox/Inbox.msfを必ず作るが、 「ローカルフォルダ」には、自動的にInbox/Inbox.msfを作らない。 ー 日本語版でも、Inbox/Inbox.msfが無ければ、 再起動した時に、Trash/Trash.msfが無いと、Trash/Trash.msfを作る。 ー Thunderbirdが新規に作ったTrashフォルダーならば、 Trash.msfに、「ファイル名!=フォルダー名」用の「フォルダー名の文字列」は、書かれていない。 |
作成者: | WADA [ 2014年11月24日(月) 11:31 ] |
記事の件名: | Re: ゴミ箱消えすぎ(Trash.msfをコピー、は危険) |
Trash/Trash.msfを消してThunderbirdを再起動、 Trash/Trash.msfが無い時に、「trash」というフォルダーを手動で作る、 Trash/Trash.msfをA-1/A-1.msfにリネーム、A-1/A-1.msfをA-n/A-n.msfをコピーして再起動、 などを、Thunderbird英語版やThunderbird日本語版で何度か行って遊んでみてわかったこと。 Trash/Trash.msfが無い時に「trash」というフォルダーを手動で作る、を行うと、 1. MsgStoreファイルは、指示されたとおりの「trash」で作り、 Case-Insensitiveな比較で「Trashという特別なフォルダー」とわかるので、 「Trash.msf」というファイルを作る。 2. その時、trash != Trash であるから、Trash.msf の中に、 英語版だと、ファイル名=trash、フォルダー名=Trash 日本語版だと、ファイル名=trash、フォルダー名=ごみ箱 が書かれる。 Trash.msfにフォルダー名が書かれないのは、正規の「Trash」で作った時のみ。 3. Empty Trash(ごみ箱を空にする)を行った時の、Trash/Trash.msfの再作成では、 それまでに使っていたTrash.msfからスレッドペインのカラムの選択などを引き継ぐ必要もあって、 単なるTrash.msfの削除+空のTrashからTrash.msfの再構築、ではなく、 それまでに使っていたTrash.msfのデータの一部は、新規に作るTrash.msfにも引き継がれる。 そして、引き継がれるデータには、 Trash.msfの中の、フォルダー名=Trash、あるいは、フォルダー名=ごみ箱 が含まれる。 XXX.msfの中に「フォルダー名=各国語版のローカライズされた名前」を書いてしまうバグが直った後でも、 ごみ箱が消えた、メールを削除できない、Trash/Trash.msfが作られない、という現象がまだ結構起こっているのは、 (A) 日本語版だと、Trash/Trash.msfが無い時に再起動しても、 Inbox/Inbox.msfがあると、Trash/Trash.msfを作りにいかない、 ということだけが原因ではなく、 (B) 日本では、ごみ箱が消えた、メールを削除できない、Trash/Trash.msfが作られない、という大きな問題が起きた後、 完全にクリーンなTrash/Trash.msfを作るのではなく、 trashを手動で作るなり、既存のTrash/Trash.msfをコピーするなりして、 バグが直ったのに、わざわざ、また、Trash.msfの中に「フォルダー名=ごみ箱」を書かせる、 ということが未だにごく普通に行われている、 ということも、影響しているのでしょう。 その後、一度でも英語版で動かせば、Trash.msfの中のデータは「フォルダー名=Trash」に変わり、 そのTrash/Trash.msfのバックップをとれば、バックップのTrash.msfには「フォルダー名=Trash」があるわけで、 そのバックアップをコピーすれば、Trash.msfの中に「フォルダー名=Trash」が書かれている、あるいは、A-n.msfの中に「フォルダー名=Trash」が書いてある、という状態を、簡単に引き起こせる... 最初の人が、 UIでtrashを作る、でなく、UIで正規のTrashを作る、 あるいは、 Trash/Trash.msfをコピー、でなく、TrashだけコピーかTrashというヌルファイルを作るだけにして再起動、 と書いていてくれさえすれば... https://support.mozilla.org/ja/kb/cannot-delete-messages では、当然だとは思いますけど、ちゃんと、Trash/Trash.msfを消すなりTrashを再作成、と書いてあるんですけどね。 |
作成者: | WADA [ 2014年11月25日(火) 10:41 ] |
記事の件名: | Re: ゴミ箱消えすぎ((Trash.msfをコピー、をしてはいけません) |
訂正・追記です。 いつ、ローカライズされたフォルダー名がTrash.msfに書かれるか、について、ちょっと勘違いしていたようなので、日本語版Thunderbirdで再確認してみました。 (1) Trash.msfを削除してThunderbirdを再起動し、Rebuild-Indexをさせる。 => Trash.msfに、ファイル名(=Trash)も、フォルダー名(=ごみ箱) も、書かない。 メールを削除したりしたあと、英語版と日本語版を交互に起動しても、 Trash.msfに、フォルダー名(=ごみ箱 あるいは Trash) は、見られない。 Empty Trash(ごみ箱を空にする) => Trash.msfに、ファイル名(=Trash)と、フォルダー名(=ごみ箱) が、書かれる。 英語版と日本語版を交互に起動すると、 Trash.msfの中の、フォルダー名=ごみ箱、と フォルダー名=Trashが、交互に切り替わる。 (2) Trash/Trash.msfを削除してThunderbirdを再起動し、「ごみ箱」が無い状態にする。 (日本語版だと、自動的に作りに行かない) 「ごみ箱」が無い状態での再起動を繰り返し、完全に「Trash」が無い状態にする。 UIからtrashを作ると、trash/Trash.msfができ、Trash.msfには、ファイル名(=trash)だけが書かれ、 UIからTrashを作ると、Trash/Trash.msfができ、Trash.msfには、ファイル名(=Trash)だけが書かれ、 メールを削除したりしたあと、英語版と日本語版を交互に起動しても、 Trash.msfに、フォルダー名(=ごみ箱 あるいは Trash) は、見られない。 Empty Trash(ごみ箱を空にする) => Trash.msfに、ファイル名(=Trash または trash)と、フォルダー名(=ごみ箱) が、書かれる。 英語版と日本語版を交互に起動すると、 Trash.msfの中の、フォルダー名=ごみ箱、と フォルダー名=Trashが、交互に切り替わる。 (3) 日本語版を使用し、Trash.msfにフォルダー名=ごみ箱が書かれている状態でThunderbirdを終了し、 Trash/Trash.msfを消し、Thunderbirdを再起動し、 すぐに、UIから、Trashを作成 => Trash.msfに、ファイル名(=Trash)と、フォルダー名(=ごみ箱) が、書かれる。 英語版と日本語版を交互に起動すれば、 Trash.msfの中の、フォルダー名=ごみ箱、と フォルダー名=Trashが、交互に切り替わる。 これは、Junk(迷惑メール)フォルダーでも同じで、 たとえ、Junk.msfにファイル名(=Junk)もフォルダー名(=迷惑メール)も書かれていない状態であっても、 「迷惑メールフォルダーを空にする」をすれば、Junk.msfにフォルダー名(=迷惑メール) が書かれました。 Trash.msfに「フォルダー名=ごみ箱」を絶対に書きに行かないようにしたわけではなくて、 また、英語版を使ったら、Trash.msf内の「フォルダー名=ローカライズされた名前」を消し去ってしまう、というわけでもなくて、 Trash.msfにフォルダー名=ごみ箱を書かれると英語版で「ごみ箱」になってしまう問題は、 Trash.msfに「フォルダー名=ローカライズされた名前」が既に書かれていたら、英語版でも、ローカライズされた名前にあたる「Trash」を書く、 というような形で解決したようです。 新規にフォルダーを作成する部分では、XXX.msf内に「フォルダー名=ローカライズされた名前」を書きに行かないように書き換えたけど、 それだけじゃうまくいかなくて、上記のようにして解決して、 上記のような解決方法ならば、誰かがXXX.msf内に「フォルダー名=ローカライズされた名前」を書いたからといって問題は起こらないから、 別に、XXX.msf内に「フォルダー名=ローカライズされた名前」を書くロジックを全部消す、なんてな無駄なことは、しなかったのでしょう。 結局、悪いのは、「Trash.msfをコピーして使う」ということであって、 ファイル名の大文字小文字を区別しないOSの上で、UIからフォルダーを作る分には、大文字・小文字の区別は、しなくても構わない。 ですから、 Trash/Trash.msfをコピーして回復、ということを最初に書いた人が、 ヌルのTrashを作って、Trash.msfがあったらTrash.msfを消して再起動、とか、 ヌルのTrashとヌルのTrash.msfを作って再起動、 とでも書いていてくれさえいれば... だけになります。 |
作成者: | WADA [ 2014年11月25日(火) 13:13 ] |
記事の件名: | Re: ゴミ箱消えすぎ |
追記です。 Trash/Trash.msfを消してThunderbirdを再起動した時に、 英語版なのに、再起動しても、Trash/Trash.msfが作られない、 日本語版なのに、再起動すると、Trash/Trash.msfが作られる、 ということが何度かあって、ちょっと気になったので、追加で確認してみました。 (A) 日本語版を、ごみ箱がある状態で使用し、終了。 Trash/Trash.msfを消し、英語版で再起動。 ⇒ Trash/Trash.msfが作られない。 英語版:しかし、Trash==ごみ箱、という日本語版由来のデータは消される。 従って、もう一度再起動すれば、Trash/Trash.msfが作られる。 日本語版:Trash==ごみ箱、という日本語版由来のデータは消されない。 従って、何度再起動しても、Trash/Trash.msfが作られない。 英語版を終了し、英語版を再起動。 ⇒ Trash/Trash.msfが作られる。 Trash.msfに、ファイル名=Trash/フォルダー名=Trash、は書かれない。 (B) 英語版を、Trashがある状態で使用し、終了。 Trash/Trash.msfを消し、日本語版で再起動。 ⇒ Trash/Trash.msfが作られる。 Trash.msfに、ファイル名=Trash/フォルダー名=ごみ箱、が書かれる。 この時、ごみ箱フォルダーをオープンする前の未読数は、 最後の、英語版でのもの(0、空白で表示)、ではなく、 日本語版での最後に表示されていた未読数が表示され、 ごみ箱フォルダーをクリックしてオープンすると、未読数=0になる。 明らかに、FolderCacheに書かれている、「Trash/Trash.msfのファイルのセットであるTrashというフォルダー」に関するデータが関係していて、 (1) Trash/Trash.msfを消して再起動した時に、 最後が、日本語版の、Trashフォルダー=Trash/Trash.msfセット=ごみ箱という表示名、だと、 英語版であろうと日本語版であろうと、再起動で、Trash/Trash.msfセットを作らない。 (2) Trash/Trash.msfを消して再起動した時に、 最後が、英語版の、Trashフォルダー=Trash/Trash.msfセット=Trashという表示名、だと、 英語版であろうと日本語版であろうと、再起動で、Trash/Trash.msfセットを作る。 ということのように見えます。 prettyestName=Trashのフォルダーがあると、Empty Trash(ごみ箱を空にする)で、Trash/Trash.msfセットを再作成できない、ということ以外にも、 上記のようなことが関係した、Trash/Trash.msfセットが再作成されない現象が含まれているような気がします。 1. Outdared msf conditionがごみ箱フォルダー(Trash)でおこる。 2. ごみ箱フォルダーの明示的なオープンをしていないから、Rebuild-Indexは行われない。 でも、メールの削除などは実行され、Trashというファイルへのデータの追加などは発生する。 3. Compactが起動されて、Outdared msf conditionが検出され、msfValid=false がセットされる。 4. Empty Trash(ごみ箱を空にする)で、Trash.msfがオープンされ、データが読み込まれ、 Trash.msfファイルがクローズされ、Trash/Trash.msfファイルが削除される。 5. 何らかの理由により、Empty Trash(ごみ箱を空にする)における、Trash/Trash.msfの再作成に失敗する。 6. しかし、msfValid=falseとかOutdared msf conditionなどのために、 Trash.msfファイル用の制御ブロックのゴミが残る。 7. エラーがあるので、フォルダーリディスカバリーなどが動き、 再起動時と同様にTrash/Trash.msfの再作成をしようとするが、 日本語版の「ごみ箱」フォルダーなので、実行されない。 8. Trash/Trash.msfのバックアップからコピーする。 9. Trash.msfファイル用の制御ブロックのゴミが残っているから、 再起動しなくても、今作られたTrash/Trash.msfにはアクセスでき、 フォルダーペインには、「ごみ箱」が表示される。 10. Trash/Trash.msfのバックアップは、Thunderbirdが起動中のものだから、 かなりの高確率で、Outdared msf conditionの状態になっていて、 当然ながら、今コピーでできたTrash/Trash.msfも、Outdared msf conditionの状態。 11. 1に戻り、同じことが繰り返される。 とかが起こっても、おかしくはなさそう... ご参考までに。 |
作成者: | とおりすがり [ 2014年11月25日(火) 16:59 ] |
記事の件名: | Re: ゴミ箱消えすぎ |
WADAさん、ありがとうございます。 数々のご指摘、提案をいただきながらなかなか対応できず心苦しい次第です。 以下、私の方で試してみました。 (1) Thunderbirdを終了 プロファイル内のTrash、Trash.msfを削除 Thunderbirdを起動 LocalFolders内にTrash、Trash.msfが自動で作られる POPアカウント(アカウント1~3)では自動で作られない LocalFolders内に自動で作られたTrash、Trash.msfを、POPアカウントのフォルダ内へコピー (2) Thunderbirdを終了 プロファイル内のTrash、Trash.msfを削除 POPアカウントのフォルダ内にメモ帳で新しいテキストドキュメント.txtを2つ作成して、Trash、Trash.msfに名前を変更 Thunderbirdを起動 (3) Thunderbirdを終了 プロファイル内のTrash、Trash.msfを削除 POPアカウントのフォルダ内にメモ帳で新しいテキストドキュメント.txtを作成して、Trashに名前を変更 Thunderbirdを起動 POPアカウントのフォルダ内にTrash.msfが自動で作られる (4) https://support.mozilla.org/ja/kb/cannot-delete-messages Thunderbirdを終了 プロファイル内の Trash、Trash.msf を削除 Thunderbirdを起動し、「ごみ箱」がないアカウントを右クリックし[新しいフォルダ]からフォルダ名[Trash]を作成 (1)~(4)いずれでもごみ箱は復活しましたが、しばらくするとゴミ箱が消えるという現象は起こりました。 しかしながら、Thunderbird のバグというよりも、私の操作が原因で不具合が起こるようになったのではないかと思うようになりました。 一度、Thunderbirdを入れ直ししてみたいと思います。 |
作成者: | WADA [ 2014年11月25日(火) 17:53 ] |
記事の件名: | Re: ゴミ箱消えすぎ |
とおりすがり さんが書きました: (4) https://support.mozilla.org/ja/kb/cannot-delete-messages Thunderbirdを終了 プロファイル内の Trash、Trash.msf を削除 Thunderbirdを起動し、「ごみ箱」がないアカウントを右クリックし[新しいフォルダ]からフォルダ名[Trash]を作成 (1)~(4)いずれでもごみ箱は復活しましたが、しばらくするとゴミ箱が消えるという現象は起こりました。 完全にクリーンな「ごみ箱フォルダー=Trash/Trsh.msfのセット」にしている(4)なのに、しばらくしただけでゴミ箱が消える、というのは、明らかに異常です。 フォルダーペインで、「Trash」と表示されていて、でも、アイコンは、ごみ箱ではない、というフォルダーがありませんか? XXX.msfというファイルの中に書かれている「フォルダー名」は、XXX.XXX.msfのセットをコピーしたあと、フォルダーをクリックして明示的にフォルダーをオープンするまで、フォルダーペインには表示されません。 一度、問題の起こるPOP3アカウントの全フォルダーを明示的にクリックしてみましょう。 自分で、Trash/Trash.msfを、ABC/ABC.msfにコピーした、というような記憶が無い場合には、アドオンが関係するかもしれません。 Trash/Trash.msfの内部的なバックアップをとり、Trash/Trash.msfを消したはいいが、 Trash/Trash.msfのセットを作って、そのTrash.msfの中に「フォルダー名=Trash」があるものを、XYZ-n/XYZ-n.msfとかにコピーし、 Thunderbirdの内部的には、XYZ-n/XYZ-n.msfのセットでXYZ-n.msfの中に「フォルダー名=Trash」がある状態にしたので、 アドオン自身が、ごみ箱フォルダーを再作成できなくなってしまい、 手動で「ごみ箱を空にする」を行えば、ごみ箱フォルダーを再作成できなくなるし、 でも、アドオンが、そのXYZ-n/XYZ-n.msfのセットのフォルダーをフォルダーペインには見せないので、「Trash」という名前をどこにも見ることができない、 とか。 でも、これだと、 「ごみ箱」がないアカウントを右クリックし[新しいフォルダ]からフォルダ名[Trash]を作成 は、Trashが既にある、といってきて作れないから、違うか。 しかし、Trash/Trash.msfが無い状態にして再起動すると、アドオンがバックアップを全部消すのでOKになる、ということなら、説明がつく。 |
作成者: | eofjpwejfp [ 2015年9月03日(木) 23:39 ] |
記事の件名: | Re: ゴミ箱消えすぎ |
結局、消える。 WADAさんは、やたら長くごちゃごちゃ見にくい文章を書いているが 結局何も解決しない。裁判やってるんじゃないんだから もっと簡潔に書かれてはどうですか。どっちみち解決しませんがね。 |
ページ 2 / 2 | All times are UTC + 9 hours |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |