スレッドシステムのデータベース
以下のようなデータベース群から
スレッドシステムのデータベースは構成されています。
ファイル名 内容の例
----------------------------------------------
status open / close
ml_name elena
article_id 100
thread_id elena/100
from ヘッダの From: (めーる@アドレスの形式)
sender ヘッダの Sender: (めーる@アドレスの形式)
x_sender ヘッダの X-Sender: (めーる@アドレスの形式)
たとえば、BSD 上であれば status.db といった .db のファイル群
のセットとなるわけです。
これらのファイル群は各MLのホームディレクトリではなく、
/var/spool/ml/@db@/ML名/
というディレクトリに作られています。
これは、(特定のドメイン内
逆にいえば、現在、ドメインを超えたクロスポストは無視しているわけですね。
まぁ、あまりそういう要求はないと思いますけど…
にある)MLが相互に参照しあえる拡張機能を想定しているためです。たとえ
ば「support/100 の記事は sales/98 を出発点としている」といった情報を自
動的にMLが教えてくれるような機能を実装するための布石です。残念ながら、
現在のところは未実装です。
スレッドのデータベースは
「主に article_id か thread_id が primary key」
です。
具体的に書くと以下のようになります。
[thread .db]
aritcle_id => thread_id
[article .db]
thread_id => article_ids
Example: elena/100 => 100 101 103 105
[date .db]
aritcle_id => unix_time
[sender .db]
article_id => from
[message_id .db]
mesasge_id => thread_id
[status .db]
thread_id => status
[index .db]
thread_id => "$ml_name " *
Example: support/100 => support sales