[前:5.4 特殊な設定] [index] [次:6. FAQ]

5.5 その他のファイル

5.5.1 メールボックス(msg.box,msg.map)

これらのファイルは、アカウントフォルダ内に作成され、ローカルに保存しているメールの本体が格納・管理されています。

ファイル名:
msg.box
実際にメール本体が格納されているファイル
msg.map
msg.boxの使用領域を管理するファイル
場所:
アカウントフォルダ

※アカウントフォルダは、メールフォルダの下にアカウントごとに作られます。

更新と編集:
受信(本文の同期)やフォルダ間でのメールのコピー、アカウントをまたいだ移動などの際には、メール本体の追加が発生します。POP3アカウントのフォルダやIMAP4アカウントのOutbox, Sentboxなどのローカルのフォルダにメールが追加保存されるときや、IMAP4でメールをローカルにキャッシュするとき、QMAIL2はmsg.boxにメールの本体を追加します。
反対に、POP3アカウントのようにローカルにTrashフォルダがある環境で、メールの削除が発生した後にEmpty Trashを実行したり、IMAP4アカウントのデフォルトのようにローカルにTrashフォルダを持たない環境でローカルのフォルダからメールを削除したり、IMAP4のキャッシュを削除した場合には、QMAIL2はmsg.boxからメールの本体を削除します。
メッセージボックスの圧縮処理(参照 3.3.9)を実行した場合も、msg.boxを更新します。
msg.mapは、msg.boxの使用領域を管理するファイルです。msg.boxの更新の際にはmsg.mapに対してもmsg.boxとの整合性を維持するための更新をします。
以上のように、msg.boxやmsg.mapは、QMAIL2が自動的に作成更新するファイルですので、ユーザが直接編集することは基本的にできません。
詳細説明:
msg.boxとmsg.mapについて

まず、msg.boxは"\nFrom "で区切られています。それぞれがひとつのメールとして扱われます。文字コードはUTF-8です。
その時点で有効なメールは、"\nFrom -"から始まります。その時点で削除されている(通常は削除された後EmptyTrashされた)メールは"\nFrom *"から始まります。これは、msglistが失われたときに、msg.boxからインポートしたとき余計なメールがインポートされてしまわないようにするためです。
msg.boxは128byteづつに区切られています。この128byteづつの塊をブロックと呼びます。メールを格納するときにはそのメールを格納できる最小のブロックを予約します。つまり、1KB(1024byte)のメールは8ブロック予約します。

予約されたブロックには、"\n\nFrom -\n"に続けてメール本文をUTF-8でエンコードしたものが格納されます。さらに、その後ろに十分なスペースがあるときには"\n\nFrom *\n"をその後ろに格納します。これは、もともと入っていたデータとメールを分離するためです。この分離文字列を格納する領域がない場合には、SP(\x20)で埋められます。

どのブロックが使用されているかは、msg.mapに格納されています。msg.boxで1ブロック予約するとmsg.mapの対応するビットが立ちます。つまり、128byteに対して1ビットが使われます。たとえば、msg.boxが空のときに1KB予約すると、msg.mapでは1バイト分が'1'で埋められます。

メールを格納するときには、msg.mapに格納されている情報を参照しながら、必要なブロックが連続して空いている領域を探し出します。空いている領域がない場合には、ファイルの後ろから必要なブロックを確保します。
メールを削除するとき(実際にはEmptyTrashされるとき)、その領域に対応するmsg.mapのビットを倒し、msg.boxのそのメッセージの先頭に、"\n\nFrom *\n"を書きこみます。さらに、それによって、それよりもうしろ側の使用されているスペースがなくなった場合には、出来るだけファイルのサイズを切り詰めます。つまり、開放した領域の前にある未使用領域をすべて開放します。これにより、msg.boxのサイズが小さくなります。

圧縮について
上に書いたように、ファイルが小さくなるのは、msg.boxの一番うしろのメッセージが削除されたときのみです。そこで、圧縮を実行した場合には、出来るだけ空きスペースを詰めて、空きスペースをうしろに集め、そこを開放します。
圧縮の仕方には複数の方法があります。一つ目は、msg.boxと同じだけのサイズの空き容量がある場合で、もうひとつはない場合です。
前者の場合、msg.boxと同じサイズのファイルを確保し、そこに前からひとつずつメールをコピーして行きます。このため、途中にある空き領域はすべてなくなります。
後者の場合、メールをひとつずつ見て周り、そのメールが現在格納されているよりも前にそのメールを格納できる連続したブロックがある場合、そこにメールを移動します。そのような領域がない場合、何もしません。このため、完全に空き領域がなくなるわけではありません。

