# -*- mode:text coding:euc-jp *-*

  CHANGES in fml 7.98.x.

2018/08/14

   fml/doc/ja/tutorial/include/bookinfo.sgml
	+ perl 5.26.2 on NetBSD 7.0  [604501d]


2018/08/01

  fml8 monthly release 20180801
    master repository is moved to github.com/fmlorg.     
    modified tools and documents to reflect scm changes (cvs to github).

   CHANGES.txt
	fml8 monthly release 20180801: switch from cvs to git 
	github.com/fmlorg  [9d5c7a5]


	master repository switch from cvs to github.com/fmlorg. master 
	repository is moved from cvs.fml.org to github.com/fmlorg. modified 
	tools and documents to reflect scm changes (cvs to github).  [c6316ad]


   README.md
	the least description on fml8  [8e2c2ba]


   fml/bin/anoncvs
	obsolete due to scm changes (cvs to git(github))  [4abd871]


   fml/doc/ja/tutorial/devel/cvstree.sgml
	obsolete due to scm changes (cvs to git(github))  [3ff34d8]


   fml/doc/ja/tutorial/devel/repository.sgml
	repository descriptions, newly created due to scm changes (cvs to 
	git(github).  [291a147]


   fml/doc/ja/tutorial/install/download.sgml
	modified to catch up the scm changes (cvs to github).  [fb27f88]


   regress/simulation/Makefile
	modified to use git reflecting scm changes (cvs to github).  [64681a8]


2018/07/04

  master repository is moved to github.com/fmlorg.

2018/02/01

  fml8 monthly release 20180201

2018/01/13

  update CPAN modules
  	 updated to Crypt-RandPasswd 0.06
	 updated to Exporter-Lite    0.08
	 updated to Time-modules     2013.0912
	 updated to Unicode-Japanese 0.49
	 updated to File-MMagic	     1.30
	 updated to PathTools	     3.62 (File::Spec)
	 updated to MIME-Types	     2.14

2018/01/01

  fml8 monthly release 20180101
  
  fml8 season (monthly for a while) rollout campaign starts.
  
  update CPAN modules
  	 updated to MailTools-2.19.

2017/12/31

  updated to im-153.

2017/08/18

  apply patch to fix charset handling in Content-Type header
  Thanks to <mizuki@myokoo.jp>. 

2017/08/01

  fml.org servers are being currenty re-designed to implement github mirror.
   

2017/03/04

  fml-7.98.18-2015-08-15 snapshot is created as the further reference point.
  XXX used as a reference only.

2013/04/14

  fml/utils/bin/sgml_compile.sh
	inherit FML_DSL environmental variable if exists,
	enhanced to catch up www.fml.org framework changes.

2012/12/30
   FML::Process::Calendar
	catch up perl changes: defined(hashes and arrays) is
	deprecated, instead use a simple test for size:
	if (@an_array) { ... }

   FML::Process::ConfViewer
   FML::Process::DocViewer
	catch up perl changes: not length(@array), use "scalar @array"
	to find out how many elements these have. 

2012/12/13

  Mail::Delivery::SMTP
	catch up IO::Handle changes in Perl 5.16 to avoid a lot of
	warnings. see RT#66474
	https://rt.cpan.org/Public/Bug/Display.html?id=66474

2012/12/13

  HTML::EntitiesLite added to make HTML::FromText work.
	non-XS-ified HTML::Entities module derived from HTML::Parser
	3.69. HTML::FromText is modified to use it.

	HTML::EntitiesLite is enough for HTML::FromText since we can
	use only encode_entities() not decode_entities, which depends
	HTML::Parse XS engine.

2012/04/21

   Mail::Delivery::Net::INET6
	not duplicated loading of Socket related classes.

2012/04/15

   not use obsolete library.
	timelocal.pl and ctime.pl, which is removed in Perl 5.16
	release. switched to use Time::Local and Time::localtime. 

   import CPAN modules for HTML::FromText module:
	import Email-Find 0.10.
	import Exporter-Lite-0.02.

2012/02/25

   update CPAN modules successively:
	Unicode-Japanese         to 0.47.
	HTML-FromText            to 2.05.
	HTML-CalendarMonthSimple to 1.25.

2012/02/19

   update CPAN modules successively:
	Jcode       to 2.07.
	File-MMagic to 1.27.
	Socket6     to 0.23 (not used, holded in cpan/dist for reference).
	HTML-Template is removed since it is not used.
	Log-ErrLogger is removed since it is not used.
	Text-CSV      is removed since it is not used.
	Rcs           is removed since it is not used.
	VCS-CSV       is removed since it is not used.

2012/02/18

  update Time-modules to 2011.0517 (sync w/ pkgsrc/time/p5-Time-modules).

  bump up the FML_CURRENT_VERSION to 7.98.17
	to clarify the dependence among the version and modules.

2011/09/26

   FML::Config 
	include ErrorStatus module within it.
	remove "use ErrorStatus".
	
   FML::Credential 
	include ErrorStatus module within it.
	remove "use ErrorStatus".
	
   ErrorStatus
	modified to not use this top level package. remove this.

2011/08/25	

   Mail::Message::Encode 
	bugfix quoted-printable pattern at decode_mime_utf8_to_euc().

2010/11/28
	
   FML::Install 
	fix vendor expansion bug (bug fix previous commit).
	
	***important changes***
	do not overwrite file in installation. changes for the further
	enhancement, e.g. in other softowares. Actually, the current
	fml installation does not chanes since the file::directory
	names do not conflict. 
	
2010/11/09

   bump up to the version 7.98.16.

   FML::Install
	enhanced to try to install all files in all vendors,
	which is useful for 3rd party.

2010/03/06

   FML::Process::Distribute 
	seems incorrect that increment_id() in calling HTML-ify
	function since already the article ID is incremated at _
	deliver_article_prep(). changed to use $article->id(); by
	fetching the current article ID.

2010/03/01

   bump up to the version 7.98.15.

2010/02/28

   import IM-150.


2010/02/28

   fml-7.98.14-20100228 released as a mile stone before further development.
	same as fml-7.98.14-20090809 excluding documentation.

	ドキュメンテーション以外は fml-7.98.14-20090809 と同じです。
	安全のため、ライブラリのアップデートを始める前に作成した
	スナップショット。

2009/12/26

    fml/utils/bin/version_replace.pl 
	added: version replacement utility.

    tutorial/Makefile.template
	replace version in include/bookinfo.sgml always
	using fml/utils/bin/version_replace.pl utility.
	
	catch up the change in clean and export rules.
	
    ja/tutorial/include/chapters.ent 
	define bookinfo.cooked entity.
	we use it as version-managed bookinfo.sgml.
	
    ja/tutorial/book.sgml 
	use version managed bookinfo entity. clean up a little.
	
    ja/tutorial/
	clean up a little ...


2009/08/09

   fml-7.98.14-20090809.tar.gz built.

2009/07/15

   FML::Process::Distribute 
	move calling _htmlify() from _deliver_article_prep() to finish()
	
2009/06/20

   fml-7.98.14-20090620.tar.gz built.

2009/06/10

   Mail::Message::Date 
	bugfix case timezone +0000

2008/11/30

	開発環境を perl 5.10 ベースへ変更。

   FML::Process::Switch 
	defined() before eq
	
2008/09/29

   FML::Process::CGI::Kernel 
	verify_request() logs client ip address if could.

2008/09/28

   documentation
	usage of anonymous cgi.

2008/09/15

   FML::ML::Control 
	delete scripts in the reverse order of creation.
	define {get,set}_force_mode().
	
   FML::Command::Admin::{newcgi,rmcgi}
	install/deinstall all CGI scripts for the specified domain.

2008/09/14

   FML::Process::Utils 
	define ml_name_list(), which returns the list of valid ml in the
	specified domain.
	fix documents and todo.
	
   FML::ML::Control 
	fix admin.cgi removing operation bug.
	count up the number of valid ml,
	remove admin.cgi only if ensured that no more valid ml exists.

2008/09/13

   variables
	define $listinfo_template_base_dir

   template files
	share/listinfo/euc-jp/index.html.ja 
	change default url for submission of subscribe/unsubscribe request.
	mailto:... -> ::...::submit.cgi
	
	share/listinfo/euc-jp/index.html.en aded.

   FML::ML::Control 
	listinfo operations fixed::install and deinstall index.html.{ja,en}.

2008/09/12

   variables
	define $ml_anonymous_cgi_base_url

   FML::Command::Admin::{newml,rmml}
	clean up.
	warn() -> ui_message() + logwarn().
	change variable names to be more proper.
	fix comments.
	
   FML::Command::Admin::rmml 
   FML::ML::Control 
	delete cgi scripts and listinfo in runnign rmml.

2008/09/11

   FML::Error::Cache 
	document: fix typo

2008/09/10

   FML::CGI::Skin::Anonymous 
	(1) check if the banner image format generator works or not
	(2) if not, use ascii generator.
	
   FML::String::Banner 
	new() needs $curproc as the argument.
	as_png() checks if GD perl module is available. if not, return
	undef.

   FML::ML::Control 
	clean up setup_cgi_interface() to be more modular.

2008/09/09

   WWW interface for anonymous users is added.
	Anyone can request subscribe/unsubscribe via WWW interface.
	After the request processed, the command flow is same as usual
	command mails ( confirmation is sent back, ...).

	一般ユーザが WWW インターフェイスでＭＬへの「入会」「退会」
	のリクエストを出すことが出来るようにしました。
	・ subscribe と unsubscribe しか出来ません。
	・ リクエストを出すと confirmation のフェイズに入ります。
	   その後は、いつのもコマンドメールと同じ処理になるだけです。
	   本当に入口だけ。２つの違う通信路を使うことに意味があります。
	・ パスワード登録とかはしません。どうせ次に使う時には忘れてる。
	   無駄にＭＬ側へ情報が集まってしまうと逆に危ないだけ。
	・ ゆがんだ画像を読みといてもらって「魔法の文字列」を入れさせます。
	   SPAM よけの軽いおまじないです。
	   気合いの入った OCR 野郎とかいたら無駄でしょうが、そこまでして
	   突破したいような価値ある WWW じゃないし(confirmation かえる
	   だけなんだし)。
	・ もっといけてる画像の作り方のアイデア(というかコード)募集中。

   variables
	define variables for anonymous cgi::$use_anonymous_cgi_function,
	$anonymous_cgi_expire_limit, $anonymous_cgi_base_dir,
	$ml_anonymous_cgi_base_dir, $html_tmp_dir, and $html_tmp_base_url.
	
	define $ml_anonymous_cgi_allowed_commands

	definition changed::$cgi_base_dir, $admin_cgi_base_dir and
	$ml_admin_cgi_base_dir.
	
	renamed::$commands_for_ml_admin_cgi -> $ml_admin_cgi_allowed_commands

   etc/modules
	add definition "anonymous::*::*::submit.cgi".
	while space cosmetics.

   share/messages
	add message templates for anonymous CGI.

   FML::Char::Ascii::Data 
	ascii presentation of letters.
	
   FML::String::Banner
   FML::String::Banner::{Ascii,Image}
	banner string generator

   FML::String::Random
	generates a magic string and the identifier used for the
	session ID. 

   FML::Restriction::Base 
	define $alnum_regexp class.
	define 'session_id' and 'magic_string' regexp.

   FML::CGI::User 
	define anonymous_cgi_menu().
	fix and update documents.
	
   FML::CGI::Anonymous::{DB.pm,Submit}
   FML::CGI::Skin::Anonymous
	anonymous cgi initial version

   FML::Command::User::{chaddr,subscribe,unsubscribe} 
	show menu for an anonymous user by calling
	FML::CGI::User->anonymous_cgi_menu();
	
   FML::ML::Control 
	in setting up cgi, install cgi script(s) for anonymous users,
	too. 

   FML::Process::Kernel 
	import $fml_owner and $fml_group into $config name space from
	main.cf.

   FML::Process::Utils 
	fix how to search main_cf information.
	
	define set_allow_reply_message() and get_allow_reply_message().
	We can enable or disable reply_message*() functions dynamically.
	
   FML::Process::CGI::Kernel 
	generate anonymous session ID always (anyway).

	finish() calls message flush sub-system.

	cgi_execute_command() is enhanced to handle both *admin.cgi
	  and anonymous cgi case.

	some error messages are natural-languaged.

	use cgi_var_*() and specify -target if could.
	
   FML::Process::CGI::Utils 
	$commands_for_ml_admin_cgi -> $ml_admin_cgi_allowed_commands

	ensure the return value for CGI action to be not "undef".

	menu is enhanced to handle both *admin.cgi and anonymous cgi case.

2008/08/31

   WWW インターフェイスからの subscribe / unsubscribe 他のための準備...
	隔離メールの「TODO: ワンタイムパスワードつき URL の生成。」
	も同じフレームワーク上にある(はず)。

2008/08/24

   隔離されたメール(SPAM)を日付名ディレクトリへ奇麗に並べ替える。
	TODO: レポートメールの生成と送信。
	TODO: ワンタイムパスワードつき URL の生成。
	      この URL はレポートメールに含まれるようにする。

   FML::Process::{Flow,Kernel}
   FML::Isolate 
	rearrange isolated mails to under
	$isolated_queue_dir/YYYY/MM/DD dir. 
	
   FML::Command::Admin::thread 
	allow sub-command "outline" load.
	
   FML::Article::Outline 
	fixed::typo: add_outline_to_header_field -> add_outline_to_header

   variables
	add new entry on "isolatation" related variables.
	define $isolated_queue_dir and $isolated_queue_expire_limit.

2008/08/23

  clean up documents (continued)
	remove recipes and faq, tech category.
	merge recipes to tutorial.

2008/08/21

   clean up cpan/
	IO::Stringy removed since it is not used.

2008/08/20

   tutorial(jp) overhaul-ed.

2008/08/17

   FML::Process::Command 
	[bug fix]
	check isolated or ignored precisely and determine the final action.

2008/08/15

    documents being updated.

2008/08/14

    variables
	bug fix create-on-post default configuration.
	update and complete descriptions.
	sort definitions.
	remove "permit_createonpost_maintainer_maps", which is not defined.
	remove duplication in descriptions.

2008/08/13

   FML::Process::CreateOnPost 
	bug fix::fix internal arguments passing bug to handle sender
	information correctly.
	save sender candidates in PCB.
	
2008/08/07

   anoncvs.fml.org changed to support anonymous cvs over ssh.
	   fml/bin/anoncvs changed.
	   documents updated.

2008/08/03

   bump up version to 7.98.13
	isolation or quarantine mode implemented and enabled by default.
	"isolate" instead of "reject" spam or unknown messages
	by default.

	変なメール(まぁはっきり言えば、ほぼ全部 SPAM)は、今まで
	*_restrictions のルールの最後が reject のため、敵に返事を
	送ろうとしてしまっていたが、デフォルトを isolate に変更。

	とりあえず受けとり、隔離キューに入れる動作にした。

	隔離キューのレポートなどは、まだ未実装。

   variables
	support directives (isolate_system_special_accounts
	isolate_spammer_maps isolate) for $article_post_restrictions and
	$command_mail_restrictions.
	
   Mail::Delivery::Queue 
	create isolated queue, too.
	
   FML::Process::Command 
	fixed that isolate operation works.

2008/07/20

   FML::Process::Utils 
	define incoming_message_dup_content() and
	incoming_message_isolate_content().
	
   FML::Process::{Command,Distribute}
	isolate the current incoming message if matched

   FML::Restriction::Post 
	define isolate_system_special_accounts() and
	isolate_system_accounts().
	
2008/07/16

	[isolate_XXX 命令シリーズ創設案]

	2008/07/06 の各 restrictions (例: 投稿、コマンドメール)で 
	reject のかわりに isolate と ignore を使えるようにし ...
	は、いいのですが、reject_system_special_accounts 命令は
	どうすればよいのでしょう？

	isolate_system_special_accounts ってのを創設すれば良いですね？

	ほえ_restrictions にある reject なんとか命令をすべて isolate へ
	書き換えてしまえば、一番素直な拡張だと思える。
 
		$*_restrictions =~ s/reject/isolate/g;


2008/07/06

	各 restrictions (例: 投稿、コマンドメール)で reject のかわりに
	isolate と ignore を使えるようにし、デフォルトを reject から isolate
	へ変更します。

	isolate 命令は ignore ＋ 一定期間保存(隔離)相当の機能です。
	拒否の返事をせずに、メールを保存し、一定期間後に削除します。

	補足: 最初 hold 命令を、この意味で使おうとしましたが、それだと
	Postfix の hold と意味が違ってしまうので、それは廃止。hold は
	予約語として、そのまま（実態がない命令なので書いても何も起こら
	ないので注意）。

   FML::Process::{Distribute,State}
   FML::Restriction::Post 
	define "isolate" operation template.
	
	"isolate" differs "hold".
	"isolate" sets apart spam candidates from normal incoming messages,
	whereas "hold" moves the incoming message to "hold" queue, which does
	not move until someone changes the state.

2008/07/05

   FML::Restriction::CreateOnPost 
	fixed: add missing use FML::Restriction::Post

2008/07/04

   FML::Process::State 
	define restriction_state_{set,get}_hold_reason()
	
   FML::Restriction::Post 
	define hold() and discard()

2008/06/29

	CREATE-ON-POST 機能では、動的にＭＬの作成、メンバーの追加が
	出来るわけですが、ＭＬの作成が可能なユーザの制限を可能としました。

   FML::Credential 
	implement is_ml_domain() method.
	fix debug and pod descriptions.
	
   FML::Restriction::Post 
	implement permit_ml_domain()
	
   FML::Restriction::CreateOnPost 
	define permit_createonpost_newml_maps
	
   FML::Process::CreateOnPost 
	"who can do newml operations" code is rewritten to use of
	createonpost_newml_restrictions.
	
   variables
	define $createonpost_newml_restrictions.
	define $createonpost_newml_maps.
	remove $createonpost_maintainer_maps.

2008/06/08

   create-on-post enhanced.
	define $createonpost_maintainer_maps

   FML::Process::CreateOnPost 
	clean up. fix comments.
	restrict who can create a new ML.

   FML::Credential 
	define is_valid_map() method
	
   configurations	
	define $createonpost_maintainer_maps


2008/05/25

   switched to configure 2.62 based
		configure.in 
		configure
			show datarootdir

		fmlsrc/config.sh.in 
		fmlsrc/fml/etc/{install.cf.in, main.cf.in}
		datadir -> datarootdir	

2008/05/11

  project restarts (crash and fsck;) ends, orz).
	TEST: switched to a new source changes system.

