STATUS: fml-devel で現在できること/できないこと
		Last Modified: $Date: 2004/06/25 04:11:36 $ (GMT)

	* このドキュメントは"fml bible" の目次に沿って何ができて何がま
	  だできないかをリストアップしたものです。

○ 動作実績
	perl 5.6.1   on NetBSD 1.5.x (1.5 stable)		*
	perl 5.6.1   on NetBSD 1.6				*
	perl 5.00503 on FreeBSD 4.3 STABLE
	perl ?       on FreeBSD 4.6 RELEASE
	perl 5.00503 on FreeBSD 4.7 RELEASE-p3
	perl 5.00503 on FreeBSD 4.6.2 RELEASE			*
	perl 5.6.1   on FreeBSD 5.2.1
	perl 5.6.1   on Turbolinux Server 8 (qmail)		*
	perl 5.6.1   on Redhat Linux 7.2 (postfix)		*
	perl 5.00503 on Redhat Linux 6.2 (sendmail8.11.6)	*
			smrsh はリンク張る必要はあります。

	postfix       + perl 5.6.1 on Solaris 7			*
	postfix 2.0.3 + perl 5.6.1 on Solaris 9			*

		[注意]
		  * 新 installer がうまく動いている OS 
		 () テスト中

3章
	[TODO] MLサーバの理論をかく


II部 fmlのセットアップ〜MLの作成

4章 Unix上でのfmlのインストール

	ユーザ root になり、configure そして make です。
	つまり典型的なインストール手順を行なって下さい。
		# ./configure
		# make install

	fml プロセスのユーザや使用するディレクトリは
	configure のオプションで変更可能です。

	* メールサーバの設定は 4.0 の場合と同様です。

	注意: ユーザ fml を作るだけでなく、きちんとユーザ fml さんの
	      ホームディレクトリも作って下さい。

	パッケージ作成者のかたへ: 
		fml8 一式を / 以外の場所へインストールする際は、
		以下のように install_root でディレクトリを指定して下さい。
		# make install install_root=/tmp/dir
	
	[TODO] sendmail + smtpfeed
	[TODO] MacOS X Server


5章 Unix上でMLを作る

	"makefml newml elena" を使って下さい。
	つまり fml 4 と使い方は一緒です。
	ただし fml-devel では newml 時に設定用 CGI や、HTML 化された記事
	をおくディレクトリ ~fml/public_html/ .. を用意する点が異なります。

	[TODO] sendmail + smtpfeed
	[TODO] MacOS X Server

	* postfix と qmail、および sendmail procmail の見本を作っています。

	* バーチャルドメインの扱い
		まず nuinui.net 用のディレクトリの指定が必要です。

		% makefml newdomain nuinui.net ディレクトリ

	newml のさいには

		% makefml newml elena@nuinui.net

	のようにドメインつきの名前を指定して下さい。

	注意:	main.cf の virtual_maps は obsolete で、
		ml_home_prefix_maps になりました。
		ml_home_prefix_maps が virtual_maps を含んでいるので
		virtual_maps も一応つかえます。


6章 Windows 2000/NT4上でのfmlのインストール

	[TODO]	Microsoft ものは全然手をつけていません。
	[TODO]	Microsoft ものは IMail から手をつけるのがいいんじゃないかな

	[TODO]	pop based ML
	[TODO]	imap based ML
	[TODO]	sendmail (NT版)


7章 アップグレード

	もう一度インストールをし、/etc/fml/main.cf の fml_version を編
	集するだけです。main.cf の編集をするだけでアップグレードもダウ
	ングレードも思いのままです。

	★ レシピ のアップグレードの節を見てね

	[TODO] メールサーバの停止?
	[TODO] elena MLのアップグレード?
		ML固有のアップグレード tips なんてあるかな


8章 Unix上でのCGIのセットアップ

	デフォルトで CGI スクリプトが用意されます。

	[TODO] .htaccess の設定支援ツールがまだありません。
		エディタでファイルを消すなり、編集するなりして下さい。

	CGI からのエラーは __ERROR_.(キーワード)__ で croak() してる

	[TODO] config 

	[TODO] $maintainer のリストを CGI から設定したい

	[TODO]	cgi のスタイルシート対応
		文字を小さくした方がいいとか…の類。
		#だれか、やってぇ〜 ;)


9章 fmlの動作確認

	これは fml 4.0 とほぼ同様の感じ。