5.5.2 フォルダ管理情報(.msglist)

QMAIL2では、メールを保存する際にmsg.boxおよびmsg.mapと、.msglistとに役割が分担されます。
前者(msg.boxとmsg.map)にはメールの本体が、.msglistの方にはインデックスが格納されています。

ファイル名:
<フォルダID>.msglist
フォルダごとのインデックスを管理するファイル
フォルダIDについては、「5.4.3 フォルダ設定(.folders)」を参照してください。
場所:
アカウントフォルダ

※アカウントフォルダは、メールフォルダの下にアカウントごとに作られます。

更新と編集:
QMAIL2のUI上では、メールはフォルダ別に保存されているように見えますが、メールの本体は、ひとつのアカウントあたりひと組のmsg.boxとmsg.mapに格納します。
フォルダ別の保存情報は、<フォルダID>.msglistに保存します。
受信(本文の同期)や移動およびコピー先のフォルダでは追加更新を、削除を実行したフォルダや移動元のフォルダでは削除更新を実行します。
メールインデックスの圧縮処理(参照 3.3.9)を実行した場合も、<フォルダID>.msglistを更新します。
以上のように、msglistはQMAIL2が自動的に作成更新するファイルです。また、テキストファイルではありませんので、基本的にユーザが直接編集することはできません。
説明:
前述のとおり、<フォルダID>.msglistには、保存するメールのインデックス情報を格納します。
テキストファイルではないため、内容を目で確かめたりテキストエディタで編集したりすることはできませんが、次に述べるような項目が保存されています。
  • フォルダ内のメールのID
  • msg.boxに格納されている位置とそのSize
  • Date
  • From / To
  • Subject
  • Status(フラグ)

5.5.3 POPの未読管理情報(.uid)

このファイルは、POP3のアカウントフォルダ内に作成され、未読管理をするための情報が保存されています。

ファイル名:
.uid
Identityを指定しないサブアカウントの未読管理情報ファイル

※通常のサブアカウント(参照 2.3.2)の運用では、このファイルのみとなり未読情報が共有されます。

<Identity>.uid
サブアカウントに指定したIdentity別の未読管理情報ファイル

※サブアカウントを使用したマルチアカウント(参照 2.3.3)の運用では、.uidがIdentity別に作成され、それぞれで未読管理します。別のサブアカウントであっても、Identityが同じ場合は、未読情報が共有されます。

場所:
アカウントフォルダ

※アカウントフォルダは、メールフォルダの下にアカウントごとに作られます。

更新と編集:
POP3サーバから受信する時に、QMAIL2はUIDLコマンドを発行しますが、それに対するサーバの返答をもとに、受信を行っているサブアカウントに対応する.uidを作成・更新します。
サーバがUIDLをサポートする場合は、返ってきたUIDを使用します。
サーバがUIDLをサポートしない場合は、TOPコマンドでヘッダを取得してMessage-IDをUIDの代わりに使用します。
サーバがUIDLもTOPもサポートしない場合は、RETRコマンドで全文を取得してMessage-IDをUIDの代わりに使用します。
未読管理は、サーバから取得したUID(またはその代用)が、.uidにすでにある場合は受信済みとみなして受信対象外に、.uidにない場合は未受信とみなして受信対象にするとともに.uidにUIDを追加、というような方法で行います。

※POPISH(plugin)を起動した他のQMAIL2に接続して受信する場合(参照3.7.2)、一連の受信処理の後に、QUIDおよびすべてのIdentityに対応してQUID <Identity>コマンドを発行します。そしてその返答により.uidおよび<Identity>.uidを更新します。

以上のように、.uidはQMAIL2が自動的に作成更新しますので、ユーザが直接編集する必要はありません。
ただ、なんらかの理由で、未読管理せずにサーバのメールをすべて受信したい場合は、敢えて.uid(該当Identityの<Identity>.uid)を削除する、という方法が考えられます。
また、運用の途中でサブアカウントのIdentityを変更した場合などは、.uidのファイル名も対応して変更したほうがよいでしょう。
不用意に.uidを削除したりファイル名を変更したりすると、意に反する重複受信を引き起こすことがありますので注意が必要です。
削除・ファイル名変更のタイミング:
QMAIL2を終了してから行ってください。

※.uidのようなドットから始まるファイル名をうまく設定できない場合があります。そのような場合は、「6.9 "."(ドット)で始まるファイル名を作ることができない」を参照して対応してください。