2006/12/03

   overhaul continues ... (slowly ;_;) ...
	ちょっとずつオーバホール継続中

   FML::Command::Admin::reviveml 
	fix comments.
	ensure initial value.
	add assert.
	show more error messages.
	
   FML::Command::Admin::mergeml newcopml newdomain rmcopml rmdomain 
	fix comments.
	ensure initial value.

2006/11/26
	
   FML::Sys::Alias 
	fix comments.
	remove a unused local variable.
	set the upper limit of recursive call _expand().
	
   FML::Sys::User 
	fix comments.
	add the label to a loop.
	define debug code by myself.
	
   FML::Process::Fake 
	fix comments.
	fix help message.
	change a local variable name to more proper one.
	
   FML::Credential 
	fix comments (FNF).
	ensure initial value.
	use more proper local variables.
	
   FML::Mailer 
	fix comments.
	fix error logic.
	
   FML::Moderate 
	fix comments.
	correct argument definitions.

2006/11/19
	
   FML::Error::{Analyze,Cache}
   FML::Error::Analyze::{histgram,simple_count }
	fix comments.
	use more proper variable names.
	
   FML::Header::MessageID 
	fix comments.
	ensure initial value.

2006/11/13
	
   FML::Error 
	fix comments
	ensure variable initialization.
	define $mname and use it in log messages.
	
   FML::Envelope 
	fix comments
	use FML::Credential->is_same_assress() to compare addresses.
	move variable definitions to the block using it more nearly.

