[______TOC_______]
[NEXT CHAPTER]
1 概要
*** まだまだ、整理途上です。 ***
ここは 内部構造について、fml 開発者向け情報の集積地です。旧
fml/doc/smm/ の一番濃い部分がここに移されてきたと思ってもいいです。
-- MLサーバの設計ポリシーとはなんだろうか…
・日々の routine work をいかに自動処理化できるか?
・可能な限り user および ML管理者 にとっての自由度をあげる
・デフォールトは単に配送とユーザ用のコマンド(help や記事の取り
寄せ、配送先の変更/停止等)
・しかしそれ以外の様々な機能もひととおり準備されていると便利
これらの高度な設定は管理者が明示的に設定しなければならない。
というのは管理者は何をしているのか知っているべきだし、
何をしているかの把握はセキュリティ的にも望ましい。
………
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 として利用してもらうことを想定し
ています。
最初の発端は(フリーソフトの例にもれず)
bug っているサーバ、
機能の足りないサーバ、
直すより自分で書いた方が早い
単にそういう話でした(ま、よくある話ですね:-)。
歴史的に hml 1.6 を一時期使っていて、その設定ファイルをコンバートする
のは面倒でした。そのためhml 1.6 を emulation するように設定することも
できます。
1.3 Policy
『Mailing List は Private Communication を便利にするツール(Filter) 』
という観点を重視しているため、デフォールトではメンバーのみが投稿やコマ
ンドを使える という考え方を尊重しています。
プログラムを使う以上は日々の routine work をいかに自動処理化できるか?
使いやすくできるか?が重要です。そのためにもユーザにみえるインターフェ
イスなどは様々なインターフェイスが提供されて好きなものを使うのが理想で
しょう。デフォールトは
『投稿用のアドレス』と『コマンド用のアドレス』があり、
それらのアドレスでMTA (e.g. sendmail)が受けて fml.pl を起動する
という形態です。しかし『可能な限り user および ML管理者 にとっての自
由度をあげる(簡単に設定できる自由度をできるだけ確保するべき)』という理
想も追求したいところです。その結果として
・設定ファイルには sendmail.cf なみに様々な変数が定義されている
のを筆頭に
・コマンド用のアドレスは listserv(majordomo) スタイルでも可能
・ sendmail が動いていなくても POP3 を使ってMLを実行する
等様々なインターフェイスがパッケージ中に収録されています。
MLサーバというものは一番肝心な部分はかなり簡単なのですが、実際にはさ
まざまな例外処理が発生します。それをいかに封じ込めるかをノウハウという
わけです。またユーザー環境による違いを吸収するためにさまざまな関数をサ
ポートする必要がありました。例えば ish, lha サポートはその一例といえる
でしょう。
一方セキュリティ的には
・必要なことはしても、できるだけ何もしない
・機能の増加は簡単な configuration で、しかし明示的に指定しない限り
よきにはからって動くべきではない
といえます。これが
ある機能をONにする変数はあるが、明示的に指定しない限りONにはしない
つまりデフォールトでは様々な機能はOFFにされている。
ということの背景です。
多くの変数があるのは、簡単にある変数の値を変えるだけで挙動が変えられる
ようにするためです。また、それにより設定を操作するためのインターフェイ
スを割と簡単に書くことができます。例えば makefml です。makefml を使っ
てのインストールや簡単な設定の変更が可能です(ある程度以上複雑なことは
手でやって下さい)。また頑張ればWWWインターフェイスもすぐ書けるでしょう
(でも誰も作らないな:-)。
各種機能はそれぞれの目的に応じて選んでみて下さい。例えば『あるMLのロー
カルな再配送』のような場合はコマンド機能を落して使うべきでしょう。
例: ip-connection を受けるアドレス (include ファイルを呼び出すアドレス)
に使う時は、makefml config listname で 配送モード指定を「誰でもPOST可
能」にする。
$PERMIT_POST_FROM = "anyone";
1.4 機能の概要
MLサーバはおおまかに
設定ファイル(config.ph)の変数
_____________________________________________________
配送用のアドレス $MAIL_LIST
コマンド用のアドレス $CONTROL_ADDRESS
からなります。特別な場合には(歴史的理由により) hml 1.6 (正確にはその元
祖の shell script) というサーバを Emulate します。特別な場合とは
配送用のアドレス==コマンド用のアドレス
($MAIL_LIST == $CONTROL_ADDRESS)
に相当します。
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]