[PREVIOUS CHAPTER]
[______TOC_______]
Appendix A	クロスポスト
Appendix A.1	Introduction
クロスポストをした場合通常はMLすべてに流れてしまいます。ニュースシス
テムはニュースサーバがクロスポストを処理していますが、MLサーバはそれ
ぞれ独立に動いているので、統一的にクロスポストを処理することができませ
ん。
これを解決する方法は2つです。
   1	サーバ間でプロトコルを決めてメールを渡しあい
	どれを配送したかしないか?を制御する。	
   2	サーバがのMLのサーバのメンバーリストを自前で持ち
	To: と Cc: を見て自分は誰の分を配送すればいいかを
	独立に定める。
1 は失敗した場合サイト間をまたいで無限ループする可能性があります。2 の
いいところはこれなら最悪でも全部のMLサーバが独立に流してしまうだけで、
今と同じです。そして間違いなくループ等は発生しないというところです。
基本方針として「最悪のケースを常に想定する」ので、実装として2を選択し
ます。
メンバーリストさえあれば fml そのものでなくてもクロスポストはサポート
できます。fml でないサーバは単に流してしまうだけですが。また、あらかじ
めお互いのメンバーリストを知らないといけないので未知のML間とのクロス
ポストは作動しません。そもそも”あるアドレス”を見た時にそれがMLなの
か個人なのか見わける手段はないわけですが:-)
Appendix A.2	クロスポスト判定アルゴリズム
a, b, c というMLがあるとしましょう。	
	To:	a, b
	Cc:	c
というヘッダを持つメールが来たとします。この場合ある人 aoi@chan.panic 
に送る時次のようにチェックをします。
	a の配送リストに aoi@chan.panic はいるか?
	b の配送リストに aoi@chan.panic はいるか?
	c の配送リストに aoi@chan.panic はいるか?	
	…これ以上あれば、以下同様のループ…
FMLは最初に見つかったMLへ配送します。例えば a にあれば a で、a には
いなくて b にいれば b です。
ポイントは、このプロセスを全部のMLサーバが独立に実行するところです。
そして
	○ あるアドレスが a にいる場合
	   a のMLが配送し、b と c のMLは配送しない
のように作動することで、複数のMLに入っていても一つのMLだけが配送さ
れます。
なお考えてみればわかりますが、ヘッダを配送先に合わせてそれぞれ変化させ
ることはできません(効率を無視すればできなくはないだろうが)。よって、
reply の仕方は
	1	各自の判断にまかせる
	2	Reply-To: を最初から出す人がつけてあげる
ということになります。(個人的には、クロスポストをする以上 2 ぐらいま
で出す人が考えておくべきだとおもうのですが…)
Appendix A.3	Config.ph Configurations
クロスポストをサポートする場合は $USE_CROSSPOST をセットして下さい。
	$USE_CROSSPOST = 1;
こういうのは sitedef.ph あたりで定義するといいような気がしますね。その
マシンで動いてる全部のMLでクロスポストとかできないと嬉しくないでしょ
うから
Appendix A.4	クロスポスト情報設定ファイル @CROSSPOST_CF
設定ファイルには
	MailingListのAddress	Directory(config.phのある場所)
=
	ML Address		location of config.ph
を書いておきます。クロスポストするMLのうち fml でないプログラムの場
合仮想的に config.ph を書いておく必要があります。
Example: We determine judgment for elena ML by checking
/var/spool/ml/elena/config.ph and lists under /var/spool/ml/elena.
	elena@baycity.asia	/var/spool/ml/elena
	Freekick@baycity.asia	/var/spool/ml/Freekick
/var/spool/ml/elena/config.ph を見て elena@baycity.asia MLの配送リスト
はどのファイルか(e.g. actives ? members ?)を決定して、そのファイルを配
送リストのチェックに用います。そのためにこのデータベースが必要になるわ
けです。