2006/11/12

   FML::IPC::Queue 
	more debug messages.
	enhance debug patterns.

2006/10/22

   FML::Body 
	more error logs.
	move $curproc definition to near message logging.
	
   FML::PCB 
	use gloval_ prefix for package gloval variable:
	current_context -> global_current_context
	
   FML::Command::{Auth,DataCheck,Filter,Syntax}
	clean up. fix comments.
	
   FML::Command::DirUtils 
	fix comments.
	move definitions to near the codes.
	use more proper variable names.
	
   FML::Command::FileUtils 
	fix comments.
	move definitions to near the codes.
	use more proper variable names.
	
   FML::Command::HTMLify 
	fix comments.
	use more proper variable names.
	
   FML::Command::Message 
	fix comments.
	define the default message.
	
   FML::Command::QmailExt 
	fix comments.
	permit case insensitive commands.
	more error messages.
	validate temorary message file more.
	
2006/10/14

   etc/command_line_options 
   FML::Demo::{Chart,Project}
   FML::Process::Project 
	fmlproj::GanttProject XML format extension.
	--xml options
	dump GanttProject XML format by default.
	
   FML::Article::Summary 
	fix importation
	
2006/10/10

   FML::Confirm 
	fix comments.
	rename private variables to more proper ones.
	remove not used private variables.

2006/10/08

	ちょっと体調がよくなってきたので、
	レビュー、クリーニングを再開しました。
	

2006/09/24

   FML::Demo::Chart 
	fix initialization code.
	_shrink_date() for column list.
	sort main data before printing.
	
   FML::Demo::Project 
   FML::Demo::Language::Japanese 
	NL-ify (use FML::Demo::Language if needed)
	enabled to expand YY::DD-YY::DD form to date list.
	cosmetics.
	status and misc support.
	
2006/07/09

   オーヴァホールはじめた…

2006/06/10

   TinyMTA
	デバッグおよび、ちょっと(インチキだけど)MTAもどきを使いたい場
	合に便利


2006/06/25

   へんな SPAM でコマンドが落ちたりするのが直ったはず。

   FML::Command::DataCheck 
   FML::Process::Command 
	validate if find_first_plaintext_message() returns object.

2006/05/22

   Mail::Message::ToHTML 
	_update_montly_thread_index_master() rewrite same logic
	using _update_id_montly_index_master()

2006/05/17

   fml4 to fml8 変換 97 % 終了

   メッセージテンプレートをいくつか追加

2006/05/16

   登録可能なユーザ数の制限をかけられるようにしました。
	fml4 の $MAX_MEMBER_LIMIT にあたるものです。
	＃って、そんな機能欲しいのは ISP くらいかも :-)

   variables
	define $*_total_limit
	
   FML::User::Control 
	define get_user_total(), return the total number of addresses
	in list. 
	
   FML::Command::Admin::subscribe 
	check the number of users in {member,recipient}_maps exceeds
	the limit. 
	
2006/05/14

   FML::Envelope 
	envelop based loop check

2006/05/13

   variables	
	cksum -> checksum

   FML::Process::Kernel Utils 
   FML::Body 
	enable body based loop check
	
2006/05/11

   Mail::Message::Checksum 
	restructured.
	define md5_str_ref() too, same as md5().
	implement md5_file()
	
2006/05/09

   variables
	reject_spammer_maps directive available now.
	define dummy $primary_spammer_map and $spammer_maps.

	add envelope loop checks

   FML::Restriction::Post 
	implement reject_spammer_maps()
	
   FML::Credential 
	define is_spammer()
	
   FML::Process::Error 
	restructure qmail-ext command emulation.
	
	currently libexec::error traps the request and switch the
	context to command process. FML::Process::QMail no more used. 
	FML::Command::QmailExt provides qmail-ext emulation functions.

   etc/dot-qmail-admin 
	bug fix: add missing calling of libexec::error process.
	
2006/05/04

   いろいろな機能の expire を整備しました。

   variables
	define $welcome_file and $deny_file.
	% format of strftime(3) is available for $log_file
	
   FML::Log 
	expand % format in $log_file by strftime(3).
	ログファイルに log.%C%y%m%d などといった日付がつけられるように
	なりました。
	
   FML::Process::Debug 
	define incoming_message(), which returns undef as a dummy.
	
   FML::Process::Distribute 
	expire article under locked
	
   FML::Process::Kernel 
	change default message subject to "message from $ml_name ML
	$myname system". 
	call $queue->expire() in incoming_message_cleanup_queue().
	
   FML::Article 
   FML::Article::Summary 
	expire article summary (remove content, corresponding with expired
	articles, in summary).
	
   FML::Moderate 
	expire too old submitted queue after $moderate_queue_expire_limit.
	
   FML::Command::Admin::subscribe 
	send back welcome file in subscription when running under
	CGI/MTA process. 
	
   FML::Command::User::confirm 
	move "send welcome message" code to
	FML::Command::Admin::subscribe class. 
	
   FML::Command::SendFile 
	bug fix::pass recipient information to reply_message_nl().
	
   FML::Command::User::admin 
	fix typo::$use_admin_command_mail_fucntion
	
   Mail::Delivery::Queue 
	constuctor imports $expire_limit in the argument.
	
	delete() and remove() can accept queue id if specified.
	
	define expire() which removes too old queue files in the specified
	queue. It expires all queue if $class unspecified.
	
	expire()::cleanup() is overhauled. queue removing is done by remove().
	
	define {set,get}_expire_limit() access methods.
	
2006/05/03

   variables
	define $use_article_summary_file_expire
	define $use_article_expire and $article_expire_limit
	define $moderate_queue_expire_limit
	fix typo: $use_admin_command_mail_function

   FML::Article 
	implement expire(), which function expires too old articles.
	modify log messages
	
   FML::Process::Distribute 
	try to expire articles once per day if enabled.

2006/05/02

   variables
	define $confirm_command_expire_limit (= 14d by default).
	
   FML::Config 
	implement as_second($key), which returns the value as seconds
	such as	86400 for '1d'.
	
   FML::Command::User::confirm 
	modified to use $confirm_command_expire_limit which value is
	converted to the integer by as_second() method of FML::Config.
	
   FML::Restriction::Command 
	changed that permit_forward_to_moderator() returns 
	("matched","ignore").

2006/04/30

   FML::Merge::FML4::RULES.txt 
	83 % checked.
	
   FML::Merge::FML4::config_ph 
	support for LOGFILE_NEWSYSLOG_LIMIT and XMLNAME

2006/04/28

   Mail::Delivery::Queue 
	fix open() mode::r -> <

2006/04/22

   7.98.12 released.

   配送システムの見直し(1) 2006/04/22 - 2006/04/20
	エラーリセットのタイミングを変更
	IPv6 対応部分のエラーを修正

   FML::Process::Utils 
   FML::File::Rotate 
	FML::File::Rotate overhaul-ed. access method changed.
	
   variables
	variable name changed due tu overhaul of FML::File::Rotate.
	$log_rotate_size_limit
	$log_rotate_archive_file_total
	
   FML::Process::QueueManager 
   Mail::Delivery::SMTP 
	message modified (unified among modules)
	
   FML::Process::Flow Kernel 
	runs operation on log files (currently log rotation).
	
2006/04/21

   Mail::Delivery::SMTP 
	fix error reset timing.
	show more useful info in log message.
	
   FML::Process::QueueManager 
	log as status=deferred not status=fail when the delivery fails.

2006/04/20

   Mail::Delivery::SMTP 
   Mail::Delivery::Net::INET6 
	try to connect(2) $mta by IPv6 if (1) we can use Socket6 and (2) mta
	is not pure IPv4 syntax (Iv6 syntax or hostname).
	
	IPv6 module, which should be fully rewritten in the future, exports
	parse_mta6() and is_pure_ipv4_syntax().  rewritten to use them.
	
