[______TOC_______] [NEXT CHAPTER]
1 概要


*** まだまだ、整理途上です。 ***

ここは 内部構造について、fml 開発者向け情報の集積地です。旧 
fml/doc/smm/ の一番濃い部分がここに移されてきたと思ってもいいです。


1.1	ML Server Process Overview

MLサーバは本質的にフィルタリングをするものです。ML宛のメールが来た
ら配送プログラム(MTA)から起動されいろいろな処理をした後、配送するべき
(MLの)メンバーリストを配送プログラムへ渡します。後は配送プログラムが配
送を行ないます。つまり配送はMLサーバの役目ではありません。


[図]

あるホスト                                    MLサーバのマシン

MLのメンバーからのメール

   |
   V
  MTA (e.g. sendmail)  ------------------>     MTA (e.g. sendmail)

                                                |  kick off the ML server
                                                V

                                            MLサーバ(ドライバともいう)

                                                |  
                                                V

                                    MTA (e.g. sendmail)  配送プロセス

                                             |  |  |  |  |  |
                                             V  V  V  V  V  V

                                             MLのメンバー

配送プロセスは上図のように動きます。MLサーバが普通のメールではなくあ
る命令(MLを辞める、過去の記事を読むなど)を含んだメールをうけた場合は、
それ(コマンド)を実行してその結果をリクエストした人へ送り返します。

上図からわかるとおりML宛のメールが来た時だけMLサーバは起動されます。
つまり"不定期"にです。そのためリアルタイムにMLの記事(メール)を読みた
くない人、例えば3時間に一度過去3時間のメールをまとめて読む「まとめ送り」
の場合は"定期的に"まとめ送り(../digest 2.0)を実行するプログラムが起動さ
れる必要があります。FMLは定期的に起動しなければならないプログラム群は
cronというオペレーティングシステムが提供する機能を使っています。
../digest 2.17
../digest 2.17

1.2	Historical View

FML は Mailing List Server の package (Perl Scripts package) で、
僕が壱から Full Scratch したものです。
#おまけCDROMつき雑誌等にある「…の改良」の記述は間違った推測なのです

これからMLをはじめる方にはそのままMLサーバをカスタマイズして使いた
いとおもっている方には改造の PLATFORM として利用してもらうことを想定し
ています。


1.3	Policy

『Mailing List は Private Communication を便利にするツール(Filter) 』
という観点を重視しているため、デフォールトではメンバーのみが投稿やコマ
ンドを使える という考え方を尊重しています。

プログラムを使う以上は日々の routine work をいかに自動処理化できるか?
使いやすくできるか?が重要です。そのためにもユーザにみえるインターフェ
イスなどは様々なインターフェイスが提供されて好きなものを使うのが理想で
しょう。デフォールトは

	『投稿用のアドレス』と『コマンド用のアドレス』があり、
	それらのアドレスでMTA (e.g. sendmail)が受けて fml.pl を起動する


MLサーバというものは一番肝心な部分はかなり簡単なのですが、実際にはさ
まざまな例外処理が発生します。それをいかに封じ込めるかをノウハウという
わけです。またユーザー環境による違いを吸収するためにさまざまな関数をサ
ポートする必要がありました。例えば ish, lha サポートはその一例といえる
でしょう。


多くの変数があるのは、簡単にある変数の値を変えるだけで挙動が変えられる
ようにするためです。また、それにより設定を操作するためのインターフェイ
スを割と簡単に書くことができます。例えば makefml です。makefml を使っ
てのインストールや簡単な設定の変更が可能です(ある程度以上複雑なことは
手でやって下さい)。また頑張ればWWWインターフェイスもすぐ書けるでしょう
(でも誰も作らないな:-)。


1.4	機能の概要


MLサーバの現在の代表的な機能は以下のようなものです。

   ○ 配送用のアドレスとコマンド用のアドレス 
	-- Chapter ../how_to_subscribe 6.1

	それぞれについてアクセス制御や自動登録の設定
	なお特別な場合「配送用のアドレス==コマンド用のアドレス」は hml 1.6

   ○ 様々な自動登録方式
	-- Chapter ../how_to_subscribe 4.0

	前述のどのアドレスで? x 4種類 x 各カスタマイズ変数…

   ○ unsubscribe confirmation

	confirmation を bye/unsubscribe コマンドでも使用可能に

   ○ リモートメインテナンス/リモート管理
	-- Chapter ../remote_control 4.0

	PGP, パスワード認証等の選択
	-- Chapter ../encryption 4.0

   ○ 様々なヘッダカスタマイズ
	-- Chapter ../header_rewrite 5.0

   ○ セキュリティ: 内蔵トラフィックモニタ (e.g. メール爆弾対策)
	-- Chapter ../resource_control 2.0

	例: トラフィックがある程度以上になると
	MLはメールを自動的に受け付けなくなる

   ○ セキュリティ: フィルタリングコード (e.g. SPAM 対策)
	-- Chapter ../filter 4.1

	ヘッダの各フィールドごとのフィルタリングコード

   ○ 様々なコマンド
	-- Chapter 5.0

	ファイル取り寄せのコマンド mget コマンドのいろいろなファイル形
	式のサポート

   ○ まとめおくり
	-- Chapter ../digest 2.0

   ○ SMTP配送方式(リレー)
	-- Chapter ../smtp 3.1

   ○ その他(MIME処理等)
	-- Chapter ../Japanese 2.0

   ○ MLに投稿された記事をHTML 4.0形式で作成する。thread化もする。
	-- Chapter ../html_convert 1.1 ../html_convert 1.0

   ○ 記事のアーカイブ、Expire等
	-- Chapter ../daily 3.0 ../daily 5.0

   ○ 複数のコマンドインターフェイス (listserv や majordomo style)
	みかけがあたかも listserv のようなコマンドの送り方を可能にする
	-- Chapter ../utility_programs 3.0

必要に応じて設定ファイルで機能の追加・削減を行うことができます。
簡単なものは makefml で可能です。

1.5	インストール

とりあえず細かいチューニングを行なわなくてよいなら

	make install


ことで、インストールをします。ML の作成は

	perl makefml newml MLの名前

で何個でも作れます。説明は INSTALL というファイルを見て下さい。


[______TOC_______] [NEXT CHAPTER]