書式:
[一行目から最終行の前の行まで]  
UID  : メールのUIDまたはその代用(Message-ID)
部分受信かどうか : 部分受信なら1、全文受信なら0
[最終行]  
サーバにある最後のメールのUID : サーバにある最後のメールのUIDまたはその代用(Message-ID)

5.5.4 IMAPのオフラインで行ったことの情報(.offlinejob)

このファイルは、IMAP4のアカウントフォルダ内に作成され、オフラインで行ったサーバに対する処理を保留にしておいて後で実行できるように、処理の内容が一時的に保存されています。

ファイル名:
.offlinejob
場所:
アカウントフォルダ

※アカウントフォルダは、メールフォルダの下にアカウントごとに作られます。

更新と編集:
IMAP4アカウントで行う処理のうち、サーバとのやり取りが発生する処理をオンラインで実行すると、QMAIL2は基本的にすぐにサーバとのやり取りを開始して処理します。
そのような処理のなかには、オンラインでなければ実行できないものとオフラインでも実行可能なものとがあり、後者をオフラインで実行した場合は、処理の内容をいったん.offlinejobに保存して、次回サーバに接続して実際に処理をするまでの間保存されます。
保留されていた処理が完了すると、その処理を.offlinejobから削除します。
以上のように、.offlinejobはQMAIL2が自動的に作成更新するファイルです。また、テキストファイルではありませんので、基本的にユーザが直接編集することはできません。
説明:
具体的な例として削除フラグについて述べます。
オフラインモードでメールに削除フラグを立てると、リストビュー上の該当メールに削除フラグのマークDeletedが表示され、オンラインモードで処理したときと同じに見えますが、サーバ側の該当メールのフラグは当然そのままです。
このとき、QMAIL2は、どのフォルダのどのメールに削除フラグを立てたかという情報を.offlinejobに保存します。
次回、そのアカウントで同期するなどIMAP4サーバに接続したときに、最初に保留していた削除フラグを立て、そのあとに同期など本来処理すべき処理を実行します。
削除フラグを立てる処理は完了したわけなので、.offlinejobをクリアします。
このような仕組みのおかげで、.offlinejobに保存される処理については、オフラインであることをあまり意識することなく操作することができます。

※オフラインについては「3.5.1 オフライン・オンライン」を参照してください。

※IMAP4アカウントでのオフラインで実行可能な処理とそうでない処理の例については、「3.4.2 IMAP」を参照してください。

5.5.5 ログファイル(smtp.log,pop.log,imap.log)

QMAIL2は、設定により通信ログを出力します。
これらのファイルは、その出力先ファイルです。

ファイル名:
smtp.log
送信処理におけるSMTPサーバとの通信ログ
pop.log
POP3アカウントでの受信におけるPOP3サーバとの通信ログ
imap.log
IMAP4アカウントにおけるIMAP4サーバとの通信ログ
場所:
アカウントフォルダ

※アカウントフォルダは、メールフォルダの下にアカウントごとに作られます。

更新と編集:
QMAIL2がログを出力するかどうかは、[Account Property]ダイアログの[General]タブにある[Detail...]ボタンを押すと開く[Detail]ダイアログの[Log]の設定によります。
デフォルトではチェックされていませんが、これをチェックするとログを出力するようになります。
送信処理は、SMTPサーバと通信することにより行われます。その記録をsmtp.logに追加出力します。
POP3アカウントでの受信処理は、POP3サーバと通信することにより行われます。その記録をpop.logに追加出力します。
IMAP4アカウントでは、同期処理、メールの移動・コピーやフォルダの作成削除など、いくつかの処理がIMAP4サーバと通信することにより行われます。その記録をimap.logに追加出力します。
以上のように、ログファイルは設定によりQMAIL2が自動的に作成更新します。
ただ、QMAIL2はログファイルを削除したり、過去のログを消したりする機能を持っていませんので、出力する設定のままではログファイルがどんどん大きくなっていきます。
ユーザが不要と判断してログファイル削除したり、エディタで過去のログを削除するなどの編集を加えることは問題ありません。
削除・編集のタイミング:
QMAIL2を終了してから行ってください。
書式:
ログの形式: [処理:日付と時刻] 処理結果
処理:
rx : 受信
tx : 送信
connect : 接続時
select : 送信や受信でタイムアウトを待っている間の出来事
capability : IMAP4でCAPABILITYコマンドを送った時の出来事
error : エラー
日付と時刻 : Y2/M0/D-h:m:s
処理結果:
処理に対応した、通信内容、処理中の出来事、エラーの内容

[前:5.4 特殊な設定] [index] [次:6. FAQ]