STATUS: fml8 で現在できること/できないこと
		Last Modified: $Date: 2011/08/24 22:54:49 $ (GMT)

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

○ 動作実績
	perl 5.10.0  on NetBSD 2.0.2				*
	perl 5.10.0  on NetBSD 2.0				*
	perl 5.8.8   on NetBSD 2.0.2				
	perl 5.8.5   on NetBSD 2.0				*
	perl 5.6.1   on NetBSD 2.0				*
	perl 5.6.1   on NetBSD 1.6				*
	perl 5.6.1   on NetBSD 1.5.x (1.5 stable)		*
	perl 5.6.1   on FreeBSD 5.2.1
	perl 5.00503 on FreeBSD 4.6.2 RELEASE			*
	perl 5.00503 on FreeBSD 4.7 RELEASE-p3
	perl ?       on FreeBSD 4.6 RELEASE
	perl 5.00503 on FreeBSD 4.3 STABLE
	perl 5.10.1  on Ubuntu 10.04 LTS			*  
	perl 5.10.1  on Scientific Linux 6			*
	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 install を実行」です。
	つまりフリーソフトウエアの典型的なインストール手順を行なって下さい。
		# ./configure
		# make install

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

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

	ユーザ fml を作るだけでなく、きちんとユーザ fml さんのホームディ
	レクトリも作って下さい。というのは ~fml/public_html でMLの公
	開をする、CGIを動かすというのがデフォルトの設定だからです。

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

	[TODO] MacOS X Server の場合のセットアップ方法


5章 Unix上でMLを作る

	makefmlコマンドを使って"makefml newml elena" などと実行します。
	つまり fml 4 と使い方は一緒です。

	ML作成時には postfix と qmail、sendmail、procmail の設定見本
	を作ります。

	[TODO] sendmail + smtpfeed の場合
	[TODO] MacOS X Server の場合

	なお fml8 では newml 時に設定用 CGI や、HTML 化された記事をお
	くディレクトリ ~fml/public_html/ .. なども作成します。

	バーチャルドメインの扱いは fml4 と異なりバーチャルドメインを含
	めて統一化した使い勝手となっています。なので、全てのMLをバー
	チャルドメインとして扱う方が便利だと思います。

	たとえば nuinui.net を例にとります。まず最初に 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]	sendmail (NT版)を使ったML

	[TODO]	IMAP4 でメールをダウンロードして fml を実行する。

	[DONE]	POP3  でメールをダウンロードして fml を実行する。

	なお fetchfml (POP/IMAP サーバからメールを取り出す MTA + MLエ
	ミュレーション)により、メールサーバを立ち上げなくとも自宅でM
	Lを実行すると行ったことが可能です。→ fetchfml の項目を検索

	POP によるMLの実行は実装済みですが、IMAP 版は未実装です。
		→ fetchfml の項目を検索