III部 fmlのカスタマイズ
10章 MLのメンバーができること

	コマンドメールで利用可能なコマンドは
		$user_command_mail_allowed_commands
		$anonymous_command_mail_allowed_commands 
	という2つの変数で定義されています。後者は guide や subscribe
	など、メンバーでなくても使えないといけないコマンドのリストです。

	一般ユーザ向けのコマンドの例 ($user_command_mail_allowed_commands)
		help get mget get mget send subscribe add unsubscribe
		bye remove resign signoff chaddr confirm guide info
		objective summary

	誰でも使えるコマンドの例 ($anonymous_command_mail_allowed_commands)
		guide info add subscribe chaddr confirm

	*これらは FML::Command::User:: クラスで定義されています。

	[TODO] get: ファイル数が多い場合、分割して送返(fml-devel 485)
		reply_message() によろしくねーとしかしてないので、
		メールキューに入れる時に分割?

11章 fml管理者ができること

	makefml で操作可能な項目は FML::Command::Admin:: クラスの
	コマンドすべてです。

		MLの作成			OK
		MLの削除			OK
		MLのメンバーの登録と削除	OK
		登録しているアドレスの変更	OK
		off/on				OK

	簡単なまとめおくりはできます。

		use_article_digest_function = yes / no

		により使う/使わないが指定できます(yes by default)。

	[TODO]	まとめおくり (fml 4 のような複雑なバージョン)

	[TODO]	リモート管理
			現在パスワード認証だけできます。
			その他の認証方式は未実装

	[TODO]	MLのカスタマイズはファイルの編集あるのみ

		注意: 当然リモートコマンドより、いろいろなことができます。


	[TODO]	rmml したMLをふっかつさせることは? → renew コマンドだ

		一番日付が最近の @xxx.yyyymmdd を探して、そこから戻す。

		だが、

		aliases を復活させる問題があるので、もう一度 newml
		もする必要があるだろう… うむ、renew をつくろう


	[TODO]	期限つき subscribe

		subscribe -> 一カ月すると削除される?

			FML::User::Info -> FML::User::DB	ok

		o.k. so, how to kick off removal process ?


	[TODO]	期限つき newml

		libexec/faker
			時刻を FML::User::DB でどっかに記録
				shared_db_dir/ml_create_time
				
		いや、うむをいわさず、newml コマンドでごーでいいのかな?
			
		/etc/postfix/virtual
		   @nuinui.net       faker=nuinui.net

		/etc/mail/aliases
		   faker=nuinui.net  :include:/ml/nuinui.net/@@faker@@/include


12章 fmlの設定ファイルを変更する

	すべてのMLに同じ設定を強制する (fml4 の site_force.ph)
		/etc/fml/site_default_config.cf

	各MLの設定変更方法
		各MLのホームディレクトリにある config.cf を編集して
		ください。

	[TODO] メニューでの操作  (未実装)
		設定支援ツールはまだありません。

	[TODO]	fml4 の site_init.ph にあたるものは?

		って必要なのかなぁ…???


13章 MLのスタイルのカスタマイズ (ケーススタディ)

	投稿の制御: $article_post_restrictions で制御
		
	コマンドメールの制御: $command_mail_restrictions で制御

	コマンドメールの禁止:
		$use_command_mail_function を no にすると
		コマンドメールの機能自体を停止できる。

		$command_mail_restrictions で reject とだけ指定するも可。

	誰でも投稿可能:
		$article_post_restrictions で permit_anyone

	メールマガジン型:
		$member_maps から $primary_member_map をはずす
		$member_maps に投稿可能なメンバーのリストを追加
		さらに MTA の設定で IP アドレス制限などかけてね

	階層化されたML:
		 $member_maps $recipient_maps をよろしく書く

	procmail:
		4.0 と同様だ。
		makefml newml が見本を作るので参考にしてね。

	[TODO] デフォルトのポリシーの説明 (D)C

	[TODO] 自動とか手動登録とかをどこで指定するの?

		うーん、コマンドごとに指定できるようにしないとか?

		$subscribe_command_mode	=	auto / manual
		$chaddr_command_mode	=	auto / manual
		$unsubscribe_command_mode =	auto / manual

	[TODO] 自動登録の confirmation 以外のモード 

		今はデフォルトで自動登録ですわ :-)
		まだ confirmation タイプしかありません。

	[TODO] コマンドメール(の手動登録モード)

		confirmation は fml8 で、登録作業は makefml コマンドで

	[TODO] モデレータ 

		moderator_*_map だけ定義がある。定義があるだけ;)

	[TODO] 複数の管理者による運用

	[TODO] 登録と削除をまとめておこなう

	[TODO] listserv 風のコマンドアドレス

	[TODO] qmail-ext によるコマンド

	[削除] ML本体でコマンドメールも受けられる機能


