		アドレス関係の操作

------------------------------------------------------------
1	概要
1.1	ＭＬが使うアドレス
1.2	アドレスのチェックの厳しさ
1.3	メンバーの認証
1.4	配送先
1.5	投稿したいけれど配送は受けたくないアドレス
1.6	投稿先は変えずに、配送先だけを増やす
1.7	削除の時は？

2	Emailアドレスの判定方法とSecurity
2.1	アドレスのチェックを緩めたい or きつくしたい

Appendix A	クロスポスト
Appendix A.1	Introduction
Appendix A.2	クロスポスト判定アルゴリズム
Appendix A.3	Config.ph Configurations
Appendix A.4	クロスポスト情報設定ファイル @CROSSPOST_CF
------------------------------------------------------------


ここではアドレスについての登録の仕方について詳しくは
 how_to_subscribe 1 節をみて下さい。

	../how_to_subscribe/

特定のアドレスを弾きたいといった場合は、
フィルタリング(  節)を参照して下さい。

また、リモート管理の時の認証については remote_control 1 節を参照し
てください。

1	概要

1.1	ＭＬが使うアドレス

elena ML の場合

	elena		投稿用				$MAIL_LIST 
	elena-ctl	コマンドを投げるアドレス	$CONTROL_ADDRESS
	elena-admin	管理者				$MAINTAINER

elena-ctl is called "control address".

1.2	アドレスのチェックの厳しさ

	$ADDR_CHECK_MAX
See also: 2.1 

という変数で決まります。

1.3	メンバーの認証

$MEMBER_LIST (例: /var/spool/ml/elena/members )というファイルにアドレ
スがあるかないか？で決まります。

$MEMBER_LIST にあっても配送はされません。このファイルにあると fml がメー
ルを受けとります。つまり拒否をしないだけです。

1.4	配送先

配送先は $ACTIVE_LIST というファイルにあるアドレスたちです。

1.5	投稿したいけれど配送は受けたくないアドレス

ファイルが２つに分かれているので、「投稿したいけれど配送は受けたくない
アドレス」は $MEMBER_LIST にだけそのアドレスをかけばOKです。

◯ 管理者は

	% makefml add2members elena アドレス

で members にだけ登録できます。２がうちにくいので

	% makefml addmembers elena アドレス

でもOKです。

◯ ユーザは？

登録した後 skip コマンドを使ってもらうことになるでしょう。

1.6	投稿先は変えずに、配送先だけを増やす

管理者は

	% makefml add2actives elena アドレス

で actives にだけ登録できます。２がうちにくいので

	% makefml addactives elena アドレス

でもOKです。

◯ ユーザは？

単に複数回 subscribe すればいいわけですね

1.7	削除の時は？

members, actives に対になっているか？などは一切調べず有無を言わさず該
当するアドレスを消します。なので非対称に登録したか？などはおぼえていな
くてもかまいません。
2	Emailアドレスの判定方法とSecurity

2.1	アドレスのチェックを緩めたい or きつくしたい

メンバーチェックは送られてきたメールの発信者のアドレスと members に書
かれたアドレスとが一致するか否かで判断しています。今の設定は
＃1.3.2からは…緩くした

	fukachan@titech.ac.jp
	fukachan@phys.titech.ac.jp
	fukachan@beth.phys.titech.ac.jp
	fukachan@exelion.phys.titech.ac.jp

はすべて同じにみなしてます。つまり phys.titech.ac.jp のjp側から数えて
３つの部分の判定チェックですね。(木構造のルートから数える)
＃経験的にここまでやれば十分でしょう

4つ(jp ac phys titech の4つ)までチェックしたいなら、

	$ADDR_CHECK_MAX = 4;

と config.ph のどっかに書いておいて下さい。$ADDR_CHECK_MAX という変数
が設定されてない場合は３として動きます。４の時

	fukachan@phys.titech.ac.jp
	fukachan@beth.phys.titech.ac.jp
	fukachan@exelion.phys.titech.ac.jp