2006/04/18

   FML::Header::MessageID 
	$Counter -> $global_counter, easily identified as a global
	variable.
	base address is ( $article_post_address || $maintainer ).
	fix style.
	
   FML::Process::Kernel 
	logging system enabled by default
	
2006/04/17

   ダミーの rewrite_message_id メソッドを実装した。
	TODO: 将来、ＭＬオリジナルの Message-Id: をつけられるようにする。

   FML::Header 
   variables
	define dummy rewrite_message_id() method and the rewrite rule. 
	this method does nothing by default (pass the original message
	id as itself).
	
   FML::Process::Debug 
	define logdebug()

2006/04/16

   変数名を分かりやすくするなど、クリーニング

   FML::Filter::TextPlain 
   Mail::Bounce::DSN Postfix19991231 Qmail SimpleMatch 
   Mail::Message 
   Mail::Message::ToHTML Outline 
	nuke ambiguous method and variable name.
	num_paragraph() -> paragraph_total() (XXX see "Code Complete").
	each variable holding this return value is fixed to $total.
	
   FML::Command::User::get 
	clean up variable name style.
	
   Mail::Message::ToHTML 
	fix variable name syntax::_num_attachment ->  _num_attachments
	
   Mail::Delivery::SMTP 
	fix variable name::num_rcpt -> rcpt_total
	
   FML::Article::Spool 
	fix variable names:
	num_file -> num_files
	num_dir  -> num_dirs
	
2006/04/11

   投稿時もしくはコマンドメールの処理で不正なリクエストを無視するディ
   レクティブを書けるようにした。主に SPAM を無視するため。微修正。

   variables
	${article_post,command_mail}_restrictions support
	{ignore,ignore_invalid_request}.
	
   FML::Process::Distribute 
	apply filter system to avoid useless work if distribution is
	allowed. 
	
	temporarily disable logging system before calling
	is_permit_post() at filter check.

   FML::Process::Kernel 
	define log_{enable,disable}() to enable::disable logging
	system. 

2006/04/10

   投稿時もしくはコマンドメールの処理で不正なリクエストを無視するディ
   レクティブを書けるようにした。主に SPAM を無視するため

	例: 有効なコマンドでないなら無視。
	    メール全体で一つも有効なメールがない場合は返事も返さない。
	command_mail_restrictions	=	reject_system_special_accounts
						permit_anonymous_command
						permit_user_command
						ignore_invalid_request
						reject

   FML::Restriction::Post 
	define ignore() and ignore_invalid_request() methods.
	
   FML::Restriction::Command 
	define ignore() and ignore_invalid_request() methods.
	assert
	
   FML::Process::State 
	define restriction_state_set_ignore_reason() and
	restriction_state_get_ignore_reason() methods.
	
   FML::Process::Command 
	enhance restriction checks for invalid contents to determine the
	action against such content.