14章 ヘッダの書き換え

	FML::Header とフックを使えばできます。
	多くのヘッダ操作は FML::Header クラスの提供するアクセスメソッ
	ドになっています。

	[TODO] RFC 3282 (Content Language Headers) を考慮する


15章 fmlの返すメッセージをカスタマイズする

	/usr/local/share/fml/$fml_version/message/$charset/
	にあります。

	Accept-Language: X-Accept-Language: Content-Type: 
	などを見て、返すメッセージの言語を決めています。
	曖昧な時は複数言語で返します(mime/multipartになります)。

	[TODO] site local のディレクトリを決める
		/etc/fml/ 以下?
		site_local/ ?
		$domain/ ?

	Q: ML LOCAL なメッセージの変更は?

		例えば、文字コードが euc-jp のメッセージ・テンプレートは

			$ml_home_dir/local/share/message/euc-jp/
	
		に置くとそちらが優先される


16章 記事のフィルタリング

	実装済み (FML::Filter クラス)
		ヘッダフィルタ
		本文に対するフィルタ
		text/plain に対するフィルタ
		MIME 構造に基づくフィルタ
		その他
			特殊なウィルスなども含む

	4.0 の ContertFilter 相当機能は mime_component_filter です。
		ファイル名は	/etc/fml/mime_component_filter
		デフォルト値は  /etc/fml/mime_component_filter

	[TODO] 統計をとりたい(どのルールにどのくらい引っかかったか?)
		
	[TODO] 統計を見せるコマンド(必要?)

	[TODO] 統計のためのデータベース

	[TODO] フィルタの拡張機能? content-type が正しいかどうかを調べる

		Q: content-type が正しいかどうかを調べる
			image/gif なら本当に gif ?

		A: ん〜全部は無理だなぁ。File::なんとかで、
		   ファイルのタイプを識別するモジュールとかあれば OK 
		   なのかもしれず(?)

		Q: まだ、text/plain 部分は言語依存パートになってない(?)

			だいたい言語依存とかいうなら virus checker を
			切り離せよ > おれ

			など、てんこもりなので、text_plain_filter って
			ちょっと整理が大変だなと。

		Q: 古いメールは SPAM に違いない


17章 トラフィックを制限する(メール爆弾対策)

	コマンドメールで、コマンドごとのリクエスト数制限は実装されている。

	ML全体で同じデータベースを使う。
		下準備はしてある → UDB 
	
	[TODO] トラフィックフィルタ自体は未実装


18章 リモート管理(メールでfmlを操作する)

	管理者がコマンドメールで使える特権コマンドつまり admin コマン
	ドは $admin_command_mail_allowed_commands という変数で定義
	されているものが利用可能です。

	利用可能なコマンドは FML::Command::Admin:: クラスの部分集合です

	etc/passwd-admin
		fml4 の etc/passwd は fml8 の etc/passwd-admin です。
		フォーマットが微妙に違います(拡張されている)
		操作ツール、コマンドは fml4 と同じです。

	[DONE] 共通鍵暗号認証

	[TODO] 公開鍵暗号認証

	[TODO] "approve パスワード コマンド"型構文サポート


19章 MLの暗号化 (配送時の暗号化)

	[TODO] 配送時の暗号化 共通鍵暗号認証 ???

	[TODO] 配送時の暗号化 公開鍵暗号認証


20章 MLの記事をWWWで公開する

	デフォルトで作ることになっています。デフォルトでは

		~fml/public_html/fml/mlarchive/$domain/$ml_name/

	というディレクトリに作ります。このまま作るなり、適宜
	alias を切るなりして使うとよいでしょう。

	[TODO] permission はこれでいい?

	[TODO]	Mail::Message::ToHTML
		X-Sequence: fml-devel 515

		2) indexの要、不要について

		現状ではall,monthly,threadが出来るが、これらも選択できるほうが
		良いかも#2万通以上のMLがあるとallは不要と思えてくる...

		3) thread.htmlの月別の作成&出来れば逆順のもの



21章 まとめ送り

	簡易版のまとめおくりはサポートされている。

	[TODO] fml 4 のような粒度の細かなまとめ送り


IV部 トラブルシューティング

	[TODO] トラブルシューティング事例を集める


V部 その他のトピック