は同じだが、

	fukachan@titech.ac.jp

は違うアドレスである。

Appendix A	クロスポスト

Appendix A.1	Introduction

クロスポストをした場合通常はＭＬすべてに流れてしまいます。ニュースシス
テムはニュースサーバがクロスポストを処理していますが、ＭＬサーバはそれ
ぞれ独立に動いているので、統一的にクロスポストを処理することができませ
ん。

これを解決する方法は２つです。

   1	サーバ間でプロトコルを決めてメールを渡しあい
	どれを配送したかしないか？を制御する。	

   2	サーバがのＭＬのサーバのメンバーリストを自前で持ち
	To: と Cc: を見て自分は誰の分を配送すればいいかを
	独立に定める。

1 は失敗した場合サイト間をまたいで無限ループする可能性があります。2 の
いいところはこれなら最悪でも全部のＭＬサーバが独立に流してしまうだけで、
今と同じです。そして間違いなくループ等は発生しないというところです。
基本方針として「最悪のケースを常に想定する」ので、実装として２を選択し
ます。

メンバーリストさえあれば fml そのものでなくてもクロスポストはサポート
できます。fml でないサーバは単に流してしまうだけですが。また、あらかじ
めお互いのメンバーリストを知らないといけないので未知のＭＬ間とのクロス
ポストは作動しません。そもそも”あるアドレス”を見た時にそれがＭＬなの
か個人なのか見わける手段はないわけですが:-)

Appendix A.2	クロスポスト判定アルゴリズム

a, b, c というＭＬがあるとしましょう。	

	To:	a, b
	Cc:	c

というヘッダを持つメールが来たとします。この場合ある人 aoi@chan.panic 
に送る時次のようにチェックをします。

	a の配送リストに aoi@chan.panic はいるか？
	b の配送リストに aoi@chan.panic はいるか？
	c の配送リストに aoi@chan.panic はいるか？	
	…これ以上あれば、以下同様のループ…

FMLは最初に見つかったＭＬへ配送します。例えば a にあれば a で、a には
いなくて b にいれば b です。

ポイントは、このプロセスを全部のＭＬサーバが独立に実行するところです。
そして

	○ あるアドレスが a にいる場合
	   a のＭＬが配送し、b と c のＭＬは配送しない

のように作動することで、複数のＭＬに入っていても一つのＭＬだけが配送さ
れます。

なお考えてみればわかりますが、ヘッダを配送先に合わせてそれぞれ変化させ
ることはできません(効率を無視すればできなくはないだろうが)。よって、
reply の仕方は

	1	各自の判断にまかせる
	2	Reply-To: を最初から出す人がつけてあげる

ということになります。（個人的には、クロスポストをする以上 ２ ぐらいま
で出す人が考えておくべきだとおもうのですが…）

Appendix A.3	Config.ph Configurations

クロスポストをサポートする場合は $USE_CROSSPOST をセットして下さい。

	$USE_CROSSPOST = 1;

こういうのは sitedef.ph あたりで定義するといいような気がしますね。その
マシンで動いてる全部のＭＬでクロスポストとかできないと嬉しくないでしょ
うから

Appendix A.4	クロスポスト情報設定ファイル @CROSSPOST_CF

設定ファイルには

	MailingListのAddress	Directory(config.phのある場所)
=
	ML Address		location of config.ph

を書いておきます。クロスポストするＭＬのうち 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 ?)を決定して、そのファイルを配
送リストのチェックに用います。そのためにこのデータベースが必要になるわ
けです。


		INDEX

$ADDR_CHECK_MAX                            ...   2.1 
crosspost                                  ...   Appendix A 
@CROSSPOST_CF                              ...   Appendix A.4 
$USE_CROSSPOST                             ...   Appendix A.3 
クロスポスト                               ...   Appendix A 
クロスポストの理論                         ...   Appendix A.2 