2006/04/05

   IO::Adapter 
   IO::Adapter::File 
	trylock() (lock( { wait => TIME }) implemented
	
   Mail::Delivery::Queue 
	fix usage of logging.
	trylock() is available, too.
	validate stat() object before using it.
	mask some debug messages
	
   Mail::Delivery::SMTP 
	fix fallback algorithm::we need not do fallback for the queue already
	on the queue.
	
	bug fix loop check counting.
	bug fix queue_directry info handling.
	
	prepare several acess methods::_is_map_in_queue(),
	_set_queue_directory(), _get_queue_directory(), set_not_done(),
	get_not_done().
	
   FML::Mailer 
	modifieid to sync w:::Mail::Delivery::Queue changes.
	+ use recipient_maps as an argument to Mail::Delivery system.
	+ pass queue object to Mail::Delivery system.
	+ check if delivery is DONE or not by get_not_done().
	
   FML::Process::Kernel 
	queue_flush() takes no argument

   FML::Process::Distribute 
	modifieid to sync w:::Mail::Delivery::Queue changes.
	+ more fast lock
	+ pass log function pointers.
	+ pass queue object to Mail::Delivery system.
	+ check if delivery is DONE or not by get_not_done().

   FML::Process::QueueManager 
	modifieid to sync w:::Mail::Delivery::Queue changes.
	pass log function pointer to Mail::Delivery system.
	
2006/04/04

   Mail::Delivery::Queue 
	define set_sleep_count, get_sleep_count, set_retry_count and
	get_retry_count.
	rewritten by using them.
	
   FML::Process::QueueManager 
	queue validation logic modified.

2006/04/03

   Mail::Delivery::SMTP 
	check the number of effective MTA.
	tune retry max limit (XXX a lot of todo around this).
	fix retry handling (now we use cost penalty by rollback).
	style::not use $_xxx in loop
	
   Mail::Delivery::Queue 
	ensure lock::unlock return value
	bug fixed to lock new or lock queue file, not active queue.
	
   IO::Adapter 
	consider context switch
	
   FML::Mailer 
	enable fallback

2006/04/02

   Mail::Delivery::SMTP 
	overhaul.
	o subroutine-ify.
	o more error check and assertion.
	o fix comments. et.al.
	fix error handling (do not trap normal condition)
	
   Mail::Delivery::Queue 
	fix typo.
	check lock status.
	
   FML::Log 
	clean up input buffer (nuke \s+$)

2006/04/01

   Mail::Delivery::Queue 
	overhaul

2006/03/29

   Mail::Message::ToHTML 
	change monthly_index.html's table output in 
	_update_id_montly_index_master().
	see also fml-devel 798.
	
2006/03/26
	
   Mail::Delivery::Base 
	define [sg]et_address_validate_function()
	
   FML::Mailer 
   FML::Process::Distribute 
	use $curproc->log() as log_info and $curproc->logdebug() as log_debug
	in Mail::Delivery, by passing log_debug function pointer to
	Mail::Delivery class.
	
   Mail::Delivery::Net::INET4 INET6 
	fix arguments:
	+ connect{4,6}() accepts $mta.
	+ remove not used arguments.

2006/03/25

   Mail::Delivery::Base 
	fix comments.
	fix usage of ->log*()

2006/03/24

   Mail::Delivery overhaul (1).

   Mail::Delivery 
	fix comments.
	
   Mail::Delivery::Net::INET6 
	overhaul.
	+ more use of access methods.
	+ change method name to more proper one.
	
   Mail::Delivery::Net::INET4 
	overhaul.
	use $self->log*() instead of Mail::Delivery::Utils.
	
   Mail::Delivery::Queue SMTP 
	overhaul.
	more access method based.
	
   FML::Mailer 
   FML::Process::Distribute QueueManager 
	rewritten to use access methods to sync w:::Mail::Delivery overhaul.

2006/03/23

   Mail::Delivery::SMTP 
	if EHLO fails, try HELO.

2006/03/21

   FML::Mailer 
   FML::Process::Distribute 
   Mail::Delivery::SMTP 
	validate format of recipient within smtp transaction.
	
   Mail::Delivery::ErrorStatus 
	define {set,get}_error()
	
   Mail::Delivery::Queue 
	fix type in queue_id generator
	
   Mail::Delivery::SMTP 
	bug fix starting position in fallback process.

2006/03/20

   FML::Merge::FML4::RULES.txt 
	56.5 % verified. status and rules updated.
	
   FML::Merge::FML4::config_ph 
	fix conversion for address variables.
	add conversion of REJECT_ADDR and SKIP_FIELDS.
	fix HOST and PORT handling.
	apply _fix_path() for *_FILE variables.
	add conversion of INCOMING_MAIL_SIZE_LIMIT with ATOI suport.
	
    etc/compat/fml4/default_config.ph 
	
	by default, define ___NULL___ for the following variables:
	$PERMIT_POST_FROM
	$REJECT_POST_HANDLER
	$PERMIT_COMMAND_FROM
	$REJECT_COMMAND_HANDLER
	$REMOTE_ADMINISTRATION_REQUIRE_PASSWORD
	$USE_DISTRIBUTE_FILTER
	$FILTER_NOTIFY_REJECTION
	$FILTER_ATTR_REJECT_COMMAND
	$FILTER_ATTR_REJECT_2BYTES_COMMAND
	$FILTER_ATTR_REJECT_INVALID_JAPANESE
	$USE_ERRORS_TO
	$APPEND_STARDATE
	$AUTO_HTML_GEN
	$USE_NEW_HTML_GEN

2006/03/19

   fml 4 から fml 8 への変換
	56.5 % 確認

   variables
	define $article_header_list_software
	define $mail_header_default_list_software
	$default_umask -> $system_default_umask
	
   FML::Header 
	List-Software: and X-MLServer: is set as 
	${mail_header_default_list_software} or
	${article_header_list_software} by definition.

	sort definition order: _get_header_type(), ...

   FML::Process::Distribute 
	$use_smtp_log enable/disable smtp transaction logging.

2006/03/12

   variables
	define $maintainer_signature (not used now).
	define $article_header_* and $mail_header_default_* variables.
	rewritten to use $mail_header_default_* for outgoing_*.

   FML::Process::Kernel 
	pass {mode => default} parameters to FML::Header object by default.
	
   FML::Header 
	rewrite logic to generate list-* header field to sync w:::new variable
	definitions::article_header_list* et.al.
	
   FML::Merge::FML4::Makefile 
	define printok::print_ok rules

   FML::Merge::FML4::config_ph 
	save default value for later use in evaluating default_config.ph.
	overhaul algorithm to fix path.
	changed to use _fix_path() if needed.

2006/03/06

   variables
	define $use_admin_command_mail_fucntion ("no" by default).

2006/03/05

   refactoring: use of command context object based.

   FML::Command::User::admin 
   FML::Process::Command State 
   FML::Restriction::Command 
   FML::Context::Command 
	command context information switched to use of
	FML::Context::Command object. 

   FML::Command::Admin::*
   FML::Command::User::*
   FML::Command Error 
   FML::Article::Spool 
   FML::CGI::List ML User 
   FML::CGI::Skin::Base 
   FML::Command::Auth DirUtils FileUtils Message SendFile Syntax 
   FML::Context::Command 
   FML::Fault::Address 
   FML::ML::Control 
   FML::Process::Command Configure 
   FML::Process::CGI::Kernel 
   FML::User::Control 
	$command_args -> $command_context (OBJ), method style
	changed to command_context object based.
	
   FML::Command::User::admin 
	duplicate FML::Context::Command object by object dup method
	not by myself. 
	
   FML::Context::Command 
	implement dup() method.
	
2006/02/18

   FML::User::Control 
	always update user infomation db.
	update gecos and action date if operation runs under MTA, but
	update only date in other cases.
	
   FML::User::DB 
	define add() and set()
	
   FML::User::Info 
	rename method::add(HASH_REF) -> set_header_info($address)

2006/02/15

   FML::Error 
   FML::Command::Admin::reviveml rmcl rmml 
   FML::Error::Analyze 
   FML::Error::Analyze::histgram simple_count 
   FML::ML::Control 
   FML::MTA::Control 
   FML::MTA::Control::Postfix Procmail Qmail Sendmail 
   FML::Process::Error Kernel Utils 
   Mail::Message::Utils 
	fix method name::remove -> delete
	
   Mail::Delivery::Queue 
	define delete() as an alias of remove()
	
2006/02/05

   FML::Header 
	implement raw level insert_message_id_cache() method to access
	cache more directly.
	rewritten to use it.
	
   FML::Process::Kernel 
	add a new message-id to the outgoing message fml8 generates and cache
	it in our message-id database for further loop check.
	
   FML::Process::CreateOnPost 
	ignore *-ctl and *-admin addresses as a ML one.
	implement reject_list_header_field derective.
	
   FML::Process::CreateOnPost 
	comments on _is_ml_address() logic: if you create xxx-ctl or
	xxx-admin ML, it should be allowed.

   variables
	$createonpost_sender_restrictions += reject_list_header_field

2006/02/04

   CREATE-ON-POST implemented.
	CREATE-ON-POST は「動的にＭＬを生成」する仕組みです。

	存在しないＭＬに投稿すると fault がおき、fault handler が
	ＭＬの生成処理を行なう。アドレスの登録も fault で行なう。
	メカニズムとしては fml4 エミュレータの fallback 処理と同じ。

		ml fault	存在しないＭＬなら、ＭＬを作る

		address fault	アドレスが登録されているか？を調べ
				未登録の場合には登録処理をする
				(走り始めた配送プロセスが fault を処理)。

   variables	
	define CREATE-ON-POST function.
	
   FML::Config 
	context switch safe
	fix comments (FNF)
	
   FML::Header 
	return <> for error mail sender
	
   FML::PCB 
	context switch safe
	
   FML::ML::Control 
   FML::MTA::Control 
	implement createonpost function dispatcher
	
   FML::MTA::Control::Postfix 
	Postfix specific CREATE-ON-POST operations.
	
   FML::MTA::Control::Qmail 
	qmail_install_alias() install ~fml::.qmail-* files not qmail_setup()
	method.
	
   FML::Process::Utils 
	define several methods around $0 handling, address fault handling and
	context switching.
	+set_process_title()
	+get_process_title()
	+set_address_fault()
	+get_address_fault()
	+is_address_fault()
	+set_address_fault_list()
	+get_address_fault_list()
	+context_switch_get_context()
	+context_switch_set_context()

   FML::Process::Distribute 
   FML::Fault::Address 
	address fault handling
	
   FML::Process::Configure 
	use $curproc->{ml_name,ml_domain}() method.
	$command_args includes ml_domain info.
	
   FML::Process::Kernel 
	initialize context information when constructor runs.
	
   FML::Process::Switch 
	prefer $hints if specified for argv, ARGV and options.
	support context switching in executing new (child) process.
	
   FML::Command::Admin::rmml 
	use $command_args->{ ml_name } and $command_args->{ ml_domain };
	
   FML::Command::Admin::newml 
	use $command_args->{ ml_name } and $command_args->{ ml_domain };
	not udpate alias relates information if update-alias = no specified.

2006/02/03

   FML::Config 
	define {set,get}_context() method.

2006/01/24

  各種テスト、オーヴァホール

2006/01/19

  いろいろとレシピ’sを書く、書く、書く…

  fml4 emulator tool added. 

2006/01/15

  いろいろとレシピ’sを書く、書く、書く…

   FML::Process::Utils 
	implement policy_ignore_this_message(), policy_reject_this_message().

2006/01/13

   FML::Process::Utils 
	is_config_cf_exist() evals the statements.
	
	implement is_fml8_managed_address() which checks the given address is
	either of fml8 managed ml addresses.

2006/01/12

   ドキュメント: Reply-To: hacks をいろいろ書いておきました。

   FML::Demo::Calendar
	on the format of files in ~/.schedule/ directory.

2006/01/09

   FML::Header 
	add rewrite_subject_tag() equal to rewrite_article_subject_tag().
	rewrite_reply_to_enforce_article_post_address()
	fix comments.
	
   variables
	$article_header_rewrite_rules supports more 2 rules:
	+ rewrite_subject_tag
	+ rewrite_reply_to_enforce_article_post_address

2006/01/08

   FML::Merge::FML4::config_ph 
	add prototype to translate PERMIT*_FROM and REJECT_*_HANDER
	combinations.

2006/01/07

   variables
	+chaddr_command_operation_mode  	=       automatic
	+subscribe_command_operation_mode       =       automatic
	+unsubscribe_command_operation_mode     =       automatic

   FML::Command::User::subscribe chaddr unsubscribe 
   FML::Command::Message 
	move location of reseting compare_level.
	
	rewritten to call FML::Command::Message->send_notification() not
	direct reply_message() calls in Command::User:::class.
	
	send_notification() works differently according to the value of
	$XXX_command_auth_type variable.
	
   FML::Command::User::confirm 
	Accoding to ${command}_command_operation_mode, it works differently.
	
	1. XXX_command_operation_mode == automatic, fml8 do subscription
	et.al. automatically.
	
	2. XXX_command_operation_mode == manual, notify "the request is
	confirmed" to $maintainer, who do actual subscription et.al.
	
   FML::User::Control 
	use reply_message() in chaddr operations to send back log.

2006/01/04

   fml 4 -> 8 変換ルール生成プログラムのバグを修正した。

   FML::Merge::FML4::config_ph 
	change diff() return value to ($config, $diff), ARRAY of HASH_REF's.
	add debug codes.
	
   FML::Merge::FML4::Rules 
	regen::converter fixed.
	
   fml4to8::configtest.pl 
	follow change of diff() return value.
	croak() if eval() fails.
	
   gen_rules.pl 
	2nd generation prototype::check diff between default_config.ph and
	config.ph and translate rules bsaed on config.ph vlaues.
	
	fix copyright of module header template.
	
	modify private function names.
	fix bug of output indent level.
	croak() if unknown rule found.
	
	modify initialization logic.
	add missing comments.
	check the current key in appling if() conditions.

   modules
	updated to File::MMagic 1.25

2006/01/02

   FML::Merge::FML4::RULES.txt 
	new keyword system.
	fix some rules.
	
   FML::Merge::FML4::Rules 
	regen

2006/01/01

   あけましておめでとうございます。今年の目標は official release なん
   だけど…
   ＃ fml 4 直接エミュレータ以外は全部できてるつもりなんだけど

   remove not-used modules.
	Class::NamedParms
	Class::ParmList
	AsciiDB::*

   FML::Merge::FML4::config_ph 
	pass $config to translation*() methods.
	support MODERATOR_MEMBER_LIST, ADMIN_LOG_DEFAULT_LINE_LIMIT.
	implement translate_not_yet_implemented().
	clean up.
	modify comments.

2005/12/31

   fml 4 to 8 コンバータのルール解釈ルーチンは間違ってます。
   修正中。冬休み中に直せるかな？

2005/12/19

   モデレータモードのバグとり

   FML::Process::Distribute Kernel 
	change is_permit_post() retruns action string not number to
	support 3 permit/ignore/deny states.
	
   FML::Moderate 
	remove moderation queue if distribution succeded.
	
   FML::Restriction::Post 
	permit_forward_to_moderator() returns (matched, ignore)

   モデデータからのメールなら投稿を許す命令を追加。
   考え用によっては一番単純なメールマガジンはこれを使えば良い(推奨はしない)

   FML::Credential 
	implement is_moderator_member()
	
   FML::Restriction::Post 
	implement permit_moderator_member_maps().

2005/12/18

   モデレータモードの基本的な実装を行なう

   variables
	fetchfml_queue_dir = $var_dir/mail/queue-fetchfml
	define moderation definition::enable, queue_dir

   Mail::Delivery::Queue 
	enhanced dup_conent() to take two arguments.
	
   FML::Process::Switch 
	NewProcess() takes hints as args to overload configuration in
	a new process. 
	
   FML::Process::Utils 
	comment on incomplete dup_command_args
	
   FML::Restriction::{Command,Post}
	implement permit_forward_to_moderator.
	
   FML::Command::User::confirm 
	pass _confirm_id information to called process.
	support "moderate" command.
	
   FML::Process::Kernel 
	workaround::unlock() call lock object via IO::Adapter if saved
	object undefined.
	
	bug fix loop check functions to check enabler variable definition.
	
   FML::Moderate 
	o fix comments.
	o if (defined ) { .. open .. }
	
   FML::Confirm 
	implement id(), set(), get()
	
   FML::Command 
	add more debug codes

2005/12/17

   FML::Process::FetchFML Switch 
	not need to pass $args to FML::Process::Switch::NewProcess() which
	fake $args by $curproc->dup_curproc_args().
	
   FML::Process::Utils 
	implement dup_curproc_args() template

2005/12/16

   FML::Command::User::digest 
	fix duplicated definition.

2005/12/10

   FML::Credential 
   IO::Adapter::PCRE 
	pass hints to IO::Adapter to return matched address.

2005/12/09

   IO::Adapter 
   IO::Adapter::PCRE 
	pcre: support

2005/12/01

   FML::Process::Utils 
	define credential() method

   FML::Command::Admin::changepassword addrecipient digest 
                        off on addmember 
   FML::Command::User::admin chaddr digest off on subscribe unsubscribe 
   FML::Command::Auth 
   FML::ML::HomePrefix 
   FML::Process::Command Distribute Kernel QueueManager 
   FML::Restriction::Command Post 
   FML::Filter Error 
   FML::Process::Digest Error Utils 
	use $curproc->credential();
	
   FML::Credential 
	use $address_compare_function_domain_matching_level


2005/11/19

   ドキュメンテーション
	レシピ一覧を作るようにしてみました。
	「FML バイブル」のレシピコレクションを参考にしてレシピを追加中
	ですが、未実装のものは未実装と書いてあります。

   fml/utils/bin/listup_recipes.pl 
	generate list of recipes

2005/10/29

   variables
	change naming of $article_thread_outline_rules. fix comments.
	add $article_thread_outline_*

   ドキュメンテーション
	「FML バイブル」のレシピコレクションを参考にしてレシピを追加中

2005/09/17

   FML::Filter::TextPlain 
	is_signature() and is_citation() switched to
	Mail::Message::String based.
	
   FML::Article::Thread 
	eval use ..
	
   FML::Article::Outline 
	check method existence before calling.
	rename method names.

2005/09/13

   FML::Article 
   FML::Article::Outline 
   FML::Process::Distribute 
	changed to FML::Article->add_outline($tdb_args) style.

2005/09/11

   スレッドまわりの改造中

   variables
	rename: $*_overview -> $*_outline
	
   Mail::Message::Thread 
	define DESTROY()
	
   Mail::Message 
   Mail::Message::Outline 
   Mail::Message::Language::Japanese::Outline 
	move thread outline generator codes to Mail::Message::Outline.
	correct error messages (Mail::Message).
	
   FML::Process::Distribute 
   FML::Article::Outline 
	move thread outline generator to FML::Article::Outline

2005/09/01

   FML::Article::Thread 
	remove obsolete codes.
	
	private-ify::psw_*() -> _psw_*().
	
	use article_summary cache as coudl as possible. To clean up
	around the codes, some codes are separeted to _generate_summary().
	
	fix comments and documents.
	
	strict check of $status code.
	
	implement get_overview($id, $thread_args). It returns string holding
	article short summaries of a thread for this article $id.
	
   FML::Process::Distribute 
	article_thread_overview support.
	
   variables
	preliminary definitions for article thread overview.
	+article_thread_overview_greeting
	+article_thread_overview_greeting_en
	+article_thread_overview_greeting_ja
	+article_thread_overview_rules
	+use_article_thread_overview

2005/08/31

   Mail::Message 
	implement new method prepend(), append() and
	whole_message_body_tail(). 
	fix charset() logic to handle plural header field lines.
	
   Mail::Message::DB 
	implement find_head_key().
	add() updates article_summary database, too.
	
   FML::Article 
	implement append() and prepend() methods.
	
   FML::Process::Utils 
	langinfo_get_charset() uses Content-Type::information as a hint
	when Accept-Language::is not specified.

2005/08/27	

   Mail::Message::DB 
	define open() and close()
	
   FML::Filter::TextPlain 
	use $msg->message_chain_as_array_ref() instead of $mp->{ next } form.
	
2005/08/25

   Mail::Message::Thread ToHTML 
	renamed::db->analyze() => db->add()
	
   Mail::Message::DB 
	renamed methonds:
	o analyze  -> add
	o db_open  -> _db_open
	o db_close -> _db_close

2005/08/23

   IO::Adapter 
	add PostgreSQL support.
	add LDAP support.
	
   IO::Adapter::MySQL 
	$sql_server -> $sql_servers.
	enhanced to handle a list of dsn.
	fix comments.
	
   IO::Adapter::DBI 
	change dsn to form "DBI:$driver:dbname=$database;host=$host".
	always $dbh->commit();
	enhanced to handle a list of dsn and to retry sql servers if needed.
	DBI->connect with { AutoCommit => 0 } option.

   FML/Command/Admin::reviveml
	revive a removed ML.

   FML::CGI::ML 
	add & enable reviveml in cgi

   FML::Process::FetchFML 
	handle $fetchfml_pop_servers
	
   FML::MUA::POP3 
	remove message when the message retrival succeeded.

   FML::Log 
	$log_syslog_host -> $log_syslog_servers

   variables
	$log_syslog_host -> $log_syslog_servers
	$sql_server -> $sql_servers

2005/08/20

   FML::Filter::MimeComponent 
   FML::Header::Subject 
   Mail::Message::Language::Japanese::Subject 
   Mail::Message::Subject 
	cut_off -> cutoff
	
   FML::Config 
   FML::Config::Menu 
	merge_to_file -> merge_into_file
	
   FML::Merge::FML4::config_ph 
	var_dump -> dump_variable
	
   FML::Error 
	deluser() -> remove_address()

2005/08/19

   Mail::Message::DB ToHTML Utils 
	convension::from_to_name -> from_address_to_name
	
   FML::Filter 
	convert_to_mail_address($list); -> address_resolve($list);
	
   FML::Command::Admin::log 
	$curproc->output_{set,get}_print_style().
	
   FML::Header::Subject 
	bug fixed (forgotten import of module ;-)
	
   FML::Process::Kernel 
   FML::Process::CGI::Kernel 
	set_print_style() -> output_set_print_style()
	
   FML::Process::Utils 
	which_map    -> map_to_term
	which_map_nl -> map_to_term_nl
	
	convert_to_mail_address -> address_resolve
	
	set_print_style  -> output_set_print_style
	get_print_style  -> output_get_print_style
	
   FML::User::Control 
	which_map    -> map_to_term
	which_map_nl -> map_to_term_nl
	
	set_print_style  -> output_set_print_style
	get_print_style  -> output_get_print_style
	
   FML::Process::FetchFML 
   FML::MUA::POP3 
	FNF::pick_up_queue -> pickup_queue
	
   FML::Article::Summary 
   FML::Header 
   FML::Command::DataCheck 
   FML::Filter::TextPlain 
   FML::Header::Subject 
   FML::Process::Error Kernel State 
   Mail::Bounce::DSN Exim Postfix19991231 Freeserve GOO Qmail
                 SimpleMatch Smtpfeed
   Mail::Delivery::Queue 
   Mail::Bounce 
   Mail::Message::DB Address 
	XXX_clean_up() -> XXX_cleanup()

2005/08/18

   FML::ML::Control 
	check ::etc::passwd only in the case of default domain.
	follow changes of ml_home_dir_removed_path() arguments.
	
   FML::Process::Utils 
	change ml_home_dir_removed_path() and
	ml_home_dir_find_latest_removed_path() argument order:
	e.g. ml_home_dir_removed_path($curproc, $ml_home_prefix, $ml_name);
	
	removed_path format is changed to $ml_name.YYYYMMDD.COUNT style.
	
   FML::Header::Subject 
	exclude explicit code e.g. euc-jp and use
	Mail::Message::Charset instead. 

   FML::MTA::Control::Postfix 
	fix typo

2005/08/17

   FNF: adjust method naming convension.

   FML::Article::Thread 
   FML::Command::Admin::thread 
   FML::Command::HTMLify 
   FML::Process::Distribute 
	$curproc->thread_db_args(); -> $curproc->article_thread_init();
	
   Mail::Message::Encode 
	str_dump() -> dump_string()
	
   FML::CGI::Calendar Thread 
   FML::CGI::Skin::Base 
   FML::Command::Admin::log 
   FML::Command::SendFile 
   FML::Process::CGI::Kernel 
	langinfo_XXX() e.g. langinfo_get_charset()...
	
   FML::Command::Admin::addmoderator addadmin delmoderator deladmin 
                        addrecipient digest off on subscribe unsubscribe 
                        addmember 
	follow changes of FML::User::Control::userXXX() -> user_XXX()
	
   FML::User::Info 
	import_from_mail_header() -> add() with args changed (nuke $curproc).
	
   FML::User::Control 
	align methond name user_XXX::changed userXXX() -> user_XXX().
	follow FML::User::Info changes (import_from_mail_header() -> add()).
	
   FML::MTA::Control::Postfix Procmail Qmail Sendmail 
	template_files_dir_for_newml() -> newml_command_template_files_dir();
	
   FML::Cache::Ring 
	import_data_from() -> add().
	
   FML::ML::Control 
	template_files_dir_for_newml() -> newml_command_template_files_dir()
	removed_ml_home_dir_path()     -> ml_home_dir_removed_path()
	
   FML::Process::Fake 
	change {set,get}_emul_XXX() to internal use (_method)
	
   FML::Process::Kernel 
	follow changes of FML::Cache::Ring.
	
	use langinfo_XXX().
	
	moved lang_to_charset() and remove_too_old_files_in_dir() from
	FML::Process::Utils to here and change lang_to_charset() and
	remove_too_old_files_in_dir() to module internal use.
	
   FML::Process::Utils 
	removed_ml_home_dir_path        -> ml_home_dir_removed_path
	find_latest_removed_ml_home_dir -> ml_home_dir_find_latest_removed_path
	template_files_dir_for_newml    -> newml_command_template_files_dir
	
	set_language_hint        -> langinfo_set_language_hint
	get_language_hint        -> langinfo_get_language_hint
	set_charset              -> langinfo_set_charset
	get_charset              -> langinfo_get_charset
	set_accept_language_list -> langinfo_set_accept_language_list
	get_accept_language_list -> langinfo_get_accept_language_list
	
	thread_db_args   -> article_thread_init
	
	changed to internal use.
	language_of_html_file -> _language_of_html_file
	
	move lang_to_charset() and remove_too_old_files_in_dir() to
	FML::Process::Kernel.

2005/08/15

   FML::Log 
	use sprintf instead of "${name}[${pid}]:" to avoid error in
	perl 5.6.x.

2005/08/10

   FML::Process::CGI::Kernel 
   FML::Process::Calendar Addr Alias ConfViewer Command 
		 Distribute Configure Digest DocViewer Error HTMLify 
		 Kernel Emulate Utils Fake PGP FetchFML 
	config_files_XXX() -> config_cf_files_XXX() to clarify the meaning.

   FML::Process::Emulate 
	FNF: 	generate_config_cf_from_config_ph -> 
		config_cf_generate_from_config_ph
	
   FML::Error 
   FML::Error::Analyze 
   FML::Error::Analyze::histgram simple_count 
	module internal variables are changed.
	o summary() -> get_summary()
	o removal_address() -> get_address_to_be_removed()
	
   FML::Config::Menu 
   FML::Filter::External::clamscan 
   FML::Filter::MimeComponent 
   FML::Process::Flow Kernel 
	s/temp_file_path/tmp_file_path/g;
	s/tmp_files_clean_up/tmp_file_cleanup/g;
	
   FML::Process::Flow Kernel 
	s/incoming_message_queue_clean_up/incoming_message_cleanup_queue/g;
	
   FML::Process::State 
	current_process_ml_name_init() -> current_process_init().
	
   IO::Adapter::DBI 
	$sql_QUERY -> $sql_query_QEURY

   variables	
	$sql_QUERY -> $sql_query_QEURY

2005/08/09

   FML::Filter 
   FML::Filter::MimeComponent 
	FNF: rename read_filter_rule_from_file() -> read_filter_rule_file().
	
   FML::MUA::POP3 
   Mail::Delivery::Queue 
	FNF: content_dup2() -> dup_content()

   Mail::Message::ToHTML 
	fixed function name:
	o htmlfy_rfc822_message() -> htmlify_rfc822_message().
	o html_begin() ->  html_start()

2005/08/08

   FML::Process::Kernel 
	FNF: if (defined $queue) { $queue->open( ... );}
	
   FML::Header 
	fix comments.
	fix $addr_for_post -> $article_post_address.
	enforce use of "return $value" form.

2005/08/06

   Mail::Message::Utils 
	define get_time_from_header() method (moved from Mail::Message::DB).
	
   Mail::Message::ToHTML 
	switched to use Mail::Message::Utils::get_time_from_header.
	
   Mail::Message::DB 
	overhaul:
	[sg]et_db_module_name() -> [sg]et_db_module_class().
	get_time_from_header() -> _get_time_from_header().
	mov get_time_from_header() to Mail::Message::Utils class.
	clean up. remove not used variable.
	fix db_close().
	fix comments.
	
   FML::Process::PGP 
	bug fix: -h -> -l

2005/08/03
   7.98.3 English document revised.

2005/07/01

   FML::Process::Kernel 
	garbage collection runs only when valid ml_home_dir found.
	
2005/06/27
   7.98.3 Japanese document revised.

	日本語のドキュメントをオーバーホールしました。	

2005/06/04

   7.98.2 bug fix method naming convension (FNF).

   FML::MUA::POP3 
	bug fix::check queue_id value itself, too
	
   FML::Process::Kernel 
	define _get_debug_level(), moved from FML::Process::Utils and
	made private.
	
   FML::Process::Fake 
	switched to use FML::Process::Switch::NewProcess().
	bug fix pcb handling.

   FML::Process::Kernel QueueManager Error 
	$curproc->OBJ_METHOD() form (FNF):
	[sg]et_event_timeout() -> event_[gs]et_timeout().
	
   FML::CGI::User 
	moved get_address_list(), called only at this module, from
	FML::Process::Utils to here. Also, it is changed to the private
	method; get_address_list() -> _get_address_list().
	
   FML::Process::CGI::Utils 
	move get_ml_list definition, used only here, to this module.
	also it is changed to private.
	
   FML::Process::Utils 
	remove get_ml_home_prefix_maps() definition, which is not used.
	
	move definitions to proper module::get_ml_list(), get_address_list()
	and get_debug_level().
	
   FML::Mailer 
   FML::Article::Sequence 
   FML::Command::SendFile 
   FML::Config::Menu 
   FML::Process::Addr Alias Calendar Command ConfViewer 
                 Configure Digest Distribute DocViewer Error FetchFML 
                 Flow HTMLify PGP State Kernel Emulate Fake Utils
   FML::Process::CGI::Kernel 
	method naming fixed to $curproc->OBJ_METHOD() form (FNF).
	get_article_id                 -> article_get_id
	set_article_id                 -> article_set_id
	config_files_append_to_list    -> config_files_append
	append_to_config_files_list    -> config_files_append_to_list
	get_config_files_list          -> config_files_get_list
	load_config_files              -> config_files_load
	set_config_files_list          -> config_files_set_list
	verify_sender_credential       -> credential_verify_sender
	get_current_process_ml_name    -> current_process_get_ml_name
	set_current_process_ml_name    -> current_process_set_ml_name
	fix_perl_include_path          -> env_fix_perl_include_path
	parse_exception                -> exception_parse
	parse_incoming_message         -> incoming_message_parse
	clean_up_incoming_queue        -> incoming_message_queue_clean_up
	get_cui_menu                   -> menu_get_cui_config_file_path
	get_gui_menu                   -> menu_get_gui_config_file_path
	resolve_ml_specific_variables  -> ml_variables_resolve
	outgoing_message_open_channel  -> outgoing_message_cache_open
	open_outgoing_message_channel  -> outgoing_message_open_channel
	inform_reply_messages          -> reply_message_inform
	prepare_file_to_return         -> reply_message_prepare_template
	clean_up_tmpfiles              -> tmp_files_clean_up
	reset_umask                    -> umask_reset
	set_umask_as_public            -> umask_set_as_public

2005/06/03

   7.98.2 queuing system revised.

	キューイングシステムの微修正

	POP/IMAP による MTA+ML エミュレーションをサポート (fetchfml)。

	この実装を試すことで、現在のキューイングおよびキャッシュシステ
	ムが妥当かあるかどうかが分かります。基本構造は、そのままですの
	で、本質的には変わっていませんが、２、３の拡張が必要でした。

   FML::PCB 
	fix dump_variables() for context based switching.
	define {set,get}_current_context().

   fetchfml
	FML::Process::FetchFML added.
	FML::MUA::POP3 added.
	etc/command_line_options modules install.cf.in 
		add fetchfml definitions.

   variables
	define fetchfml related variables.	
	$fetchfml_*_hook added.

   Mail::Delivery::Queue 
	fix args and comments of *_dir_path().
	implement local_{dir,file}_path(), content_dup2(), open() and close().
	queue_id = second + microsecond + pid + counter.
	now other module can extend class for local use.
	
   FML::Process::Switch 
	alloc shared memory area in $args (shared_hash_get() uses).
	implement NewProcess().
	
   FML::Process::Kernel 
	incoming queue system revised.
	o move some log to logdebug.
	o not use queue file directly. instead use $queue->open() method.
	o use incoming_message_set_current_queue() instead of
	mail_queue_set_incoming_queue().
	o clean up incoming queue removal code.
	
   FML::Process::Utils 
	implement helper functions for incoming cache::queue system.
	o incoming_message_set_current_queue()
	o incoming_message_get_current_queue()
	o incoming_message_stack_queue_for_removal()
	o incoming_message_remove_queue()
	
	shared memory for IPC between parent and child $curproc processes.
	o shared_hash_get()
	
   FML::Process::State 
	remove mail_queue_set_incoming_queue($queue),
	mail_queue_get_incoming_queue().
	XXX alternative methods available in FML::Process::Utils.
	
   FML::Article 
	switched to use $curproc->incoming_message_get_cache_file_path();

2005/06/02

   MIME-Base64 removed.

2005/05/31

   FML::Process::Kernel 
	"my $path = $obj->cache_file_path();" is wrong. old implementation
	saves the FML::Cache::Ring file path for later use. But it is
	ambiguous. When many processes (> modules) runs simultaneously, $path
	may be overwritten by the next content.  Instead, use $queue_file
	since $queue_file (queue::incoming::ID) is unique.
	
   FML::Process::Kernel Utils 
   FML::Restriction::Post Command 
	fix naming convension (FNF).
	set_incoming_message_cache_file_path -> 
		incoming_message_set_cache_file_path
	get_incoming_message_cache_file_path -> 
		incoming_message_get_cache_file_path

2005/05/30

   Mail::Message::ToHTML 
   FML::Filter::TextPlain 
	use Mail::Message::Encode not MIME::Base64.
	
   Mail::Message::Encode 
	switch to use MIME::Base64::Perl not MIME::Base64 module.
	define raw_decode_{base64,qp}().

2005/05/29

	投稿制限: PGP/GPG の電子署名を元にしたアクセス制御を可能にする

   variables
	o define PGP related variables
		pgp_config_dir gpg_config_dir path_gpgv path_gpgsplit
	o define editors: vi, ng, mule, emacs, xemacs

	+path_gpgv
	+path_gpgsplit

	remove $gpg_config_dir, $pgp_config_dir.
	
	define $article_post_{auth,encrypt}_{pgp,gpg}_config_dir and
	${admin_,}command_mail_auth_{pgp,gpg}_config_dir.
	
	add $fmlpgp_*_hook

   etc/command_line_options
   etc/modules 
   etc/install.cf
	define fmlpgp fmlpgp5 fmlpgpe fmlpgpk fmlpgps fmlpgpv fmlgpg
	fmlgpgv.

   bin/ utilities added.
	bin/*	
	etc/command_line_options modules 
	etc/install.cf.in 

	add fmlgpg fmlgpgv fmlpgp fmlpgp5 fmlpgpe fmlpgpk fmlpgps
	fmlpgpv.

   FML::Process::PGP 
	For convenience, create a conventional named dir (e.g. pgp-admin) and
	symlink to the current style dir.
	For example::pgp-admin@ -> pgp-admin-command-mail-auth
	
   FML::Restriction::Post 
	define check_pgp_signature, which permits article post when the
	article has proper PGP::GPG signature.

	For example:

	article_post_restrictions =	reject_system_special_accounts
					check_pgp_signature
					reject

	setup and reset environment more strictly.
	etc/{pgp,gpg}-$role style naming ("_" -> "-").

   FML::Command::User::admin 
   FML::Restriction::Command 
	${admin,}command_mail_restrictions support "check_pgp_signature" rule.
	Both restrictions uses same rule name but which needs different
	keyring directories. So, we need to handle carefully the context of
	two restrictions.
	
   FML::Process::State 
	definie command_context_set_try_admin_auth_request(),
	command_context_reset_try_admin_auth_request() and
	command_context_get_try_admin_auth_request() to handle context of
	$*command_restrictions.
	
2005/05/26-27

	fml-devel を fml 7.98.1 とする。
	スレッドシステムを書き直したら 7.99.x の予定。

   variables
	o define $use_article_spool (as ${ues_spool:-yes}).
	o log: define syslog related variables
	o command:
		$use_command_mail_reply_preamble = yes
		$use_command_mail_reply_trailor  = yes

   ErrorStatus 
	FML::Filter not use this module.
	
   FML::Article 
	use_spool -> use_article_spool
	
   FML::Log 
	preliminary syslog extension support.
	
   FML::Article::Summary 
	FNF.
	$fh -> $rh
	
   FML::Command::Auth 
	log errors more.
	
   FML::Command::User::subscribe unsubscribe 
	$curproc->allow_reply_message() -> $curproc->is_allow_reply_message().
	
   FML::Process::DocViewer 
   IO::Adapter::AtomicFile 
   Mail::Message::ToHTML 
   FML::Command::DirUtils 
   FML::Config::Convert 
   FML::Filter::MimeComponent 
   FML::Config::Tiny 
   FML::Header::MessageID Subject 
   FML::MTA::Control::Procmail 
   FML::Process::DocViewer 
   IO::Adapter::AtomicFile 
   Mail::Message::ToHTML 
	FNF: not use str.str

   FML::Filter::External::clamscan 
	fixed to work.
	
   FML::MTA::Control::Postfix 
	not use str.str.
	white space clean up of alias file path.
	_remove_postfix_style_virtual() -> remove_postfix_style_virtual().
	
   FML::MTA::Control::Sendmail 
	fix the comment of virtual file.
	not use str.str.
	_remove_postfix_style_virtual() -> remove_postfix_style_virtual().
	
   FML::Process::Configure 
	fix comments (FNF).
	$curproc->allow_reply_message() -> $curproc->is_allow_reply_message().
	
   FML::Process::Flow 
	remove _xxx() methods among modules::rename _XXX() to sysflow_XXX().
	
   FML::Process::Utils 
	fix comments (FNF).
	remove is_safe_syntax(), which is not used.
	rename allow_reply_message() to is_allow_reply_message().
	
   Mail::Delivery 
	fix typo::EMTP -> ESMTP.
	
   Mail::Bounce::Exim Freeserve GOO Qmail Smtpfeed 
	clean up.
	FNF.
	use self->address_clean_up($addr, $addr) to clean up address if could.

   FML::Demo::Calendar 
	fixed::_Calender -> _calender
	
   FML::IPC::Queue 
	set umask(077) in creating a tmp file.
	
   FML::MTA::Control 
	rename _remove_postfix_style_virtual() to
	remove_postfix_style_virtual(), which is used among plural
	modules. 
	not use str.str form.
	
   FML::Process::Command 
	$use_command_mail_reply_preamble toggles off::on to show the preamble
	of command reply.  $use_command_mail_reply_trailor toggles command
	processing summary.
	
   FML::Process::Distribute 
	more strict error handling.
	more comments.
	
   FML::Process::Fake 
	fix comments.
	fix error handling.
	
   FML::Process::CGI::Kernel 
	remove the duplicated code.
	use Mail::Message::Date instead of `date`.
	fix comments.
	
   FML::Restriction::Command 
	croak() -> logerror().
	fix comments.
	
   Mail::Delivery::Queue 
	add randam factor into exponential back off.
	back off is upper limited by 4000 sec.
	
   Mail::Delivery::Net::INET4 
	set timeout for socket(2).
	
   Mail::Message::Encode 
	use Jcode always.
	
   Mail::Message::MH 
	sort the output for a,b,c style input.

   FML::Filter::External Header Size TextPlain 
   FML::Filter::ErrorStatus 
   FML::Filter 
	use FML::Filter::ErrorStatus instead of ErrorStatus.

   FML::Process::Kernel 
	fml-devel YYYYMMDD -> fml $version (7.9x.y-YYYYMMDD)
	
	modified to use incoming_message_header(), temp_file_path() et.al, to
	avoid raw descrptions.
	
	bug fix config.cf search algorithm.
	
	defne sysflow_XXX() methods used in FML::Process::Flow.
	
	not use str.str form.
	
	clean up.
	
   Tie::JournaledDir 
	fix comments, error messages.
	
   Tie::JournaledFile 
	fix comments, error messages.
	more defined() checks.
	
2005/05/01

	現在のソースコードを fml 7.98.1 (cvs tag fml-7-98-1)と定義する。
	なお、スレッドのコードを修正後に fml 7.99.1 とする。


----------------------------------------------------------------
Appendix

	7.98.17 update modules: cpan modules, IM et.al (to be planned).
	7.98.16 FML::Install is enhanced.
	7.98.15 IM updated to IM-150.
		fix wrong ID incrementation in article to html conversion.
	7.98.14 www interface for anonymous users.
		Anyone can submit a subscribe/unsubscribe request via
		www interface. 
	7.98.13 "isolate" instead of "reject" spam or unknown messages
		by default.
	7.98.12 delivery system error handling fixed.
	7.98.11 ignore in restrictions supported.
	7.98.10	delivery system overhaul sequal.
	7.98.09	delivery system overhaul
	7.98.08	correct context switch.
		address validation in smtp transaction.
	7.98.07	confirmation + manual subscribe/chaddr/unsubscribe
		manual subscribe/chaddr/unsubscribe
	7.98.06	fundamentals of moderator mode implemented.
	7.98.05	add reviveml command (to revive a removed ML).
		add PostgreSQL support.
		add LDAP support.
	7.98.04	minor fixes. clean up. 
		clean up method naming convension.
	7.98.03	Japanese/English document overhaul/revised.
	7.98.02	queuing system revised. fetchfml added.
		PGP/GPG authentication.
		bug fix method naming convension (FNF).
		MIME-Base64 removed from cvs tree.
	7.98.01	overhaul.

  [注意]
	コマンドメールのコードを全面的に書き直しました。

	fml-devel-20040303 が、このコマンドメールの変更が"入っていない"
	最後のスナップショットです。

	fml-devel-20040313 では、変数命名のルールが大きく変わりました。
	気をつけてください。

	2004/09 以降の fml8 は疑似 MTA 的な動作をしていて、自分のメー
	ルキューイングシステムを使ってエラー処理や再送処理を行ないます。
