保守

整理

各アカウントのメッセージのインデックスはindex.boxとindex.mapファイルに、メッセージボックスを1ファイルに設定した場合にはメッセージはmsg.boxとmsg.mapファイルに保存されます。これらのファイルは、大きくなることはあっても小さくなることはありません。これらのファイルの中で使われなくなった領域ができた場合は再利用可能としてマークされ、必要に応じて再利用されます。

これらのファイルを整理して小さくしたい場合には、[ファイル]-[保守]-[整理]を選択します。

メッセージボックスが壊れた場合

不幸にもメッセージボックスが壊れてしまった場合には、以下の操作をすることで復旧可能な場合があります。これらの操作をする前に必ずバックアップを取ってください。メッセージボックスディレクトリ以下のファイルを全てバックアップすれば少なくとも元の状態に戻すことはできます。

とりあえず試してみること

まず、[ファイル]-[保守]-[検査]を選択すると、メッセージ本体からインデックス情報を生成しなおすことができます。その後、[ファイル]-[保守]-[救出]を選択すると、インデックスされていないメッセージファイルを救い出すことができます*1

もう少し詳しく

QMAIL3のメッセージは以下のように保存されています。ここでは、まず1メッセージ1ファイルの場合について説明します。

まず、各フォルダのメッセージの情報が*.idxファイルに保存されています。ファイル名は、<フォルダID>.idxです。このファイルには、メッセージのIDと共にインデックス情報へのポインタとメッセージ本体へのポインタが格納されています。インデックス情報は、index.boxとindex.mapというファイルに保存されています。idxファイルに保存されているインデックス情報へのポインタはこのファイル内のオフセットを指しています。メッセージ本体はmsgディレクトリ以下に1メッセージ1ファイルとして保存されています。idxファイルに保存されているメッセージ本体へのポインタはこのファイルのファイル名です。

index.boxが壊れた場合

index.boxが壊れた場合、このファイルを再生成することで復旧できます。idxファイルが壊れていなければ、メッセージ本体へのポインタは正しいはずなので、メッセージ本体からindex.boxを再生成することができます。まずは、[ファイル]-[保守]-[検査]をそのまま実行して復旧できるかどうか試してみます。

実際にはindex.boxを再生成するときには元のindex.boxを読む必要があります。これはメッセージのラベルの情報がここにしか入っていないためです。しかし、元のindex.boxが完全に壊れてしまっているためにうまく復旧できないことがあります。この場合には、index.boxとindex.mapを削除してから[ファイル]-[保守]-[検査]をすることで復旧する可能性があります。ただし、この場合ラベルの情報は失われます。

*.idxが更新されていない場合

メッセージが追加されたのにidxファイルが保存される前に失われると、追加されたメッセージが見えなくなります。この場合、[ファイル]-[保守]-[救出]をすることで、idxファイルに登録されていないメッセージを探し出すことができます。

*.idxが壊れた場合

idxファイルが壊れるとインデックスはもとより元のメッセージへのポインタもおかしくなっている可能性があります。この場合には、*.idxとindex.box, index.mapを削除した上で[ファイル]-[保守]-[救出]をすることで、メッセージを救い出すことができます。ただし、フォルダの情報やメッセージのフラグ、ラベルなどは失われます。

また、たとえば特定のフォルダを振り分けると必ず強制終了してしまうような状況になった場合には、<そのフォルダのID>.idxファイルを削除した上で[ファイル]-[保守]-[救出]を行うこともできます。この場合も、フラグやラベルなどは失われます。

メッセージボックスが1ファイルの場合

1メッセージ1ファイルの場合にはmsgディレクトリ以下にメッセージが保存されていますが、1ファイルの場合にはmsg.boxとmsg.mapというファイルにメッセージが保存されています。この場合、[ファイル]-[保守]-[救出]は使用できません。ただし、msg.boxはUnix mboxフォーマットと互換のある形式になっていますので、QMAIL3でインポートすることができます。別のアカウントを作成して、msg.boxをインポートすることで、メッセージを救い出すことができます*2。ただし、フォルダの情報やメッセージのフラグ、ラベルなどは失われます。

いずれにしても、1メッセージ1ファイルの場合にはmsgディレクトリ以下のファイルを、1ファイルの場合にはmsg.boxファイルがあれば最悪でもメッセージは復旧させることができる可能性が高いです。

ダンプとロード

[ファイル]-[保守]-[ダンプ]を選択すると、現在のアカウントの全てのメッセージをフォルダの構造を保ったまま指定したディレクトリの下にファイルとして保存することができます。ダンプしたディレクトリからフォルダ構造とメッセージを復元するには[ファイル]-[保守]-[ロード]を選択します。


*11メッセージ1ファイルの場合のみ
*2残っているゴミメッセージもインポートしてしまう可能性があります