7章 fml8 のアップグレード

	もう一度 fml8 をインストールをし、/usr/local/etc/fml/main.cf の 
	fml_version を編集してください。これだけで任意のバージョンへの
	アップグレードとダウングレードが可能です。つまり main.cf の編
	集をするだけでアップグレードもダウングレードも思いのままです。
	システムコール一発、数ミリ秒で。

	main.cf の編集だけですので、fml8 のアップグレード/ダウングレー
	ドの際にメールサーバの停止は不要です。

	ML固有のアップグレードに関する注意はないとおもいます。
	さすがに特定のMLだけアップグレード/ダウングレードという方法
	はありません。


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

	ML作成時にデフォルトで CGI スクリプトが用意されます。
	# 別途 WWW サーバの設定(CGI および認証の設定)は必要です。

	*注意*
	(1) そもそも WWW サーバのデフォルト設定では
	     ~fml/cgi-bin が使えないはずです。

	(2) ML作成時に、無効の .htaccess を生成して、デフォルトでは 
	    CGI が動作できないようにしてあります。

	[TODO] apache の設定見本を生成

	[TODO] .htaccess の設定支援ツール

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

	[TODO] config 

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

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

	[TODO] エラーフレームワーク
		CGI からのエラーは __ERROR_.(キーワード)__ で croak() 
		していますが、もう少し良いフレームワークがあるとよいです。

	[TODO] 本当に必要? anonymous CGI: IP を監視
		失敗したら exponential back off 
	
	[TODO] 本当に必要? anonymous CGI: 失敗したら exponential back off 
		IP にかかわらず back off
		source IP は参考にならないから



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::コマンド」クラスで定義されています。
	fml8 ではコマンドごとに異なるファイルになります。特定のコマン
	ドだけ改造することが容易になりました。

	リモート管理のためのコマンドは別のクラスになっています。
	利用可能なコマンドリストは $admin_command_mail_allowed_commands で、
	モジュールの実体は「FML::Command::Admin::コマンド」にあります。

	なお、簡単なまとめおくりも可能です。

		use_article_digest_function = yes / no

	により使う/使わないが指定できます(デフォルトは yes)。

	まとめおくりは MIME/Multipart のみサポートしています。
	複数の OS 環境を前提とした世界で MIME/Multipart 以外を使うのは
	非現実的なので MIME/Multipart のみサポートするつもりです。

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

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

	CUI つまりコマンドラインでの操作について:

	makefml で操作可能な項目は「FML::Command::Admin::コマンド」ク
	ラスで用意されているコマンドすべてです。
	$admin_command_mail_allowed_commands は
	コマンドメールによるリモート管理に制限を加えますが、CUI
	(makefml/fml)の動作には制限を加えていません。

	つまり CUI によるMLサーバ上での操作ではリモートコマンドより、
	いろいろな操作が可能です。操作できる自由度は 

		CUI (makefml/fml コマンド) > コマンドメール > GUI

	の順に大きなものとなっています。

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

	コマンド一覧: add add2active add2actives add2member
	add2members add2recipient add2recipients addactive addactives
	addadmin addmember addmembers addmoderator addpriv
	addrecipient addrecipients adduser adminadd admindel bye
	byeadmin byepriv chaddr changepassword check chpass config
	deladmin delmoderator deluser digest digestoff digeston dir
	edit error file flush flushq get htmlify initpass list log ls
	mailq mergeml mget moderatoradd moderatordel newdomain newml
	off on pass passwd password remove resign rmdomain rmml
	signoff spool subscribe summary thread unsubscribe useradd userdel

	MLのカスタマイズはファイルの編集かメニュー操作(CUI/GUI)です。
	メニューは実装途中です。

	リモート管理は現在パスワード認証とPGP認証が利用可能です。

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

		MIME/Multipart のまとめおくりは実装されています。

		受信者ごとに時刻や圧縮形式を変えるといったことは出来ま
		せん。ただ fml 1 の設計された時代と環境が大きく異なる
		現代では、こんな仕様はオーバースペックで不要なのではな
		いかとも思います。

		そういうわけで間違いなく実装しないでしょう。

	[DONE]	rmml したMLを復活させる → reviveml コマンド

		1. 一番日付が最近の @xxx.yyyymmdd を探し
		2. それを元に戻し、
		3.もう一度 newml を実行し、aliases などの再設定を行なう。

		という動作をしています。

	[TODO]	期限つきのML入会 subscribe

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

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

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


	[DONE]	動的にMLを作成する → 「CREATE-ON-POST 機能」を参照

		ユーザが自由にMLを新規作成、メンバー追加が可能です。


	[TODO]	期限つきの自動ML作成

		動的にMLを作成(CREATE-ON-POST)し、
		使われなくなったら(トラフィックがないなら)自動削除


	[TODO]	期限つきのML作成

		トラフィックが無くなってN日したら削除?
		日にちで有無をいわさず削除?



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

	各MLの設定変更方法は、各MLのホームディレクトリにある 
	config.cf を編集してください。フォーマットは Postfix 風です。

		key = 	value

		key = 	value1
			value2	

		拡張オプションとして += や -= が使えます。

		key += value3

		key -= value1

	/usr/local/etc/fml/site_default_config.cf は、そのサーバの上で
	動いているすべてのMLに同じ設定を強制します。これは fml4 の 
	site_init.ph に相当するファイルです。

	メニューによる設定支援ツール(CUI/GUI)は実装途中です。まだ実験
	的なものしか動きません。

	[TODO]	fml4 の site_force.ph にあたるものはありません。必要?

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


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

	◎ 記事の投稿に対する制御

	投稿の制御は $article_post_restrictions で制御します。
	restrictions という名前から分かる通り Postfix 的な考え方の制御
	方法を採用しています。

	***重要な変更***
	2008/08/03 以降の fml8 では「SPAM メールの隔離」がデフォルトの
	動作です(デフォルトも reject を isolate に書き換えてました)。

	古い fml8 で restrictions を config.cf に書いている場合、
	書き直しが必要です。書いていないなら、アップグレードするだけで
	メールの隔離が動作するようになります。


	例: デフォルト (メンバーであれば投稿可能)

		article_post_restrictions =
				isolate_system_special_accounts
				permit_member_maps
				isolate

	例: PGP 電子署名で認証

		article_post_restrictions =
				isolate_system_special_accounts
				check_pgp_signature
				isolate

	例: 誰でも投稿可能

		article_post_restrictions = permit_anyone

	従来はルールにマッチしない場合 reject 命令で終っていました。
	これは、送信者に返事を出してしまいます。

	isolate 命令は、隔離するだけで返事を出しません。

	[TODO] 隔離レポートを管理者へ送信。

	[TODO] 隔離メールをMLに流す命令の実装

	[TODO] 隔離レポートで、メールをMLに流す操作はどうする?


	◎ コマンドメールに対する制御

	(一般ユーザからの)コマンドメールにたいする制限は
	$command_mail_restrictions で制御します。

	コマンドメールを禁止するには $use_command_mail_function を no 
	にすればよいです。これはコマンドメールの機能自体を停止します。
	コマンドメールを受けると受信はしますが、そのまま無視します。

	$command_mail_restrictions で reject とだけ指定してもコマンド
	メールの禁止になりますが、この場合コマンドメールの処理が行なわ
	れてしまいます。

	***重要な変更***
	2008/08/03 以降の fml8 では「SPAM メールの隔離」がデフォルトの
	動作です(デフォルトも reject を isolate に書き換えてました)。

	古い fml8 で restrictions を config.cf に書いている場合、
	書き直しが必要です。書いていないなら、アップグレードするだけで
	メールの隔離が動作するようになります。

	restrictionsと同様にメンバーリストも member_maps のように
	複数かけることが前提です。*_restrictions と *_maps の細かな定
	義を使うと特別な改造なしでもいろいろなことができます。

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

		投稿者を PGP 認証で制限するのもよいことです。

	例: 階層化されたML:
		 $member_maps $recipient_maps をよろしく書くだけです。

	例: procmail によるML
		makefml newml が見本を作るので、それを使うだけです。


	[DONE] 自動登録/手動登録をどこで指定するの?デフォルトは自動

		コマンドごとに指定できるようにする。

		$subscribe_command_operation_mode   = automatic / manual
		$chaddr_command_operation_mode      = automatic / manual
		$unsubscribe_command_operation_mode = automatic / manual

	[DONE] 自動登録の confirmation 以外のモードは必要か? 

		confirmation ではなくリクエストをそのまま
		管理者へフォワードするオプションあり。

		$subscribe_command_auth_type   = confirmation / manual
		$chaddr_command_auth_type      = confirmation / manual
		$unsubscribe_command_auth_type = confirmation / manual

	[DONE] コマンドメールによる手動登録

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

		設定例: subscribe を
		$subscribe_command_auth_type      = confirmation
		$subscribe_command_operation_mode = manual

	[DONE] モデレータ 

		fml4 のタイプ 2 だけ実装しましたが 1 と 3 は未実装

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

		$maintainer_recipient_maps を定義すれば、
		その管理者たちへ転送される。 

	[DONE] qmail-ext を使ったコマンド e.g ML-subscribe@DOMAIN 可能

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

	[TODO] 登録と削除をまとめておこなう (コマンド一つ+複数アドレス)

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



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] メッセージカスタマイズ設定の支援ツール


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

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

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

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


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

	[DONE] フィルタは実装済み (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 に違いない


	[TODO] 添付ファイルをサイズでチェック 本当に必要?

		mime component filter でこんな感じ?

		# allow only text/plain messages.
		text/plain	*		permit
		text/html	*		reject
		multipart/*	*;size<=1M	permit		<- ?
		multipart/*	!text/plain	reject


	[TODO]	mime component filter で添付ファイルを禁止する

		こんなかんじ?

		use_article_mime_component_filter       =       yes
		article_mime_component_filter_rules     = 	ファイル

		[ファイル]
		multipart/*	*;name=.*\.exe 	reject
		multipart/*	attachment	reject

		もしくは、こんなの?

		[config.cf]
		article_mime_component_filter_rules     = 	ファイル
							reject_attachment

		article_mime_component_filter_unsafe_attachments = exe



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

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

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

	[TODO]	そもそも必要か? トラフィックフィルタ
		fml 4.0 の MTI 相当品のこと。 
		単位時間あたりの投稿数を制限したい
		単位時間あたりのコマンドメール数を制限したい
		MTI のデータベースで dbmopen() 以外のものが使いたい
		MTI の結果を他のプログラムでも使いたい
		リモート管理者は MTI の対象にしない


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

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

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

	各MLのホームディレクトリ/etc/passwd-admin
		fml4 の etc/passwd は fml8 の etc/passwd-admin です。
		fml4 とはフォーマットが微妙に違います(拡張されている)
		操作ツールやコマンドの使い方は fml4 と同じです。

	[DONE] 共通鍵暗号認証

	[DONE] 公開鍵暗号認証 (電子署名が正しいなら認証OK)

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


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

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

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


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

	[DONE] 記事の 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章 まとめ送り

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

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


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

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


V部 その他のトピック

26章 日々の運用について

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

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

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

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

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

		log_rotate_size = バイト数

	[削除]	「var/log/_smtplog.数字」ファイルは無くなりました。

	[DONE] スプールの expire (mode_expire)

	[DONE] log suffix extension: log.YYYYMMDD とかは?

	[DONE] 古い記事の自動消去

		use_article_expire = yes (デフォルトは no)

		デフォルトのリミットは 90 日。	
		article_expire_limit = 90d

	[TODO] スプールの圧縮

	[TODO] スプールを tar などにまとめる (mode_archive)

	[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 とほとんど同じかな

	[TODO] fml8 への移行ログを残すこと。	


29章 バーチャルドメイン

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


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による拡張

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


VII部 Advanced Study

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

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

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

	[DONE] PostgreSQL 対応


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

	[削除] Mail::Delivery の LMTP モード 
		キュー管理しないといけない
		→ 無駄に難しいので不要では?

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

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

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

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


38章 試論:現代的サーバデザインについて

	「fml バイブル」を参照。


VIII部 付録

付録D virus_check.phの例


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

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


        ********* ********* ********* ********* ********* ********* 
	fml8 固有の TODO


------------------------------------------------------------
$FML: STATUS.txt,v 1.46 2011/08/24 22:54:49 tmu Exp $