26章 日々の運用について

	スプールは真っ平ら or 一階層構造のどちらでもとれます。
	何万通も流れそうなMLでは一階層構造がお薦めです。
	デフォルトは fml4 との互換性のため、まったいらです。

	デバッグのためにメールを一定量つねに保存しています。
	これは記事の保存とは別の仕組みで、全プロセスの入出力の記録です。

	   受けとったメールをすべて保存する。
		var/mail/incoming/ 以下に保存します。
		fml4 と異なり保存がデフォルトの挙動です。

	   出ていくメールを保存する。
		var/mail/outgoing/ 以下に保存します。
		fml4 と異なり保存がデフォルトの挙動です。

	ログファイルへの newsyslog (fml4 の $LOGFILE_NEWSYSLOG_LIMIT)
		use_log_rotate = yes

		log_rotate_size = バイト数

	[削除]	var/log/_smtplog.数字ではなくなりました。

	[TODO] スプールの圧縮
	[TODO] スプールを tar などにまとめる (mode_archive)
	[TODO] スプールの expire (mode_expire)
	[TODO] 設定ファイルなどの RCS 管理
	[TODO] 設定ファイルなどの CVS 管理
	[TODO] log suffix extension: log.YYYYMMDD とかは?

	[TODO] 「このMLはもうありません」オプション

		libexec/ の下の全部のプログラム全部が対応して、
		ml や ml-ctl 宛に来たメールにみんな返事を返すべきだ。
		ただし、negative cache つきで(同じアドレスには一回し
		か返事をしない)。コマンドじゃなくて変数でしょうねぇ。
		デフォルトでは off (SPAM 対策)。


27章 エラーメールを自動解析する

	Mail::Bounce モジュールを使う。
	自動削除も可能。

	[TODO] カスタマイズを可能にする
	[TODO] カスタマイズされたモジュールの置き場所
	[TODO] エラーメールのフォワードについて改良 (fml-devel 451)

		maintainer_recipient_maps は実装済み
		デフォルトは未定義、フォワーディングはしない

		+(ヘッダ情報+そのエラーメールのアドレスの分析レポー
		ト)とかなんか付けると便利?


28章 メールサーバの変更/引越し

	手間は 4.0 とほとんど同じかな


29章 バーチャルドメイン

	デフォルトで考えてある。


VI部 fmlの内部構造と機能拡張

30章 変数と関数

	変数一覧は常に更新されている。fml8 チュートリアルを参照。


31章 リストファイルのフォーマット

	fml8 チュートリアルを参照。


32章 fml.plプロセスの動作

	[TODO] 汎用エラートラップフレームワーク
		CGI も含めて汎用のフレームワークがほしい

		エラーをどのように呼びだし側へ組織的に伝えるか?

		$curproc->error_regist( { キー => オブジェクト } );
		croak(エラーのキー);

		? 必要な場所すべてに $curproc ってのが難しそう?

		エラーをどのように呼びだし側へ組織的に伝えるか?
		オブジェクトか HASH_REF ごとわたせないか?


33章 デバッグをする

	モジュール単位で $debug という変数がある場合がある。
	デバッグの時はモジュールを直接書き換えるしかないけど

	デバッグ用のディレクトリを作って main.cf で制御してもよいね


34章 コマンドメールのカスタマイズ

	Q: カスタマイズされたモジュールを置く場所は?

	$ml_home_dir の下に local/lib ってのがある、その下におく

	例: $ml_home_dir/local/lib/FML/Command/User/help.pm

		を作ると、そのML独自のヘルプコマンドとなる


35章 ケーススタディ:HOOKによる拡張

	[レシピ] subject: によってフォワード先を変えられる?


VII部 Advanced Study

36章 fmlからデータベースへのアクセス

	はじめから前提です。
		IO::Adapter に組み込まれている

	[削除] replace メソッドは削除した

	[TODO] PostgreSQL 対応


37章 配送の高速化について (+ 配送関係の TIPS )

	[レシピ] フォワードする関数
		multipart ということではなく、いきなり曲げる
		宛先を変えるということか?

	[TODO] 配送ルーチンが自動分割を頑張るオプション
		reply_message() の先?
		それって、メール爆撃するあれか? ;) 
		text/plain を適当に切ると読めないような気がするが…

	[TODO] Mail::Delivery の LMTP モード

	[TODO] outgoing address hack
		SPAM 対策についてドキュメントを書く

	[TODO] execute $program on the disk NOT IPC.


38章 試論:現代的サーバデザインについて
VIII部 付録
付録D virus_check.phの例


        ********* ********* ********* ********* ********* ********* 
	いまひとつ分類できないかな?

* スケジューラ
	alarm() によるスケジューラ
	queue manager for LMTP ? 


        ********* ********* ********* ********* ********* ********* 
	fml-devel 固有の TODO




---
$FML: STATUS.txt,v 1.36 2004/06/25 04:11:36 fukachan Exp $