		STATUS: fml-devel で現在できること/できないこと
		Last Modified: $Date$ (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] ＭＬサーバの理論をかく


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

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

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

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

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

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

	[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 の見本を作っています。

	* バーチャルドメインの扱い

		makefml newml elena@nuinui.net

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

	注意:	nuinui.net 用のディレクトリの指定が必要です。
		main.cf の virtual_maps で、ファイルを指定して下さい。

			virtual_maps = /etc/fml/virtual

		このファイルの書式は『ドメイン ディレクトリ』です。


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

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

	[TODO]	pop based ML
	[TODO]	imap based ML
	[TODO]	sendmail


7章　アップグレード

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

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

	[TODO] メールサーバの停止？
	[TODO] elena ＭＬのアップグレード？
		ＭＬ固有のアップグレード 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 
	という２つの変数で定義されています。後者は 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:: クラスの
	コマンドすべてです。

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

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

		use_article_digest_function = yes / no

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

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

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

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

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


	[TODO]	rmml したＭＬをふっかつさせることは？ → 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の設定ファイルを変更する

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

	各ＭＬの設定変更方法
		各ＭＬのホームディレクトリにある 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 アドレス制限などかけてね

	階層化されたＭＬ:
		 $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 は fml8 で、登録作業は makefml コマンドで

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

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

	[TODO] モデレータ 

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

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

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

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

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


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章　トラフィックを制限する（メール爆弾対策）

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

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


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

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

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

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

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

	[TODO] 非対称鍵暗号認証


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

	[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が出来るが、これらも選択できるほうが
		良いかも#２万通以上のMLがあるとallは不要と思えてくる...

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



21章　まとめ送り

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

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


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

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


V部　その他のトピック

26章　日々の運用について

	スプールは真っ平ら or 一階層構造のどちらでもとれます。
	一階層構造がお薦めです。

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

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

	自分が出したメールは
		var/mail/outgoing/ 以下に保存します。

	ログファイルへの 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
	[TODO] 「このＭＬはもうありません」オプション

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


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

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

	[TODO] アルゴリズムを選択可能にする
	[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

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


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.33 2003/11/30 04:45:00 fukachan Exp $
