inn |
SunOS (1.5.1) |
NetBSD (2.1) |
ないとうさん
History file for inn
history file には、一行毎に(自分の持っている記事と最近処理した記事について)
<[email protected]> 898953117~-~898918491 fj.books/220
のように
記事の Message-ID 時刻情報 記事の位置
が書いてある。
そうして、この一番左にある Message-ID を鍵に検索して、
grephistory や、innd などが、
記事を既に持っているかどうか、いつ消去するか、
どの位置PATH にあるかなどを知るために使われる。
Message-ID が全世界にたった一つしかないように作られる工夫が
されているのは、全てその文字列を基にして
(到着記事について)
-
「それはもう持っているから処理が不要」とか
-
「初めて受取ったものだから記事領域にしまおう」
-
「ということは他の機械にも送る必要がある」
-
「実は最近受取ったものがまた(別の機械から)送られて来て、
その前に来たものは期限切れで消してしまったけれど、
一度来たものだから、受取らないよ」
(だから他にも転送しないよ)
などの処理が行なわれるからである。
時刻情報は、実はさらに細かく、~ で区切って三つの時刻を持っている。
簡単には
到着時刻 ~ 消去時刻 ~ 記事に書いてある Date: の時刻
となっていて
その単位は秒で、
1970/01/01 にはじまり 2038/01/19 12:14:07 に終わる 32 bit 長
の値である。(試しに
perl -e 'print scalar(localtime(2**31-1)),"\n"'
と入力して見ると、上の数字に意味が見出せると思う)。
また、ここに書かれている数字を人間が分る時刻に直すには
/usr/local/news/bin/convdate -c 数字とすれば良い。
時に数字でなく代りにマイナス記号(-)が書いてあることもある。
真中の消去時刻は、
記事を持っていても Expire: という情報が中に書いていない時と、
既に消去されてしまった時にはそのように (-) が書かれる。
また、
history.dir history.hash histor.index
は Message-ID から上記の情報を
早く取出すためのデータベースである。
その他:
man history が参考になる。
その時には、setenv MANPATH /usr/local/news/man
のようなおまじないが必要かも知れない。
この文章はその man history のほんの一部を取出して日本語にしたもの
と考えてもらってもいい。
また、
grephistory '<[email protected]>'
などのように、
grephistory Message-ID
とすると記事がどこにあるか教えてくれる。