From d519a7f4088b9481f42e6b6f364bb18f2735f016 Mon Sep 17 00:00:00 2001 From: Ken'ichi Fukamachi Date: Mon, 10 Sep 2018 19:52:48 +0900 Subject: changes in fml-devel (before 7.98) age separeted from CHANGES.txt to here. --- fml/doc/ja/CHANGES-7.97.txt | 8073 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 8073 insertions(+) create mode 100644 fml/doc/ja/CHANGES-7.97.txt (limited to 'fml/doc') diff --git a/fml/doc/ja/CHANGES-7.97.txt b/fml/doc/ja/CHANGES-7.97.txt new file mode 100644 index 00000000..6e422369 --- /dev/null +++ b/fml/doc/ja/CHANGES-7.97.txt @@ -0,0 +1,8073 @@ +# -*- mode:text coding:euc-jp *-* + + CHANGES in fml-devel (fml before 7.98). + +2005/01/19 + + FML::Merge::FML4::RULES.txt + FML::Merge::FML4::Rules + + update rules + + FML::Process::QueueManager + logwarn() -> logdebug() for "... try later." message. + +2005/01/01 + + FML::Header + handle X-Stardate::and Precedence: header field + + FML::Process::Error + override Reply-To::and Errors-To: header fields to rewrite the address + the error message sent to in forwarding. + + FML::Process::Kernel + enhanced general reply message system. + o add X-Stardate:, Precedence::and Errors-To: header fields. + o enhance Reply-To::field handling. + + FML::Merge::FML4::config_ph + system_timezone = +0900 + +2004/12/30 + + variables + define $outgoing_mail_header_x_ml_name + + FML::Header + rewrite_errors_to use $outgoing_mail_header_errors_to to rewrite + Errors-To: header field ($maintainer by default). + + FML::Merge + cosmetic changes: $VARIABLE format, "\n". + + FML::Merge::FML4::RULES.txt + FML::Merge::FML4::Rules + fix definitions + + FML::Merge::FML4::config_ph + enhanced to handle variables properly. + o Errors-To: + o time zone. + o handle old definitions e.g. subject tag, old variables in fml 2 age. + o "ignore" operation print out comments. + o fix content of *_dir and *_map variables. + +2004/12/29 + + FML::Process::Kernel + verify config.{cf,ph} existence + + FML::Merge::FML4::config_ph + handle use_fml8_value definitions. + translate outgoing_address. + + FML::Merge::FML4::RULES.txt and FML::Merge::FML4::Rules + convert OUTGOING_ADDRESS + care for a few old configurations + +2004/12/23 + + FML::CGI::Calendar + FML::Process::Calendar + FML::Demo::Calendar + Calendar::Lite is removed. + move Calendar::Lite to FML::Demo::Calendar since this module needs + FML::* class. + +2004/12/19 + + FML::Process::Emulate + emulate fml4's mead.pl and msend.pl + + FML::Process::Kernel + $debug_module_regexp_list restricts debug regions. + +2004/12/18 + + デバッグモードでログの出方が変わるようにしました。 + + variables + define $use_debug to control log messages. + + FML::Process::Kernel + logdebug() works if debug = yes defined. + +2004/12/15 + + Mail::Delivery::Queue + randomize queue list more in fair-queue mode. + implement clean_up() method + + FML::Process::QueueManager + log delay time in success of delivery. + + FML::Process::Utils + implement remove_too_old_files_in_dir() method. + + FML::Process::Kernel + remove too old files in tmp/ and incoming queue. + + FML::Merge::FML4::RULES.txt + fix/update rules + + FML::Merge::FML4::Rules + regen. + + FML::Merge::FML4::config_ph + support more special conversion rules + +2004/12/09 + + FML::Merge + enhance arguments of translate() call to pass $diff. + + FML::Merge::FML4::config_ph + FML::Merge::FML4::Rules based version. + implement fallback mechanism to support complicated cases. + + FML::Merge::FML4::RULES.txt + keywords changed + + FML::Process::Emulate Kernel + run fallback to generate config.cf when config.ph is newer + than config.cf. + + etc/compat/fml4 + use -i option to generate default_config.ph + + FML::Merge::FML4::RULES.txt + fix rules + + FML::Merge::FML4::Rules + rules fixed. + + FML::Merge::FML4::config_ph + enhance special handlings to support more rules + +2004/12/08 + + Mail::Message + implement message_chain_as_array_ref() method. + +2004/12/05 + + FML::Article Digest Error Filter Mailer Merge Parse + FML::Article::Sequence + FML::Command::Auth Filter HTMLify SendFile + FML::Command::User::admin + FML::Error::Analyze + FML::Error::Analyze::histgram + FML::Process::Command Configure Distribute Error Kernel + QueueManager State Utils + FML::Process::CGI::Kernel + FML::Restriction::Command Post + FML::User::Control + define logdebug() to disable log messages. + modified to use proper log$role(). + bug fix log messages if needed. + + +2004/11/25 + + fml4 の fml.pl を fml8 の fml.pl に入れ換え可能とした。 + /usr/sbin/sendmail (sendmail 互換コマンド)みたいな扱いですね。 + + fml.pl (fml8) が起動された時に config.cf が見つからないと、 + MLのホームディレクトリにある config.ph から config.cf を生成し、 + それを使うことで fml8 プロセスとして動作します。 + + 設定ファイルの自動変換が可能な範囲は限られていますが、fml4 の + メニューで設定可能な(単純な)ものなら自動変換して何とかなるよう + になっています。 + + variables + defind $compat_* + + FML::Install + define install_compat_dir() method to install + etc/compat/ dir for fml4 compatibility codes. + + FML::ML::Control + implement install_config_cf() method to install only config.cf. + + FML::Command::Admin::mergeml + clean up around set_target_system() + + FML::Process::Utils + o mkdir()::bug fix defined check for specified mode. + o implement default_config_cf_filepath() method. + + FML::Merge + speculate_default_config_ph_path() returns specified location of + default_config.ph if ::usr::local::fml::default_config.ph not found. + + FML::Process::Emulate Kernel + implement fallback function in resolve_ml_specific_variables(). + + when resolver fails, resolve_ml_specific_variables calls fallback if + specified. + + FML::Process::Emulate uses this fallback mechanism to generate a + config.cf from fml4's config.ph file at the first time. + +2004/11/24 + + FML::Command::Admin::mergeml + generate merge() method by separeting codes. + +2004/11/23 + + FML::Process::Kernel + fix white space cosmetics. + + FML::Process::Emulate + re-implement fml.pl as fml4 emulator which emulates fml8's + article_post or command_mail functions by following the arguments. + + TODO::when config.cf not exists, convert fml4 configurations to fml8 + ones on the fly. + +2004/11/21 + + メニュー形式で設定変更を可能にする + まだ CUI だけしかできていないし、とりあえず使えるけど準備段階 + + variables + define $fml_default_{cui,gui}_menu for configuration interfaces. + + installer + install menu + + FML::Config + dump_variables can return results as HASH_REF if get_diff_as_hash_ref + mode specified. + + implement merge_to_file() method to dump hash values into + configuration file. + + FML::Process::Kernel + import default_{cui,gui}_menu from main.cf name space. + + FML::Process::Utils + implement get_{cui,gui}_menu() methods. + + FML::Config::Menu + fix menu path from testbed one. + +2004/11/14 + + Mail::Message::ToHTML + add monthly thread index + + FML::Restriction::Post + define $article_post_article_thread_lifetime anyway (hmm, valid?) + + variables + article_post_article_thread_lifetime ? + スレッドの続きであれば短時間のあいだ、 + From: に関わらず投稿を許すオプションの”時間”を指定する。 + でも、この変数名でいいかなぁ? + +2004/11/03 + + ちょっとクリーニング中… + + etc/dot_htaccess + add dummy configuration for convenience: + AuthUserFile "/dev/null" by default. + + FML::Process::Distribute + rename private method::_distribute -> _deliver_article_prep + +2004/10/31 + + クリーニング中… + + Mail::Message::Thread + bug fix comment::fixed return value + + FML::Article::Thread + sort, clean up. + +2004/10/28 + + (まだ暫定版ですが)記事の投稿時に、スレッドの続きであれば短時間 + From: に関わらず投稿を許すオプションを追加しました。登録されて + いる以外のアドレスから、たとえば転送先からでも投稿を許すといっ + た場合には便利です。 + + デフォルトでは、もちろん使いません(明示的に設定が必要)。 + + FML::Restriction::Post + implement "check_article_thread" operation. + Itt allows post from someone who reffers articles within one weeks. + + FML::Article + update article message-id cache if article is saved successfully. + + FML::Header + bug fix and enhance reference extranction logic. + +2004/10/27 + + variables + add $article_message_id_cache_dir variable. + allow check_article_thread in $article_post_restrictions. + +2004/10/09 + + CGI skin selection + CGI の見栄えを選べるようにしました。 + いまのところ、menu.cgi は昔風の感じ、config.cgi は + fml8 デフォルトのテーブルベースのものです。 + + FML::Process::CGI::Kernel + show "back to top" menu in old fashion skin case. + + FML::CGI::Menu is removed. + + FML::CGI::Admin::Menu + FML::CGI::MLAdmin::Menu + FML::CGI::Admin::MenuOld + FML::CGI::Skin::Base OldFashion Wizard + implement plural GUI skins. + + create FML::CGI::Skin::* class. remove FML::CGI::Menu. + FML::CGI::Menu -> FML::CGI::Skin::Base and create sub classes + inheriting Base. + + etc/modules + Menu -> MenuOld for *::menu.cgi + +2004/10/06 + + ドキュメントのオーバホール + + libexec/loader.in + chop -> chomp + + FML::Process::Kernel + modify configuration error check: + o validate the value of $maintainer and $ml_address variables. + o disable checks for *.cgi processes. + +2004/10/03 + + newdomain および rmdomain コマンド + newdomain および rmdomain コマンドが作る/操作するファイルの + パーミッションを修正 + + FML::Process::Utils + implement chown() method for convenience. + +2004/09/29 + + インストーラの修正 + + etc/ + define new variable $group_writable_config_dir. make configure + controll $group_writable_config_dir and $primary_ml_home_prefix_map. + + FML::Install + set up $group_writable_config_dir. + +2004/09/06 + + fml 4 から 8 へ変換するコンバータの修正 + + FML::Merge + replace "::tmp::default_config.ph" with + speculate_default_config_ph_path() method. + + FML::Command::Admin::mergeml + launch warning on site_init.ph and site_force.ph if needed. + +2004/09/03-04 + + キューイングシステムの修正 + + FML::Process::Kernel + implement is_process_time_limit() method to warn that end of process + life time comes soon. + + Mail::Delivery::Queue + bug fix queue strategy info file hanling. + implement log(), {set,get}_log_function(). + log more and more. + log messages in removing queue + is_valid_queue() returns ok if the specified queue exists in active or + deferred queue. + + FML::Process::QueueManager + set log function for qmgr. + reset queue list fter rescheduling. + pull up $max_count to 100. + resolve lock confliction in queue manipulation. + fix message::remove too old queue ... + targets cleanup() operatites are non active queues. + + FML::Command::Admin::mailq + print only valid queue + show all entries not only within active queue. + +2004/08/30 + + 2004/08 の主要な変更点はキューイングシステムの拡張/修正です。 + 長いあいだ高負荷下で運用するとか file system full を定期的に起 + こすといった実験を繰り返しています。いまのところ大丈夫そうです。 + + 間違っていると致命的なところなので、おしえてください。 + + [TODO] + もう少し、たまったキューの処理の順番など賢くする必要があります。 + + deferいがいに明示的にdefer/activeを操作するためのholdキューと + 特定のキューを優先制御する仕組み + +2004/08/20 + + Mail::Delivery::Utils + eval q{} + +2004/08/15 + + キューイングシステムの拡張 + e.g. 遅延の場合 exponentail back off をおこなう + + FML::Process::QueueManager + Mail::Delivery::Queue SMTP + implement voluntary sleep::wakeup queue mode switching. + o implement queue management utilities. + o move queue from active to deferred if delivery failed. + o rename *_strategy to *_policy + o overhaul::clean up internal style. + + FML::Process::QueueManager + specify queue strategy to get proper queue list. + currently we use "fair-queue". + bug fix condition that empty queue or not + + Mail::Delivery::SMTP + log $recipient_limit info if limit != 1000 + + Mail::Delivery::Queue + implement basic queue management strategy. + + FML::Article + log more info in failing over. + + FML::Process::Distribute + warn "not queue flush due to MTA fatal error.". + +2004/08/14 + + キューイングシステムをいろいろと微修正 + + FML::Process::Kernel + clean up mail queue periodically. + ensure initial value to be defined. + + FML::Process::QueueManager + process 2 requests in one process (temporary solution). + XXX-TODO::enhance qmgr more cleverly. + + change arguemnts for new() and send(). + implement template of cleanup() method. + + change cleanup() logic: + get all queue id list and remove too old invalid queue. + + Mail::Delivery::Queue + clean up new(). + + list() can take an argument for $class if needed. + + implement is_valid_queue() and get_class_list() methods. + + implement list_all(), last_modified_time(). + remove get_class_list(). + + FML::Filter::External + FML::Process::{Distribute,State} + temporal failure when external filter process timeouts. + + if external filter process timeouts, notify it to $curproc layer, and + distribution process exit(75) for temporal failure. + + implement filter_state_{set,get}_tempfail_request(). + + FML::Command::Admin::mailq + show number of requests if requests > 0 + + IO::Adapter::File + back up sequence file before operation. + rollback file itself in emergency if could. + +2004/08/12 + + FML::Process::Kernel + define default subject used if unspecified + +2004/07/27 + + FML::Install + implement message_nl() and modified to use it. + + FML::Process::Kernel + log error message::exit(EX_TEMPFAIL) to retry later. + +2004/07/25 + + FML::Command::HTMLify + rewritten to use $curproc->thread_db_args() method for code sharing. + + FML::Process::Utils + thread_db_args() returns htmlifier parameters with subject tag hints. + + Mail::Message::ToHTML + handle subject tag separetely in string escaping. + + Mail::Message + implement get_print_mode() + + Mail::Delivery::SMTP + override print mode of Mail::Message object to "raw" in fallbacking. + +2004/07/23 + + OVERHAUL ... + + FML::Confirm + modified to clarify that db is opened. + ensure initialized value. + fix comments (FNF). + + FML::Error + fix comments (FNF). + clarify error messages. + + FML::Filter + fix comments (FNF). + clarify messages. + + FML::Header + fix comments (FNF). + ensure initial value. + defined check more. + + FML::Install + bug fix existence of destination file. + + FML::PCB + use "return ..." always. + + FML::Article::Sequence + fix comments (FNF). + use ::::o if could. + + FML::Article::Spool + $dir -> $entry + fix comments. + + FML::CGI::ML + fix comments. + fix error messages. + + FML::Command::DirUtils + fix typo of error messages. + + FML::Command::Admin::subscribe + fix comments (FNF). + ensure initial value. + + FML::Command::Admin::subscribe + fix comments (FNF). + ensure initial value. + + FML::Command::Admin::unsubscribe + fix comments (FNF). + ensure initial value. + + FML::File::Rotate + remove not used variables. + + FML::Filter::MimeComponent + fix comments. + fix error messages. + + FML::Filter::Size + ensure initial value. + + FML::Filter::TextPlain + fix comments. + use ::::o if could. + + FML::Header::MessageID + fix comments. + use "return ..." always. + + FML::Header::Subject + fix style (FNF). + use ::::o if could. + + FML::IPC::Message + check input data. + + FML::Process::Command + fix comments and error messages. + + FML::Process::Error + fix comments. + ensure initial value. + check $maintainer value. + + FML::Process::QueueManager + add qmgr::prefix to log messages. + + FML::Command::HTMLify + fix comments. + use ::::o if could. + + FML::Command::Admin::changepassword + fix error messages + + FML::Command::Admin::mergeml + fix error messages + + FML::Process::CGI::Param + fix error upcall + + FML::Restriction::Base + fix comments. + + FML::User::Control + fix error messages. + ensure initial value. + + FML::User::Info + fix typo + + Mail::Message::Date + fix comments. + modify variable name to clarify the role. + + Mail::Message::Encode + bug fix arguments. + + FML::Process::CGI::Kernel + fix typo. + show nl error message if could. + + FML::Process::Utils + fix comments, style and add loop label, ... (FNF). + ensure initial value. + + FML::IPC::Queue + change constructor argument (but not used yet). + fix error messages. + fix comments. + +2004/07/18 + + imported im-147. + +2004/07/11 + + オーバホールひきつづき実施中です。 + + Calendar::Lite + fix comments. + fix "a"."b" -> "ab" form. + + IO::Adapter + IO::Adapter::AtomicFile DBI File MySQL + fix comments. + explicitly use "return". + modify error messages. + ensure initialized value. + +2004/07/07 + + Mail::Message::Address + put back initializtion code to 1.3 one. + +2004/07/06 + + FML::Command::User::subscribe unsubscribe + always ignore arguments of {subscribe,unsubscribe} command + mail requests to ensure more correct confirmation. + +2004/07/01 + + FML::Process::Distribute + Mail::Message::ToHTML + reduce error messages + +2004/06/30 + + オーバーホール実施中 (2004/06/27 - ) + + FML::Command::Admin::digest digestoff digeston on spool + IO::Adapter + IO::Adapter::Array ErrorStatus NIS UnixGroup + Mail::Bounce + Mail::Bounce::DSN Exim FixBrokenAddress Freeserve GOO + Postfix19991231 Qmail SimpleMatch Smtpfeed + Mail::Bounce::Language::Japanese + Tie::JournaledDir JournaledFile + overhaul: + fix comments and messages. validate initial value. + +2004/06/29 + + FML::Process::Distribute + mark by stop_this_process() when submission denied. + + オーバーホール + FML::Command::Admin::chaddr off + FML::Command::User::admin digest unsubscribe + Mail::Message::Address + Mail::Delivery + Mail::Delivery::ESMTP ErrorStatus QueueUtils + Mail::Delivery::Net::INET4 INET6 + [overhaul] + o fix comments. + o fix messages/error messages. + o use //o if could. + o specify initial value. + +2004/06/27 + + FML::Filter::External::clamscan + fix typo + + FML::Cache::Journal + overhaul: + o fix comments. + o defined() check. + + FML::Cache::Ring + overhaul: + fix comments. + x.y -> sprintf(format, x, y) + fix return value. + change variable name to be more readable. + + FML::Command + overhaul: + fix comments. + use ::::o if could. + bug fix notice_cc_recipient handling. + reverse command_mode check code. + + FML::Command::Auth + fix comments. + quotemeta search key. + + FML::Command::Syntax + fix comments. + my (@var) = ... style. + + FML::Command::Admin::edit + fix comments. + warn() -> ui_message(). + + FML::Command::Admin::get + fix comments. + bug fix reset of $command_args values. + + FML::Command::Admin::list + fix comments. + change private method name. + modify sanity check a little. + + FML::Command::Admin::log + fix comments. + change default::tail -100 by default. + + FML::Command::User::chaddr + bug fix::implement verify_syntax(). + + FML::User::Control + tune IO::Adapter::close() timing. + + use TERM_NL(map) style not which_map_nl() where TERM_NL() can handle + charset dependent map name translation. + + FML::Process::Utils + re-implement which_map() + + FML::Process::Kernel + TERM_NL() macro support in message translation. + + Mail::Message + Mail::Delivery::Queue SMTP + FML::Process::Distribute + queue system debug::trace number of bytes written. + + Mail::Delivery::Queue + validate if message object supports write_count() method. + + IO::Adapter::AtomicFile + close() allows 0 byte file e.g. in the case so that all content is + removed. + + IO::Adapter::File + bug fix delete(): + o not apply quotemeta() for key. + o autoflush(1) + o check the number of matching, return error if no any matched line. + +2004/06/25 + + FML::Filter::External::{bogofilter spamc clamscan} + FML::Process::Distribute State + preliminary support of build-in virus/spam checker. + + FML::Command::Admin::dir + clean up. + handle CUI case (ok?) + + FML::Process::QMail + nuke old style FML::Log use. + +2004/06/23 + + Mail::Message::Subject + bug fix::delete_dup_reply_tag() runs always. (fml-devel: 711) + +2004/06/17 + + パッケージ化のための変更。ちょっと間違ってた _o_ + FML::Install + fix message of $default_config_dir installation when + install_root specified. + fix install path of $ml_spool_dir when install_root specified. + +2004/06/14 + + メールキューイングの仕組みを、もっと正確にしました。 + + たとえば、ファイルシステムが溢れた時も可能な限り、再送処理を + 行なうようになりました。 + + 処理のどの段階で file system full になったかによって + MTAからfmlを呼ぶ出す際のリトライ、fml自身による再送などが + 適宜、おこなわれます。 + + くわしくは、チュートリアルのトラブルシューティングあたりに + 書いておきます。参照して下さい。 + + + Mail::Message::ToHTML + bugfix @indexs use my $indexs = \@indexs; + + FML::Process::Kernel + defined($header) check before calling update_message_id_cache. + +2004/06/13 + + Mail::Message::ToHTML + set $main::opt_mimedecodequoted at + _print_li_filename(),_format_safe_header() + + Mail::Message::DB + null check $key at _db_set() + + Mail::Message::ToHTML + select index files using @indexs + +2004/06/09 + + FML::Header + FML::Process::Kernel + separate message-id duplication check and cache updating. + cache updating when process ends. + +2004/06/08 + + パッケージシステムのためにインストーラを拡張した + パッケージを作る際に、どこか仮想的なディレクトリに + 一度インストールする必要があるなら、 + + make install install_root=/some/where + + を使って下さい。/ のかわりに /some/where 以下へ + インストールされます。もちろんインストールされる各ファイルに埋 + め込まれているパスは /some/where 部分がない状態のものです。 + + 注意: 他のシステムでは + + make install prefix=/some/where + make install DESTDIR=/some/where (←きっとBSDな人でしょう) + + などが使われることもありますが、パッケージシステムを作る人にし + か関係がないこと、そして configure --prefix とまぎらわしいという + 理由により、prefix ではないキーワードを使っています。 + + install.pl.in + FML::Install + enhanced to enable "make install install_root=::prefix" for + package system. + + install_root is the prefix that is prepended to the pathnames + of installed files. + + [IMPORTANT] + + In a lot of systems, "make install prefix=::prefix" is used. + But it is confusing against usage of othre software e.g. + ".::configure --prefix=::prefix". So, we avoid this confusion + to use other keyword, which is same as Postfix. + +2004/06/02 + + Mail::Bounce::SimpleMatch + add yahoo.co.jp + change ybb.ne.jp end pattern + +2004/05/28 + + FML::Article + When we fail to create article file, we try to save the original + message at least. + +2004/05/25 + + メールキューとエラーリカバリの拡張 + + loader + define global variable $ERROR_EXIT_CODE for emergency handling. + run exit($ERROR_EXIT_CODE) if error. + + FML::Process::Kernel + implement exit_as_tempfail() + + firstly queue in. Secondarly parse it after writing of the queue is + verified. + + implement clean_up_incoming_queue(), which is run at the last of + process. + + FML::Process::QueueManager + modify log message format a little. + $q->valid() changed to $q->valid_active_queue(). + + FML::Process::Flow + call $process->clean_up_incoming_queue(); + + FML::Process::Distribute + exit(EX_TEMPFAIL) when we cannot update article sequence. + + if setrunnable() for the current article queue failed, + try to deliver it on the fly anyway. + + new FML::Filter $curproc; + bug fix my() usage. + change log message around queue id. + + FML::Process::State + fix comments (FNF). + + add methods: + filter_state_set_error() + filter_state_get_error() + mail_queue_set_incoming_queue() + mail_queue_get_incoming_queue() + + FML::Article::Sequence + more strict write error tracking + + FML::Article + more strict write error handling. + + + FML::Cache::Ring + import data from file directly. + Actually, link(2) $src to cache file. + + Mail::Delivery::Queue + check write error more strictly. + + define incoming queue. + implement new method::incoming_file_path(), incoming_dir_path(). + + not set transport (not touch transport info file) by default. + + more rigid write error tracking. + + rename valid() -> valid_active_queue() to clarify the role. + + Mail::Message + \*HANDLE -> *HANDLE{IO}. + imlement error*(). + write error track. + + IO::Adapter::File + more strict write error tracking. + sequence_increment verifies if the value is writtern. + + IO::Adapter::AtomicFile + check temporary file is non-zero. + + variables + define variables around article_spam_filter and article_virus_filter. + + FML::Filter + preliminary external spam::virus checker support. + new() takes $curproc as an argv. + use filter_state_set_error() to save determined action for later use. + + FML::Process::Command + new FML::Filter $curproc; + +2004/05/22 + + HOOKの名前を整理整頓する。 + + variables + error_analyzer_day_limit -> error_mail_analyzer_day_limit + error_analyzer_cache_dir -> error_mail_analyzer_cache_dir + error_analyzer_cache_type -> error_mail_analyzer_cache_type + error_analyzer_cache_mode -> error_mail_analyzer_cache_mode + error_analyzer_cache_size -> error_mail_analyzer_cache_size + error_analyzer_function_select_list -> error_mail_analyzer_function_select_list + error_analyzer_function -> error_mail_analyzer_function + error_analyzer_simple_count_limit -> error_mail_analyzer_simple_count_limit + + FML::Process::Command + add $command_mail_filter_{start,end}_hook hooks. + rename $command_*_hook -> $command_mail_*_hook. + + FML::Error + FML::Command::Admin::error + FML::Error::Analyze::histgram simple_count + FML::Error::Cache + rename variable::$error_* -> $error_mail_* + + FML::Process::Error + rename hooks::$error_*_hook -> $error_mail_analyzer_*_hook + + FML::Process::Distribute + add $article_post_XXX_hook but $distribute_XXX_hook is available too. + add $article_header_rewrite_{start,end}_hook + add $article_filter_{start,end}_hook + + FML::Process::Digest + rename hook::digest_*_hook -> article_digest_*_hook + + +2004/05/21 + + FML::Process::Distribute + shorten lock period in delivery + +2004/05/19 + + FML::Process::Switch + getopts case SENSITIVELY + + FML::Process::Distribute + not process _deliver_article() when error set by stop_this_process(). + + FML::Process::Kernel + -o overwrite options runs twice to ensure overwrite. + + variables + $use_article_delivery = yes + $article_delivery_transport = smtp + + Mail::Delivery::Queue + handle transport infomation. + fix comments. + +2004/05/18 + + 記事の配送システムもキューイングベースへ移行する + これで、すべての配送が一度メールキューに書くパターンになった。 + + FML::Article + bug fix::avoid duplicated initialization. + change $curproc->{ article }->{ KEY } style to method-based. + + FML::Process::Distribute + enable mail queue based delivery + + Mail::Delivery::Queue + support lock({ lock_before_runnable => yes }) extension. + + FML::Process::Distribute needs such option to own the current article + delivery by itself to distinct it from queue flush system on other + processes. + + FML::Process::State + implement set_article_id(), get_article_id(), + smtp_server_state_set_error() and smtp_server_state_get_error(). + +2004/05/17 + + 配送システム オーバーホール、つづき + + Mail::Delivery::Utils + implement {set,get}_map_status() + ensure numeric value + + Mail::Delivery::SMTP + implement fallback when it fails to send the mail to all MTA's. + failed message is inserted into mail queue for later delivery retry. + + Also, shorten retry count $max_loop_count since fallback is + implemented now. + + define {set,get}_last_command(), {set,get}_send_command_status(). + modified to use them. + + rename::socket_is_connected -> is_socket_connected + + FML::Process::Distribute + enable delivery fallback + + FML::Mailer + pass params $smpt_servers and $smtp_recipient_limit into + delivery system + +2004/05/16 + + 配送システム オーバーホール + + FML::User::Control + enhance print_userlist() for command mail. + + Mail::Delivery::SMTP Utils + rollback if DATA error occurs. + rename _get_*() -> get_*(), _set_*() -> set_*() since private methods + should not be shared over modules. + remove private method. + s/_rollback_map_position/rollback_map_position/g; + s/_reset_mapinfo/reset_mapinfo/g; + + Mail::Delivery::Utils + not export _smtplog + + Mail::Delivery::SMTP + clean up message, log. + fix retry logic. + define $MAP_ERR_OPEN. + log status of done or not (log only yet). + + FML::Command::Admin::list + remove is_cgi related codes. + +2004/05/02 + + variables + +html_archive_default_charset + +html_archive_charset_ja + +html_archive_charset_en + +path_bogofilter = @BOGOFILTER@ + +path_clamscan = @CLAMSCAN@ + + FML::Process::Utils + remove language_default(). + language_of_html_file() return $html_archive_default_charset. + + コマンドの追加(対称性、操作をしやすくするため) + admindel + moderatoradd + moderatordel + +2004/05/01 + + 非対称のユーザ制御コマンドを色々追加する。 + add2active + add2actives + add2member + add2members + add2recipient + add2recipients + addactive + addactives + addmember + addmembers + addrecipient + addrecipients + + FML::Header + modify List-* header message and condition a little. + +2004/04/30 + + コマンドのより厳しいエラーチェック + + FML::Command::Admin::{digest,off,on} + more restrict error checks. + + FML::Command::Admin::changepassword + more restrict error checks. + fix rewrite_prompt(). + + FML::Command::User::admin + call command specific rewrite_prompt() if could. + + FML::User::Control + return error messages more. + call croak() if critical error. + +2004/04/27 + + variables + define $etc_dir and fixed to use it. + newml command creates $etc_dir. + + IO::Adapter の検索 API を少し変更する + IO::Adapter 側で quotemeta() の心配をするとかしない。 + 渡された $regexp を信じるので、呼び出す側で考慮しないといけない。 + + IO::Adapter + use $regexp as itself, not quotemeta()-ify. + + FML::Process::Debug + move quotemeta($regexp) from IO::Adapter to here. + compare domains case insensitively. + + FML::ML::HomePrefix + bug fix search logic. + move quotemeta() from IO::Adapter to here. + + FML::Credential + implement is_same_domain(). + move quotemeta() from IO::Adapter to here. + + FML::Process::Utils + method-ify some module internal functions. + bug fix search logic of ml_home_prefix. + move quotemeta() from IO::Adapter to here. + + FML::User::DB + move quotemeta() from IO::Adapter to here. + + FML::Process::Kernel + fix comments. + use $str->charcode_convert_to_external_charset(), remove + hard-coded 'jis'. + + FML::Command::Auth + bug fix search logic. + move quotemeta() from IO::Adapter to here. + + FML::Header::Subject + remove _delete_subject_tag(). + method-ify delete_subject_tag(). + +2004/04/23 + + BUG FIX: パスワードファイルの初期化バグ修正 + + FML::Command::Auth + bug fix: we need to touch etc/passwd-admin file firstly. + +2004/04/22 + + コマンドメールの返事を、もっと静かに + + FML::Command::User::confirm + when unsubscribe command, stop the current process since + no more processing is required. + XXX ? hmm, wrong in some cases e.g. unsubscribe + guide. + XXX but ignore it ;-) + + FML::Process::Command + check $context if it is well defined. if ok, call command. + check value by command_context_get_normal_stop() to stop this + process. + + FML::Process::State + command_context_init() returns empty HASH_REF where it includes valid + command as the first valid argument. + + define command_context_set_normal_stop(), + command_context_get_normal_stop(). + + FML::Article::Sequence + bug fix::need open() before getline() + +2004/04/21 + + FML::Process::Utils + bug fix mkdir()::str to octal handling bug + +2004/04/20 + + FML::Command::Admin::error + -O algorithm= option + + [BUG FIX] makefml でエラーがでるのを直した。 + ごめんなさい、設定ファイルの TYPO が原因です。 + +2004/04/18 + + variable name clean up: + _list -> _select_list + + s/cgi_language_list/cgi_language_select_list/; + s/cgi_menu_address_map_list/cgi_menu_address_map_select_list/; + s/error_analyzer_function_list/error_analyzer_function_select_list/; + s/template_file_charset_list/template_file_charset_select_list/; + + FML::CGI::List + FML::Command::Admin::error + FML::Process::CGI::Kernel Utils + + FML::PCB Config + FML::Process::State + preparation of context switch (preliminary. not yet implemented) + + FML::Restriction::Base + remove regexp() method, which not used. + fix description. + +2004/04/17 + + log rotation が出来るようにした。 + + variables + define $log_ratate variables + + FML::File::Rotate + modified to current fml8 style. + + FML::Process::Utils + implement log_rorate() + + FML::Process::Kernel + run $curproc->log_rorate() lastly + + File::* クラスを一掃する。 + + FML::Process::Kernel + FML::Cache::Ring + File::CacheDir is removed + imported into FML::* once. File::CacheDir -> FML::Cache::Ring + + FML::IPC::Queue + use queue on memory by default. + +2004/04/15 + + Mail::Message + Content-Type case-insensitive in _data_type() + + File::CacheDir + IO::Adapter based sequence operation. + +2004/04/13 + + FML::Article::Sequence + bug fix variable initialization. + + FML::IPC::{Message,Queue} + implement basic handling code of queues on file system. + + FML::IPC::Queue + implement rollback() + +2004/04/11 + + IO::Adapter の拡張 + ロックおよび sequence 取り扱いの機能を IO::Adapter へ移した + + IO::Adapter + IO::Adapter::File + File::SimpleLock + import lock mechanism from File::SimpleLock class. Now IO::Adapter + provides lock() and unlock() metohds though file map only is + supported. + + FML::Article::Spool + FML::MTA::Control::Postfix Procmail Sendmail + FML::Process::Utils + implement copy() and append() methods $curproc provides to remove + File::Utils class. + + FML::Process::Kernel + IO::Adapter based lock system + + IO::Adapter + IO::Adapter::File + implement methods suitable for sequence file operation. + + sequence_increment() + + sequence_replace() + + FML::Article::Sequence + FML::Digest + switch File::Sequence to IO::Adapter based sequence operation + +2004/04/02 + + FML::Process::Utils + define fml_owner_address() + + FML::Process::Error Kernel + fix reply_message() system to handle smtp_sender properly. + moify libexec::error to forward mail which smtp sender is fml_owner(). + + Calendar::Lite + show events with , separator + +2004/03/31 + + 総書き直しをした新しいスレッドシステムへ切替える。 + + etc/modules + switch to FML::CGI::Thread (purge old thread module) + + FML::CGI::Thread + check existence of $ml_name value. + use Japanese title. + + FML::CGI::Menu + FML::Process::CGI::Kernel + move config.cgi specific methods run_*() from + FML::Process::CGI::Kernel to FML::CGI::Menu. + + FML::CGI::Menu + use cgi.config.$key as message translation + + FML::Article::Thread + FML::CGI::Thread + modify message output engine. + enable close operation. + + Mail::ThreadTrack is removed. + Mail::ThreadTrack is obsoleted. + + FML::Command::Admin::thread + FML::Process::Distribute Switch + FML::CGI::ThreadTrack + Mail::ThreadTrack is obsoleted. remove related codes. + +2004/03/29 + + FML::Command::Admin::thread + list sub command do not run print_one_line_summary(). + fix typo. + + FML::Article::Thread + FML::CGI::Thread + preliminary implementation of thread GUI. + +2004/03/28 + + スレッド操作の再構成 + + Mail::Message + implement methods to detect the end of thread: + has_closing_phrase() + set_closing_phrase_rules($rules) + get_closing_phrase_rules() + + implement one_line_summary($params) and summary($params) to return + summarized content. + + Mail::Message::String + implement is_citation(), is_signature(). + + Mail::Message::MH + check if the sequence is positive value. + + Mail::Message::Thread + implement get_thread_data(), get_thread_member_as_array_ref(). + + define new db::thread_status article_status + + implement new methods::set_thread_status(), get_thread_status(), + set_article_status() and get_article_status(). + + Mail::Message::DB + implement get_thread_data() which return thread data around the + specified key. + + define new db::thread_status article_status + + implement new methods::set_thread_status(), get_thread_status(), + set_article_status() and get_article_status(). + + bug fix handling of range expanded by Mail::Message::MH module. + + Mail::Message::{DB,Thread} + define {set,get}_article_summary() and article_summary db to handle + article summary easily. + + FML::Process::Distribute + move details of thread manipulation to FML::Article::Thread as could + as possible. + + FML::Header::Subject + Mail::Message::Subject + fix usage of Mail::Message::Language::Japanese::Subject. + + FML::Article::Thread + re-implemented for further plan to purge Mail::ThreadTrack. + + FML::Command::Admin::thread + re-implemented. currently FML::Article::Thread based one. + +2004/03/24 + + Mail::Message::DB IMPLEMENTATION TODO ToHTML + clean up campaign around thread function. + rename function name: + o thread_summary -> get_thread_summary + o tohtml_thread_summary -> get_tohtml_thread_summary + o msg_time -> get_time_from_header + +2004/03/23 + + etc/command_line_options + FML::Command::Admin::spool + FML::Process::Utils + try to allow -O key=value command line options. Internally each + function uses cui_command_specific_options() to get the command + specific options. + + etc/command_line_options + FML::Command::SendFile + FML::Command::Admin::get + FML::Process::Kernel Utils + allow CUI(fml,makefml) to send messages. + this function disabled by default. + fml and makefml can use --allow-send-message --send-to=ADDRESS + option for it. + + FML::Command::DirUtils + modified for "--allow-send-message --send-to=ADDRESS" option. + + +2004/03/20 + + FML::Merge + FML::Merge::FML4::List + FML::Merge::Config + switched to FML::Merge::Config based coding. + +2004/03/15-17 + + fml4 の設定を fml8 のものへ半自動変換するツールを実装した。 + implement basic fml4 to fml8 converter. + + 注意: 変換ルールは、まだまだ、チューニングが必要。 + + FML::Merge::* + implement preliminary config.cf translator. + + FML::Merge + tune key output order. + postpone some variables e.g. *_HOOK. + + FML::Merge::FML4::config_ph + bug fix article_subject_tag conversion rule + oops, fix missing escapes + + FML::Merge::FML4::Config + install some files to be used continuously e.g. seq, summary, + log, ... + + FML::Command::Admin::newml + implement {set,get}_force_mode(). + modified to use it. + + FML::Command::Admin::merge + disable_include_files() -> disable_old_include_files() + + * several bug fixes + + FML::Credential + run _reconfigure in constructor, too. + delay $config evaluation + + IO::Adapter::File + modify touch() to use FileHandle not IO::File + + FML::Process::Distribute + implement toggle of filter function by $use_article_filter + +2004/03/14 + + コマンドメールまわりを書き直す(その2) + + variables + fix $command_mail_restrictions by using new rules: + permit_anonymous_command, permit_user_command rules. + + FML::Process::Kernel + remove permit_command(). + + FML::Process::State + implement the following methods: + restriction_state_init() + restriction_state_set_deny_reason() + restriction_state_get_deny_reason() + restriction_state_reply_reason() + error_message_set_count() + error_message_get_count() + + change some code to "... if $debug". + + implement command_context_set_ml_name() and + command_context_get_ml_name(). + + This is preliminary codes for more extension so that we need + to care authentication differs among ML's when we enhance + command processor for listserv emulation. + + FML::Process::Distribute + use restriction_state_reply_reason() to shling code size. + clean up. + + FML::Process::Command + modify command analyze logic. currently, apply + $command_mail_restrictions for each command line, if ok, + execute the commmand via FML::Command. + + FML::Restriction::Post + modified to use restriction_state_*(). + move permit_anonymous_command_mail() to FML::Restriction::Command. + + FML::Restriction::Command + implement permit_user_command() and permit_anonymous_command() + methods. + + inherit methods from FML::Restriction::Post class if needed. + + implement permit_admin_member_maps and + check_admin_member_password in FML::Restriction::Command class. + + modify $admin_command_mail_restrictions to switch to use them. + + FML::Command::User::admin + fix comments (FNF). + renamed to _apply_{old,new}_admin_command_mail_restrictions(). + + implement permit_admin_member_maps and + check_admin_member_password in FML::Restriction::Command class. + + modify $admin_command_mail_restrictions to switch to use them. + +2004/03/13 + + makefml/fml extension + makefml --mode=user --allow-send-message $command $ml ... + fml --mode=user --allow-send-message $ml $command ... + + 他のスクリプトや独自のCGIから、subscribeやunsubscribeの + confirmを送りたい時のことを考えて、以下のオプションを追加した。 + + fml --mode=user --allow-send-message $ml subscribe ADDRESS + + これを実行すれば、コマンドメールのsubscribeと同じコードが動き、 + confirmメールを ADDRESS へ送るようになる。 + + fmlコマンドやmakefmlコマンドはadminモードのコマンドを実行する + インターフェイスだが、この拡張のポイントはユーザモードの + subscribe コマンドを実行可能にすることでコマンドメールのエミュ + レーションをしているところにある。 + + なお、デフォルトでは、余計なメールが出ないように、メールでのメッ + セージ配送(例: 登録しました〜)をCUIは無視している。そのため、 + --allow-send-message オプションで明示的に、メールをユーザへ + 送るという指示をする必要があることに注意。 + + command_line_options + fml --allow-send-message --mode=user + makefml --allow-send-message --mode=user + + FML::Process::Digest Error Kernel + prepare credential area more early stage (within constructor). + so remove later object creation. + + FML::Credential + implement set_sender() and get_sender(). + + FML::Process::Utils + implement allow_reply_message() method. + + FML::Process::Kernel + use $curproc->allow_reply_message() to check if we should send back + messages. + + FML::Process::Configure + FML::Command::User::subscribe unsubscribe + fml --allow-send-message allows makefml::fml sends reply messages. + currently user mode "subscribe" and "unsubcribe" support this style. + +2004/03/12 + + variables + rename $reply_message_* -> $report_mail_* + change default vale of $log_command_tail_starting_location + + [*_program -> *_function] + + $use_command_mail_program -> $use_command_mail_function + $use_digest_program -> $use_article_digest_function + $use_distribute_program -> $use_article_post_function + $use_error_analyzer_program -> $use_error_mail_analyzer_function + + [command list] + + $commands_for_stranger -> $anonymous_command_mail_allowed_commands + $commands_for_user -> $user_command_mail_allowed_commands + $commands_for_privileged_user -> $admin_command_mail_allowed_commands + $commands_for_admin_cgi -> $admin_cgi_allowed_commands + + [restrictions] + + $post_restrictions -> $article_post_restrictions + $post_restrictions_reject_notice_data_type + -> $article_post_restrictions_reject_notice_data_type + + $command_restrictions -> $command_mail_restrictions + permit_commands_for_stranger -> permit_anonymous_command_mail + + $admin_command_restrictions -> $admin_command_mail_restrictions + +2004/03/04 + + コマンドメールのコードを全面的に書き直した。 + + new command mail framework + FML::Command + FML::Command::Auth + FML::Command::Admin::password + FML::Command::User::admin + FML::Process::Command + FML::Restriction::Command + FML::Process::State + + FML::Process::Command + fully rewritten. a lot of codes are moved to under + FML::Command:::class. + + FML::Restriction::Command + method-fy. + + syntax check is applied to each entry of space separeted command + string. + + FML::Command + implement verify_syntax(), simple_syntax_check() and + safe_regexp_match(). + + remove auth() method call for FML::Command::$MODE::$COMMAND, + which is not used. + + FML::Command::Auth + show detalis of error messages more. + + FML::Command::Admin::password + implement verify_syntax() method. + + FML::Command::User::admin + now, user mode "admin" command becomes entrance for priviledged + command world. + + The main part of $admin_command_restrictions is moved from + FML::Process::Command to here. + + implement verify_syntax(), which is a wrapper for other admin + commands. + + implemnt need_lock(). + + FML::Article::Summary + charcode_convert() -> charcode_convert_to_external_charset(). + + FML::Restriction::Base Command + prepare and use command mail specific definitions. + +2004/02/29 + + Mail::Message::Language + accept_language_list() return [] not [*] if not found. + +2004/02/27 + + コマンドの返事を返す際に、より正しい言語選択を行なう + 必要なら(というより判断がつかないなら)、複数の言語で返す。 + + FML::Process::Kernel + fix comments on reply_message() around. + reply_message() handles request when the current process runs + under MTA. fix regexp optimization. + + define __convert_message_nl() and use it. + allow loader program uses reply_message() method. + + select proper language for reply message based on Accept-Language, + Content-Type and language preference order. + use plural languages if needed. + + FML::Process::Utils + define lang_to_charset(). + fix return value for some methods. + use "print if $debug" in some cases. + + +2004/02/26 + + variables + define $language_preference_order + + etc/command_line_options + new option -o key=value which overrider configurations. + you can use duplicated -o options e.g. -o key1=value1 -o key2=value2. + + remove not used -params options + + FML::Process::Kernel + new option -o key=value which overrider configurations. + you can use duplicated -o options e.g. -o key1=value1 -o key2=value2. + + more proper charset handling based on Content-Type::field. + + change Mail::Message::Encode to Mail::Message::String in + message handling. + + implement get_preferred_languages() method. + + FML::Process::Utils + get_charset: fix default charset handling + implement set_language_hint(), get_language_hint(). + get_accept_language_list() returns [] not [*] when no data. + + FML::Error::Cache + firstly, constructor() expires too old cache. + + Mail::Message + enhance trap regexp for charset=... + + Mail::Message::Charset + fix comments + + Mail::Message::Language + handle X-Accept-Language: + + Tie::JournaledDir + new() expires too old cache files. + +2004/02/15 + + FML::Article::Spool + check input data more. + + Mail::Message::String + add new methods: + +charcode_convert_to_internal_code(). + +charcode_convert_to_external_charset(). + + we need to ignore original charset in some cases. + So, if "=?sjis=..." is input, we return it as "=?iso-2022-jp...". + + more debug codes. + + FML::Process::Kernel + ui_message() prefers $msg_args->{level} if specified. + +2004/02/13 + + FML::Article::Summary + ensure initial value of $min and $max + +2004/02/06 + + FML::Header + expand special regexp in tag before tag substitution. + + Mail::Message::Subject + update $subject only if subject is rewritten. + + FML::Article::Summary + switch to new Mail::Message::* framework. + + Mail::Message::Charset + implement message_charset_to_language() method. + + Mail::Message::String + use mothod-style more even internally. + speculate in and out code::charset as could as possible. + implement method::charcode_convert(), get_charcode(). + +2004/02/04 + + FML::Command::User::chaddr + vaildate address type variables. + + Mail::Message::String + change in-core internal variables. + implement set(), get(), set_mime_charset(), get_mime_charset + and unfold(). + + Mail::Message::Address + modify on-memory variable naming. + implement as_str(), substr(). + + Mail::Message::Date + new() can handle both unix time and Date::style string. + + implement set(), unixtime(). + speculate_timezone() -> _speculate_timezone(). + + yet another style methods::as_mail_header_style(), + as_YYYYMMDD(), as_YYYYxMMxDD(), as_current_time(), + as_precise_current_time(), as_stardate(), and as_unixtime(). + + FML::Article::Summary + FML::Header + modified to use new Mail::Message::* framekwork. + +2004/02/03 + + IO::Adapter + IO::Adapter::File + fix meta escape needed in finding key. + +2004/02/01 + + variables + add $log_command_tail_starting_location + $article_non_mime_filter_rules = reject_empty_content_type permit + + FML::Config + fix checking code of defined value. + + FML::Article::Sequence + $sequence_file -> $article_sequence_file + use //o if could. + + FML::Command::Admin::log + use $log_command_tail_starting_location. + fix comments. + + FML::Command::Admin::{chaddr,changepassword,digest,subscribe} + validate input address by FML::Restriction::Base. + + FML::Command::Filter + FML::Filter + FML::Filter::Header MimeComponent Size TextPlain + new FML::Command::Filter $curproc; + fix::update comments::messages. + rename method::rules() -> set_rules(). + use ::::o if could. + + fix var name: + $article_none_mime_filter_rules -> $article_non_mime_filter_rules. + + implement reject_empty_content_type rule (non mime filter). + +2004/01/31 + + FML::Error::Cache + validate input address. + + FML::Process::{Addr,Alias,Calendar,Command,ConfViewer,Configure} + FML::Process::{Digest,Distribute,DocViewer,Error,Fake,HTMLify} + FML::Process::CGI::Kernel + not use "$cf_list = $curproc->get_config_files_list();". + $curproc->load_config_files($cf_list); + -> + $curproc->load_config_files(); + + Calendar::Lite + print() -> print_as_html() + +2004/01/22 + *** オーバホールキャンペーン中 *** + + FML::Command + fix comments. + define $default_lock_channel and modified to use it. + + FML::MTA::Control::Procmail + fix $fh->close() usage. + fix comments. + cosmetics. + +2004/01/21 + *** オーバホールキャンペーン中 *** + + FML::Restriction::Base + define $number_regexp , $address_regexp. + modified to use it. + + FML::Process::CGI::Kernel + more todo comments. + remove 'use FML::Log' which is not used. + + FML::Filter::Size TextPlain + check input data type. + more todo comments. + white space cometics. + + FML::Header + cosmetics: spaces, unroll one line to plural ones. + + FML::Command::HTMLify + fix comments. + add missing loop label. + + FML::Filter::Header + fix comments. + check input data type. + cosmetics. + FNF. + + FML::Filter::MimeComponent + define $recursive_max_level in file scope. + fix comments. + cosmtics: sort initialization order, location. + =~ "" -> =~ // + + FML::User::DB + fix comments. + close output channel before exits from within loop. + +2004/01/18 + *** オーバホールキャンペーン中 *** + + FML::Confirm + update comments. + clean up. + if (defined $db) { ...->open::close ... } + + FML::Config + fix comments. + change variable name::$mode -> $op in some cases. + change argument order of __update_config(). + +2004/01/14 + + FML::Process::Calendar + bug fix handling of $args within $curproc for further reference. + + Calendar::Lite + clean up. + show summary next 3 days above calender this month. + + FML::Process::Kernel + load_config_files() not need the argument. + load_config_files() do sanity checks for mta and cgi processes. + +2004/01/01-2004/01/04 + + *** 2003 年末 〜 2004 年初め オーバホールキャンペーン中 *** + + clean up + $curproc とペアになっている $args をほとんどのクラスでは削除した。 + $args へのアクセスは FML::Process::Utils のアクセスメソッド経由 + のみとする。 + + FML::Process::Utils + +set_config_files_list() + +append_to_config_files_list() + +get_config_files_list() + + FML::Digest + fix lock algorithm. + clean up. + fix comments. + +2003/12/31 + + 2003 年末 〜 2004 年初め オーバホールキャンペーン + + 変数 + FML::ML::Control + *_private_dirs -> *_private_directories + + FML::Command::Admin::newdomain newml rmdomain rmml + FML::Process::Addr Alias + FML::ML::Control HomePrefix + FML::MTA::Control + FML::MTA::Control::Postfix Procmail Qmail Sendmail Utils + clean up class hierarchy. + o FML::HomeDir::Prefix -> FML::ML::HomePrefix; + o FML::MTAControl -> FML::MTA::Control + o move main codes in newml and rmml to FML::ML::Control class. + + FML::Process::Switch + bug fix initialization. + update comments. + clarify function role by renaming::ProcessSwitch() -> load_module() + Process::Switch + sort. + + FML::Process::Kernel + save incoming_message cache file path on memory for later use. + import $default_ml_home_prefix from main.cf name space. + + FML::Process::Utils + implement {get,set}_incoming_message_cache_file_path(). + bug fix get_incoming_message_cache_file_path() + + FML::Process::Fake + experimental implementation done. + + Mail::Delivery::Queue + define *_file_path() methods. + bug fix use of *_{dir,file}_path() functions. + validate $value (ARRAY_REF). + update comments. + + Mail::Delivery::Net::INET6 + fix label name + + File::CacheDir + implement cache_file_path() + + FML::Cache::Journal + import $directory_private_mode if could + + FML::Error + update comments. + clean up. + use methods not direct editing of $self as could as possible. + use $curproc->{ credential } + reset address comparison level after main routine. + + FML::Header::MessageID + get() return null string if the value is undefined + + FML::Command::Auth + validate $address input as data. + $cred = $curproc->{ credential }; + update comments. + + FML::Command::Admin::addadmin + update comments. + define and use $maplist. + + FML::Command::Admin::addmoderator + update comments. + define and use $maplist. + + FML::Command::Admin::check + update comments. + implement check_ml_home_dir() and modify rules. + + FML::Command::Admin::edit + update comments. + use $curproc->ml_*() methods if could. + reset $ENV{'PATH'} while running editor. + + FML::Command::Admin::mailq + update comments. + more readable method and variable names. + + FML::Command::Admin::rmml + update comments. + use $curproc->ml_*() methods if could. + modify local variable names to be more readble. + + FML::Command::Admin::list + update comments. + clean up. + modify routine names to be more readable. + remove not used variables. + bug fix cgi_menu() initialization phase. + + FML::Command::User::chaddr confirm digest off on unsubscribe + update comments on $primary_*_map use. + use $curproc->{ credential } not call "use FML::Credential ...". + + FML::Command::User::digest + update comments::messages. + use $curproc->{ credential } + + FML::Command::User::chaddr subscribe + update comments. + use $curproc->{ credential } + reset address comparison level after main routine runs. + +2003/12/25 + + FML::Process::Utils + bugfix default $use_address_mask and $address_mask_type in + thread_db_args() + + Mail::Message::ToHTML + add from-address for not use address_mask in + _print_li_filename() + + FML::Process::Distribute + add log at htmlify article end + +2003/12/24 + + etc/{command_line_options,install.cf.in,modules} + FML::Process::Fake + add and enable libexec::faker + + FML::Process::Utils + implement is_need_ml_name() + + FML::Process::CGI::Kernel + use is_need_ml_name() not $args->{ ... } + + FML::Process::{Addr,Alias,Calendar,ConfViewer,Digest, + Distribute,DocViewer,Kernel} + remove the direct use of $args + instead, use utility methods via $curproc + +2003/12/22 + + Mail::Delivery::Queue + define the following methods and modified to use it: + new_dirpath deferred_dirpath active_dirpath info_dirpath + sender_dir_path recipients_dir_path + *_dirpath() -> *_dir_path(). + +2003/12/21 + + variables + + $list_command_default_maps + + $newml_command_ml_admin_default_address + + etc/install.cf.in + FML::Install + remove hard-coded language dependent information by moving it to + $nl_template_files in install.cf.in. + +2003/12/20 + + FML::Command::Admin::list + use $list_command_default_maps not hard-coded value. + change default map to $recipient_maps not $member_maps. + + FML::Command::Admin::newml + use $newml_command_ml_admin_default_address as $ml-admin value. + if unspecified, use the default fml owner value. + + FML::Command + define get_mode() and set_mode() and modified to use it. + +2003/12/10 + + Mail::Message::DB + quick hack for trouble making html indexs and working + distribute. + +2003/11/30 + + variables + FML::Credential + FML::Command::Auth + FML::Process::{Command,Distribute} + FML::Restriction::Post + rename: $system_accounts -> $system_special_accounts. + +2003/11/29 + + 機械処理(および、その出力形式をカスタマイズ)しやすいログを出力する + オプションを作りこむ。 + + --log-computer-output コマンドラインオプション + $use_log_computer_output と $log_computer_output_engine を定義する。 + フォーマットは $log_computer_output_engine で指定するモジュールで変 + えてくださいな。 + + etc/command_line_options + FML::Process::Kernel + support --log-computer-output option + + FML::Process::{Command,Configure,Distribute,Error,Kernel} + FML::Log::Print::Simple + define $use_log_computer_output. + modify FML::Process::* to use it. + + FML::Process::Kernel supports customization by + $log_computer_output_engine definition. + + $curproc->log_message_init() is called within prepare() method + of each program. + + FML::Process::Debug + implement config() method. + + FML::User::DB + use $curproc->config() to get config object. + + variables + FML::Header + x_ml_name -> outgoing_mail_header_x_ml_name + +2003/11/27 + + FML::User::Control + check if $buf retruned from IO::Adapter is defined. + + IO::Adapter::File + bug fix get_key_values_as_array_ref() + +2003/11/26 + + list コマンドの拡張、あらゆる map を表示可能にした。 + + FML::Command::Admin::list + try to list up arbitorary map if could. + FML::User::Control::{userlist -> print_userlist} + + IO::Adapter::{Array,DBI,File} + implement get_key_values_as_array_ref() to return key and all values + as ARRAY_REF. + + FML::User::Control + rename method::userlist -> print_userlist + + cal get_key_values_as_array_ref() of IO::Adapter to get key and all + values. + + So, print_userlist() print out "key values ...". + + アドレスを比較する関数で大文字小文字を区別する/しないという機能を実装 + また、互換性のため、デフォルトを case insensitive (区別しない)に変更。 + + variabes + address_compare -> address_compare_function + + FML::Credential + bug fix variable overload + +2003/11/25 + + FML::User::Control + remove debug condition + + FML::Credential + variables + implement switch to toggle case sensitive check of mail address. + +use_address_compare = yes + +address_compare_type = user_part_case_insensitive + +2003/11/24 + + FML::Process::Switch + ensure valid exit code + +2003/11/23 + + FML::Confirm + FML::Command::User::{chaddr,confirm,off,on,subscribe,unsubscribe} + FML::Cache::Journal + FML::Data::Deadline + separete database part in FML::Confirm to FML::Cache::Journal + which can be shared between other modules. + + change FML::Confirm::new() to take $curproc. + + FML::Command::Admin::{addadmin,addmoderator,chaddr,deladmin, + delmoderator,digest,list,off,on, + subscribe,unsubscribe} + FML::Process::Utils + create FML::User::* class to manipulate user database. + 1. move FML::Command::UserControl to FML::User::Control class. + 2. implement FML::User::DB (committed later). + + variables + define the folloging variables: + + $primary_user_db_gecos_map + + $primary_user_db_subscribe_date_map + + $user_db_gecos_maps + + $user_db_subscribe_date_maps + + Mail::Message::ToHTML + try to mask raw addresses in signature. + rename::_who_of_address() -> _address_to_gecos() + + FML::User::DB + avoid duplication. + + FML::User::Control + FML::User::Info + run FML::User::Infoal->import_from_mail_header() to save user info + included in the header for further use. + +2003/11/18 + + FML::Confirm + FML::Command::User::confirm + fix argument FML::Confirm::is_expired($id) from time to id. + + FML::Credential + implement is_user_part_case_sensitive() and modified to use it. + we should attach $self internal directly even if within the + same module. + +2003/11/16 + + ドメインの扱い(デフォルトおよびバーチャルドメイン)の拡張(その1終了) + + FML::Command::Admin::newdomain rmdomain + FML::Process::Utils + FML::HomeDir::Prefix + switched to new ml_home_prefix framework, which is enhanced virtual + domain operation. See fml-devel in 2003::10. + + FML::Command::Admin::newdomain rmdomain + FML::Process::Configure + fixed argument handling to support: + o makefml method domain + o fml domain method + + FML::Process::Debug + we use this module as simplified FML::Process::Kernel for debug. + define simplified version of some following methods: + +mkdir + +log + +logwarn + +logerror + +ml_home_prefix + +2003/11/11 + + FML::Header::MessageID + change message-id format to match RFC2822 + +2003/11/08 + + Mail::Message::Encode + disable Encode use even on >= 5.008 since we are not ready. + + perl 5.8 では Encode をつかうべきなんだろうけど、今は Jcode を + 使うコードしかないので、「if 5.8 …」の部分を一旦、使わないこ + とにする。 + + FML::Command::UserControl + call croak() if address to remove not found + +2003/11/07 + + Mail::Message::ToHTML + Mail::Message::ToHTML の拡張 + add $versionid + add new comment tag at html_begin() for file magic + change @header_field remove same information (X-xxx) and add + Message-Id + +2003/11/05 + + ドメインの扱い(デフォルトおよびバーチャルドメイン)の拡張のはじまり + + FML::Process::Kernel + etc/main.cf.in + define $primary_ml_home_prefix_map in main.cf. + FML::Process::Kernel imports it. + +2003/11/02 + + FML::Process::Utils + FML::Process::CGI::Kernel + move safe_cgi_action_name from FML::Process::Utils to + FML::Process::CGI::Utils. + + FML::Process::Kernel Utils + debug_level() -> get_debug_level(). + sort definitions::{set,get}_print_style(). + +2003/11/01 + + 変数体系のクリーニング: 階層構造、命名規則 + + よりシステマティックな変数命名ルールを考えていくと、ここでも、 + 基底クラスと継承という考えを(ある程度)導入する方がよいと思う + ようになりました。 + + が、ものすごく厳密にやると逆にわけ分からないので程ほどに。 + + 例: + mail_何とか + mail_default_何とか + + use_incoming_mail_何とか + incoming_mail_何とか + + use_outgoing_mail_何とか + outgoing_mail_何とか + + use_report_mail_何とか + report_mail_何とか + + この例でも、厳密には outgoing_report_mail とかするべきなんでしょ + うけど、そこまではやらないのがほどほどってところでしょうね。 + +2003/10/30 + + variables + FML::Process::Kernel + header_loop_check_rules -> incoming_mail_header_loop_check_rules + use_header_loop_check -> use_incoming_mail_header_loop_check + body_loop_check_rules -> incoming_mail_body_loop_check_rules + use_body_loop_check -> use_incoming_mail_body_loop_check + body_cksum_cache_dir -> incoming_mail_body_cksum_cache_dir + + variables + has_* -> system_has_* + +2003/10/29 + + import im-146. + +2003/10/26 + + FML::Install + etc/install.cf.in + To remove hard-coded file list to install as sample, + define $sample_cf_files in install.cf and use it. + + FML::Process::Kernel Switch + etc/main.cf.in + define $site_default_config_cf to remove hard-coded + site_default_config.cf. sort entries in main.cf. + +2003/10/22 + + variables + FML::CGI::User + change address list shown on the cgi menu from member to + recipient. + +2003/10/17 + + 変数名の変更 + command_prompt -> command_mail_reply_prompt + cgi_menu_map_list -> cgi_menu_address_map_list + cgi_menu_default_map -> cgi_menu_default_address_map + + command_prompt -> command_mail_reply_prompt + + summary_file -> article_summary_file + summary_format_style -> article_summary_file_format_style + summary_format_address_length -> article_summary_file_format_address_length + + default_file_mode -> file_default_mode + default_directory_mode -> directory_default_mode + + move *_mode definitions from basic.cf to file.cf. + + remove duplicated $default_directory_mode. + + FML::Process::CGI::Kernel + Mail::Message::Charset + Mail::Message::Charset has tables on code, charset and languge. + FML::Process::CGI::Kernel is modified to use it. + + FML::Command::Admin::log + define log_file_*_charset and modify log module to use it. + +2003/10/16 + + charset の取り扱いを拡張した。 + resutructure/enhance charset definitions: + ${category}_default_charset and ${category}_charset_{ja,en,...} + + FML::Process::CGI::Utils + cgi_var_language() returns '' not 'japanese' if language info + not found. + + FML::Process::CGI::Kernel + bug fix _cgi_resolve_ml_specific_variables() for correct ml_* + handling. + + follow HTTP_ACCEPT_LANGUAGE information. + fix log_file when admin::*.cgi runs. + add $domain_local_log_file + add $domain_local_log_file + + FML::Process::CGI::Kernel + FML::CGI::ThreadTrack Calendar Menu + FML::Command::Admin::log + language_of_cgi_message() -> get_charset("cgi") + + FML::Process::Kernel + Mail::Message + Mail::Message::Language + consider Accept-Language::(but not used yet now ;-). + + FML::Process::CGI::Utils + FNF::add comments + + FML::Process::CGI::Kernel + bug fix charset handling. + + FML::Command::SendFile + FML::Digest + messager::rfc822 part not need charset ;) + + FML::Process::Utils + bug fix masking variable definition + + remove language_of_cgi_message() + + implement set_accept_language_list() and + get_accept_language_list(). + + remove obsolete language_of_reply_message(). + + get_charset() can handle accpet-language::and charset requested by + other module via PCB. + +2003/10/15 + + FML::Digest + FML::Command::SendFile + FML::Process::Kernel Utils + implement get_charset() and set_charset(). modified to use it to + treat current charset changed dynamically on the fly. + + FML::Process::CGI::Kernel + enable languge change function + + variables + define $default_cgi_language, $cgi_language_list + +2003/10/14 + + fml/share/message/ is translated to English. + euc-jp/* is translated to corresponding us-ascii/*. + + FML::Process::Kernel + if (defined $pcb) { ...} + + FML::Process::CGI::Kernel Utils + define cgi_var_language() and use it + + Mail::Message::DB + oops, remove debug message output + + FML::Filter::MimeComponent + recursive multipart checks + + FML::Process::CGI::Kernel + FML::CGI::List ML Menu User + implement cgi_hidden_info_language() and modified to use it. + It holds language info within CGI operations. + +2003/10/07 + + FML::Command::Admin::log + fix html style: +
str1<::pre> 
str2<::pre> ... -> 
str1\nstr2 ... <::pre>
+
+2003/10/06
+
+   FML::Process::Distribute 
+   Mail::Message::DB ToHTML 
+	handle article subject specilly where the key in db is
+	"article_subject".
+	
+   FML::Command::Admin::log 
+	
+	fix printing_style value::cgi -> html
+
+2003/09/30
+
+   Mail::Message::DB 
+	create article_$header db too.
+
+   FML::Restriction::Base 
+	define language regexp
+
+2003/09/29
+
+   FML::Process::Distribute
+	disable _old_thread_check()
+
+2003/09/27
+
+   natural language extension in cgi menu.
+
+   FML::CGI::Admin::{List,ML,User} -> FML::CGI::{List,ML,User}
+	
+   FML::Process::CGI::Utils 
+   FML::CGI::List ML User 
+	define new methods::cgi_var_address_map() cgi_var_address_map_list()
+	cgi_var_action() cgi_var_frame_target()
+	
+	switched to use cgi_var_*().
+	
+	sort::cleanup initialization parts in each cgi_menu().
+	
+   FML::CGI::ML 
+	cgi_var_ml_name_list($ml_domain) -> cgi_var_ml_name_list()
+	
+   FML::CGI::User 
+	fix selected_key name
+	
+   FML::CGI::List 
+	add reset button
+	
+   FML::Config 
+	bug fix expand_variable_in_buffer() to match as many as could.
+	
+   FML::Process::Kernel 
+	make message_nl() handle enable language translation
+	
+   FML::Process::CGI::Utils 
+	define methods::cgi_var_navigator_title(), cgi_var_fml_project_url().
+
+2003/09/26
+
+   ml-admin/*/*.cgi を利用可能にする
+
+   variables
+	define $commands_for_ml_admin_cgi
+	
+   FML::Process::CGI::Kernel 
+   FML::CGI::Admin::Menu 
+   FML::Command::Admin::newml 
+   FML::CGI::Menu 
+   FML::CGI::MLAdmin::Menu 
+   FML::Process::CGI::Utils 
+	change *::CGI:::class architecture.
+	
+	FML::CGI::*Admin::Menu inherits FML::CGI::Menu.
+	
+	methods in FML::Process::CGI::* returns the value by checking the
+	current cgi mode (admin or ml-admin).
+	
+   FML::CGI::Admin::ML 
+   FML::CGI::Admin::User 
+   FML::Command::Admin::list 
+   FML::Process::Utils 
+	change arguments of get_ml_list() to remove $args.
+
+   FML::Process::CGI::Kernel 
+	use cgi.*.top for top level help
+
+2003/09/20
+
+   FML::Process::Switch 
+	define _find_longest_matched_entry() function and use it to
+	find more specific entry for getopt parameters and module
+	definitons.
+
+2003/09/19
+
+   FML::Process::Switch 
+	implement _filespec_splitdir() which split filename to
+	@filepath but it uses File::Spec only in > perl 5.6.1.
+	
+	more specific match for $0 to resolve module we should use.
+
+   FML::Process::Utils 
+	fixed to avoid uninitialized ...
+	
+   etc/command_line_options 
+	define --log-dup anyway
+	
+   FML::Header 
+   FML::Header::MessageID 
+   FML::Process::Kernel 
+	new Header->add_message_id()
+	change Header::MessageID->gen_id() Args
+	change in Process::Kernel->_add_info_on_header() add add_message_id()
+
+2003/09/16
+
+   update CPAN
+	updated to File-Spec-0.85_03.
+	Jcode updated to 0.83
+
+2003/09/14
+
+   FML::MTAControl::Procmail 
+	typo
+	
+   FML::Process::{Flow,Kernel,Switch}
+	Process::Flow and Process::Switch classes need to know $curproc
+	pointer each other.
+	
+	fix log message duplication mechanism.
+	
+	define global_tmp_dir_path(), be_quiet() in FML::Process::Kernel.
+
+2003/09/13
+
+   etc/modules
+   FML::Process::Switch 
+	extension: compare $0 against entry etc::modules by
+	considering subdir. 
+	
+   FML::Process::Switch 
+	fix $0 handling for *.cgi:
+	program_fullname => $ENV{ 'SCRIPT_FILENAME' } || $0
+	
+   FML::Process::CGI::Kernel 
+	use $curproc->config_cf_filepath().
+	
+   FML::Process::Kernel 
+	implement ui_message().
+	change label of log() from ok to info.
+	
+   FML::MTAControl 
+   FML::Command::Admin::{edit mailq newml rmml} 
+   FML::MTAControl::{Postfix,Procmail,Qmail,Sendmail} 
+	use $curproc->ui_message() instead of "print STDERR ...".
+	
+   FML::Filter::MimeComponent3 
+   Mail::Message 
+	fix variable initialization to avoid undefined reference warning.
+	
+   FML::Process::Configure 
+	remove close_stderr_channel_if_quiet_option_specified().
+	
+   FML::Process::Utils 
+	implement is_cgi_process(), is_under_mta_process().
+
+
+2003/09/11
+
+   FML::Command::Admin::newml 
+	clarify error messages more.
+	
+   FML::MTAControl::Postfix 
+	handle default::virtual domain properly.
+
+2003/09/08
+
+   Mail::Message
+   Mail::Message::{ToHTML,Encode}
+	=?shift_jis? ... メールの取り扱いを修正
+	各オブジェクトにおける charset と encoding の扱いを修正
+
+2003/09/06
+
+   MLの消去方法の拡張
+	MLを消した際、ディレクトリを日付名つきのものにする。
+	これで、何度、消しても大丈夫#って、そんなに何度も消すかな?
+
+		/var/spool/ml/elena
+			->
+		/var/spool/ml/@elena.20030906
+
+   FML::Command::Admin::rmml 
+   FML::Process::Utils 
+	use removed_ml_home_dir_path() method to determine the dir
+	path used as the removed $ml_home_dir.
+
+2003/09/05
+
+   FML::Process::Utils 
+	escape $curproc in eval
+	
+   FML::Process::Kernel 
+	bug fix::we should not use $main_cf in this module.
+	clean up.
+	more comments.
+
+2003/09/04
+
+   FML::Command::Admin::get newml rmml 
+	use $curproc->config()
+
+2003/09/02
+
+   FML::Process::Calendar 
+	bug fix wrong lvalue
+
+2003/08/30
+
+   use $curproc->config(), pcb() not { config }, { pcb } respectively.
+	
+   FML::Process::Kernel 
+	add simple log message queue logic as a prototype.
+
+2003/08/24
+
+   Mail::Message::ToHTML 
+	print STDERR ... if $debug.
+	
+   FML::Config 
+	print STDERR ... -> carp(...)
+	
+   File::Rotate 
+   IO::Adapter::DBI File 
+	remove debug::print STDERR ..
+	
+   FML::Process::CGI::Param 
+	remove debug
+	
+   FML::Process::ConfViewer 
+	save $@ via logwarn() not print STDERR ..
+
+2003/08/23
+
+   use log*() methods	
+	define $curproc->log, logwarn, logerror and log_message() methods.
+	modified to use $curproc->log*() interface.
+	
+   Mail::Message::Checksum 
+	use croak() not FML::Log()
+	
+   FML::Process::Kernel 
+	sort function definitions.
+	
+   FML::Process::QueueManager 
+   FML::Mailer 
+	new FML::Mailer $curproc;
+
+   FML::{Article,Digest,Error,Filter,Header,Mailer}
+   FML::Article::{Sequence,Summary,Thread} 
+   FML::Error::Cache 
+   FML::Filter::MimeComponent3 
+   FML::Process::Utils 
+   FML::Restriction::Post 
+	modified to use $curproc->log*() methods.
+
+2003/08/20
+
+   FML::Process::Utils 
+   Mail::Message::ToHTML 
+	define the detail of address masking against spammers.
+	$use_html_archive_address_mask	=	yes
+	$html_archive_address_mask_type	=	all
+
+   new variables
+	use_html_archive_address_mask  =       yes
+	phtml_archive_address_mask_type =       all
+
+2003/08/18
+
+   --quiet オプション創設 (fml と makefml コマンドだけ)
+
+   FML::Process::Configure Kernel 
+	support --quiet options for makefml and fml.
+	It closes STDERR before the main routine begins.
+	
+	define close_stderr_channel_if_quiet_option_specified().
+	
+   etc/command_line_options 
+	--quite option for fml and makefml.
+	clean up.
+
+2003/08/16
+
+   FML::Process::Kernel 
+	check whether $ml_home_dir not exists in _init_lock().
+
+   Mail::Message 
+	modify logic to find the start point of multipart.
+	correct handling of the first dash-boundary.
+	XXX this logic is effective but wrong.
+
+2003/08/15
+
+   FML::Process::Utils 
+   Mail::Message::ToHTML 
+	test html_archive_address_mask mask or nomask
+	address_mask use To and Cc
+
+2003/08/06
+
+   Mail::Bounce::Freeserve 
+   Mail::Bounce::Language::Japanese 
+	moved Japanese contnet to Mail::Bounce::Language::Japanese.
+	bugfix regexp
+
+   Mail::Bounce 
+	enable freeserve.en.jp
+	
+   FML::Process::Distribute 
+	clarify old::new thread engine routines.
+	rename htmlify() to _htmlify() to clarify it is private.
+
+2003/08/05
+
+  Mail::Bounce::Freeserve
+
+2003/08/03
+
+   FML::Process::Distribute 
+	fix arguments used in the case of key
+	"error.reject_notice_preamble" (PR by fml-devel:503).
+
+2003/08/02
+
+  Document translation to English completed up to 70 % ?
+
+   Mail::Message::ToHTML 
+	reduce warning if missing from or subject at sub
+	_print_li_filename()
+
+2003/08/01
+
+   FML::Restriction::Post 
+	deny_reason not over write
+
+2003/07/24
+
+  Document translation to English completed up to 40 % ?
+
+	etc/default_config.cf and etc/config.cf are translated.
+
+2003/07/23
+
+  Document translation to English starts 
+
+2003/07/22
+
+   Mail::Message::Language::Japanese::Subject 
+	nuke todo::method-ify done.
+	
+   Mail::Message::Date 
+	implement speculate_timezone() to remove hard-coded timezone
+	+0900 :-). 
+	
+   FML::Process::Kernel 
+	use our own Date::field when we use Mail::Message::Compose
+	(MIME::Lite). 
+	
+   Mail::Message::Encode 
+	detect_code() should not call croak() but return 'unknown'.
+	we can handle Japanes and English, so fixed comments.
+
+2003/07/21
+
+   import Time-modules-2003.0211 to use Time::Timezone.
+
+   clean up ...
+
+   Tie::JournaledDir JournaledFile 
+	clean up.
+	
+	change the match conditoin parameter name to "match_condition".  You
+	should specify "first" or "last" as match_condition in
+	Tie::JournaledFile::new() method.
+	
+	Tie::JournaledFile::change default match condition to "last match".
+	
+   Mail::ThreadTrack::Analyze 
+   FML::Article::Summary 
+   Mail::Message::Date 
+	method-ify date_to_unixtime() of Mail::Message::Date.
+	
+   Mail::Message::Checksum Utils 
+	import search_program() into Mail::Message::Utils module.
+	modified Checksum to use it.
+	
+   FML::Header::Subject 
+   Mail::Message::Language::Japanese::Subject 
+	method-ify cut_off_reply_tag()
+
+2003/07/20
+
+   Mail::Message::DB 
+	comment on analyze()
+
+	restrict demand copying only for the previous messages before
+	the current one.
+
+   Mail::Message::ToHTML 
+   Mail::Message::Thread 
+	moved analyzer dispatcher to ::Thread module to use analyzer
+	independetly.
+
+   Mail::Message::Thread 
+	analyze() accpets $id if specified.
+	
+   FML::Process::{Distribute,Utils} 
+	separete thread_db_args() routine prepares thread information.
+	pass $aritcle_id to analyze().
+
+2003/07/19
+
+   Mail::Message
+	merge udb branch to switch to the new thread engine
+	fixed to co-work with udb well.
+
+   variables
+	defined $udb_base_dir
+
+2003/07/03
+
+   Mail::Message::ToHTML 
+	change regexp $url$trailor
+
+2003/06/29
+
+   FML::Command 
+   FML::Command::SendFile 
+   FML::Command::User::get 
+	check the number of request in get commands.
+
+   update messages
+
+2003/06/26
+
+   FML::Header Filter 
+	add $debug for debug message to Log at only debug-mode
+
+2003/06/24
+
+   Mail::Message[udb]::ToHTML 
+	pass $old_db_base_dir to DB module
+
+   Mail::Message[udb]::DB 
+	save all values of fields.
+	
+	for filtering system, save other header fields::return_path posted
+	x_posted sender x_sender received x_received.
+	
+	demand copying from old db to udb if needed(demaned) when _
+	db_get() called.
+
+	bug fix negative cache handling et.al.
+
+2003/06/23
+
+   variables
+	remove $system_message_charset and $system_message_subject,
+	which are not used.
+
+   Mail::Message::ToHTML 
+	bugfix at debug
+
+2003/06/21
+
+   Mail::Message 
+	bug fixed::message_text() should be able to handle differenct
+	type $data. 
+
+2003/06/15
+
+   variables	
+	add check_date to $article_header_filter_rules (PR by
+	fml-devel:478).
+
+2003/06/14
+
+   Mail::Message::DB [udb]
+	implement separete method _save_header_info() to handle header info.
+	
+	implement get_as_array_ref() and get_table_as_hash_ref().
+	fixed to cooperate with ToHTML module.
+	add more print debug codes.
+
+	thread_summary() return more info::id, html_*
+	move thread_summary generator wrapper from ToHTML to DB
+	
+   Mail::Message::ToHTML [udb]
+	modified to use Mail::Message::Encode::decode_mime_string().
+	rewritten based on new DB module.
+	remove ndb_key(), which is not used.
+	fix filename to use db value.
+	fix filepath of thread links.
+	add a lot of printf debug.
+	move thread_summary generator wrapper from ToHTML to DB.
+	remove __str2array().
+	$self->{ _thread_list }->{ $id }       (STR) changed to
+	$self->{ _hint_ref_key_list }->{ $id } (ARRAY_REF).
+
+   Mail::Message::{DB,ToHTML,Utils} [udb]
+	implement Mail::Message::Utils::from_to_name() and modified modules to
+	use it.
+	
+   Mail::Message::Utils [udb]
+	fixed to use Mail::Message::Encode
+
+2003/06/11
+
+   FML::Filter::Header 
+	add check_date() for missing date field
+
+2003/06/06
+
+   Mail::Message::MH 
+	against longloop for underrun and overrun
+
+2003/06/04
+
+  import im-145
+
+2003/06/03
+
+   Mail::Message[udb]::DB 
+	monthly_to_key_list -> month_to_key_list
+	
+   Mail::Message[udb]::ToHTML 
+	remove _address_clean_up(), which is not used.
+
+2003/06/02
+
+   Mail::Message::IMPLEMENTATION [udb branch]
+	update idea::sync with current implementation
+	
+   Mail::Message::ToHTML [udb branch]
+	modified to use DB::thread_summary($id).
+	rename method to be more easy for eyes.
+	remove not used variables.
+	FNF a little.
+
+2003/06/01
+
+   スレッドデータベースの再設計
+	別ブランチでやってるので source-changes ML にしか動きが見えな
+	いとは思う。
+
+   Mail::Message::ToHTML [udb branch]
+   Mail::Message::DB [udb branch]
+	move main db manipulation code from ToHTML to DB.
+	XXX caution::but the index generator not works now.
+
+   Mail::Message::DB [udb branch]
+	implement thread_summary().
+
+2003/05/28
+
+   variables
+	error_analyzer_function::error_continuity -> histgram
+	define $error_analyzer_function_list
+	
+   FML::Error 
+   FML::Error::{Analyze,Cache}
+   FML::Error::Analyze::{histgram,simple_count}
+	restructuring under FML::Error class to be more extensible.
+	
+	move main part of print() to FML::Error::Analyzer::* modules.
+	So, print() format depends on FML::Error::Analyzer::* class.
+	
+   FML::Command::Admin::error 
+	list up summary for each algorithm defined in
+	$error_analyzer_function_list.
+
+2003/05/27
+
+   Mail::Message::ToHTML 
+	print text in "unknown MIME encoding" case.
+	try to validate key and value in hash operation but ... (?)
+
+2003/05/26
+
+   IO::Adapter::{Array,DBI,File}
+	remove not used method:
+	- get_value_as_str()
+	- get_value_as_array_ref()
+
+2003/05/20
+
+   FML::Command::Admin::error 
+	disable lock since FML::Error locks itself if needed.
+	
+   FML::Command::Admin::error 
+   FML::Error 
+	move the status dump code from FML::Command::Admin:error to
+	FML::Error.
+
+2003/05/16
+
+   Mail::Message::ToHTML 
+	bug fix masking of raw From::address
+
+2003/05/14
+
+   FML::Filter 
+   FML::Process::Command 
+   FML::Filter::Size 
+	implement size limit filter for both article and command mail.
+
+	入力に対するサイズ制限フィルタを実装しました。
+
+2003/05/13
+
+   FML::Filter 
+   FML::Process::Distribute 
+	use $_arg_address not $_arg_sender
+	
+	use "reject_notice_preamble" in filter rejection notice.
+	it describes:
+	o the reason why we do not use mime::multipart.
+	o this message is not from you but somebody forged.
+
+	フィルタが弾いた時に注意書きをつける。
+
+   FML::MTAControl::Postfix Sendmail 
+	check the existence of path_* programs
+
+2003/05/12
+
+   FML::Command::Auth 
+   FML::Command::Admin::chaddr changepassword deladmin delmoderator 
+		        digest off on unsubscribe 
+	we should operate only $primary_*_map not $*_maps in deleting the user
+	address.
+
+	メールアドレスを削除するコードの修正
+		常に primary_*_map にのみ追加/削除を行なう。
+
+2003/05/08
+
+   FML::Filter 
+	add $msg_args at article_filter_reject_notice()
+
+   Mail::Message 
+	whole_message_as_str():
+	o indent is null by default.
+	o fix the trailing indent replace.
+
+2003/05/05
+
+   variables and configure
+	search spamassassin, spamd and spamc, and set path_${it} for further
+	extension.
+
+2003/05/04
+
+   Mail::Bounce::SimpleMatch 
+	E500 SMTP Mail Service ?
+
+2003/05/03
+
+   FML::Process::Error 
+	fix comments (FNF).
+	
+   FML::Header 
+	style, aligned with FNF.
+
+2003/05/01
+
+   variables	
+	define article_filter_reject_notice_data_type
+	
+   FML::Process::Utils 
+	fix typo::maitainer->maintainer
+	
+   FML::Filter 
+	forward the rejected message by string or multipart?
+	It is determined by $article_filter_reject_notice_data_type.
+	
+   Mail::Message 
+	implement whole_message_header_as_str()
+
+	remove whole_message_as_string_ref().
+	
+	implement whole_message_as_str() to extract the first part of this
+	message as a string.
+
+2003/04/29
+
+   FML::Restriction::Base 
+	permit user+ext@domain
+
+   libexec/error がエラーメッセージを再転送可能にした。
+	転送先は $maintainer_recipient_maps に従う。デフォルトは未定義
+
+   variables
+	define $maintainer_recipient_maps
+	
+   FML::Process::Error 
+	define sender as $maintainer as a dummy sender to avoid
+	unexpected error.
+
+	if $maintainer_recipient_maps defined, forward error message
+	to it.
+	
+   FML::Process::Kernel 
+	permit use of reply_message() for libexec::error
+	
+   FML::Command::Admin::mailq 
+	modify format to be more similar to usual mailq output.
+
+2003/04/21
+
+   FML::Header 
+	obsolete mime_boundary() (same Mail::Message
+	_header_mime_boundary())
+
+2003/04/20
+
+   FML::Article 
+	not *path() method but spool_in() creates subdir if needed.
+
+2003/04/19
+
+   etc/default_config.cf.ja.in 
+   etc/src/config.cf.ja/acl.cf 
+   FML::Error 
+	we should handle addresses used by fml such as elena@fml.org,
+	elena-ctl@fml.org et.al. exceptionally in handling errors.
+
+	MLが使うアドレス( elena とか elena-ctl )は無視しないとね
+
+   Mail::Bounce
+	enhance smtp32 rules
+
+   FML::Command::Admin::newml 
+   FML::Config::Convert 
+   etc/aliases
+   etc/postfix_virtual 
+	fix virtual domain handling (fml-devel:417)
+
+	バーチャルドメインのテンプレートが間違ってたので修正。
+	今まで作っていた postfix の virtual テンプレートと
+	うまくいくようにした。
+
+2003/04/18
+
+   etc/command_line_options	
+	define menu.cgi
+	
+   FML::Command::Admin::newml 
+	mkdir $ml_home_prefix if not found
+
+   Mail::Message 
+	_header_mime_boundary() boundary detect no quote string case
+
+2003/04/16
+
+   article_filter_reject_notice_recipients
+	change attribute names of recipient used in filter rejection
+	notice: admin -> maintainer
+
+   FML::Header 
+	rewrite_received() outside loop $header->delete($org) for bad
+	count
+
+2003/04/15
+
+   Mail::Delivery::Queue 
+	reset alarm after flock()
+
+   FML::Header 
+	mime_boundary() boundary detect change short match and add no
+	quote string
+
+2003/04/09
+
+   FML::Header 
+	add rewrite_received() for replace Received::to X-Received:
+
+2003/04/07
+
+   Mail::Bounce::SimpleMatch 
+	add analize ybb.ne.jp and Webshield
+
+2003/04/04
+
+   フィルタが弾いた時のメッセージの返り先が微妙に間違ってるのを修正
+   FML::Process::Kernel 
+	reply_message_add_header_info() should pass $msg_args to
+	reply_message().
+
+2003/03/28
+
+   rename method: article_id_max() -> article_max_id()
+
+2003/03/24
+
+   img/ is updated to im-144.
+
+2003/03/18
+
+  【重要】 giant lock をなくす。粒度の細かいロックへ移行した。
+
+   FML::Command::Admin::edit get mailq 
+   FML::Command::User::deny guide help objective 
+	not need lock
+	
+   FML::Process::Kernel 
+	more logs around locks.
+	add deadlock warning.
+	reuse lock object if could.
+
+   FML::Command::UserControl 
+	modify chaddr algorithm::"del() and add()" -> "add() and del()".
+
+2003/03/17
+
+   特定のデータ構造を操作する関数をできるだけ集約するべく改造する
+	→ロックの粒度を細かくするため
+
+   FML::Process::Kernel 
+   Mail::Delivery::Queue 
+	fix that setrunnable() of Mail::Deliver::Queue returns the
+	correct value and FML::Process::Kernel logs the value.
+	
+   FML::Process::Distribute 
+	use new lock channel article_spool_modify to exclusive lock for both
+	sequence updating and spool writing.  In addition, locks at channel
+	article_sequence and article_spool are also done in each critical
+	section.
+	
+   FML::Command::Admin::chaddr 
+	move the main code to FML::Command::UserControl.
+	modified to use FML::Command::UserControl.
+	
+   FML::Command::Admin::changepassword 
+	move the main code to FML::Command::Auth.
+	
+   FML::Command::Auth 
+	implement change_password().
+	
+   FML::Process::Utils 
+	get_address_list() uses get_user_list() in FML::Command::UserControl.
+	
+   FML::Command::UserControl 
+	implement user_chaddr() and get_user_list().
+
+2003/03/16
+
+   removed "fmlthread".
+	instead of these, use the following commands: 
+		makefml thread $ml [options]
+
+   FML::Article 
+   FML::Article::Sequence 
+	define new lock channel::article_spool
+	move id related functions to FML::Article::Sequence	
+
+   FML::Article::Thread 
+	fixe to meethod style.
+	FNF::fix comments.
+	
+   FML::Command::SendFile 
+	use $curproc->article_id_max() to get the last article id.
+	
+   FML::Command::Admin::spool 
+	need no giant lock.
+	FML::Spool -> FML::Article::Spool
+	fix argument handling.
+	
+   FML::Digest 
+	define lock channel for digest_sequence_*.
+	use $curproc->article_id_max() if could.
+	clean up handling of digest_sequenc_file.
+
+   FML::Error 
+   FML::Process::Error 
+	clean up lock on error cache.
+	move lock mechanism into only FML::Error module.
+	XXX lock channel name is changed but hard-coded yet now.
+	
+   FML::Error 
+	fix lock channel name
+	
+   FML::Process::Utils 
+	article_id_max() is just a wrapper for FML::Article::id().
+
+2003/03/15
+
+   removed "fmlspool".
+	instead of these, use the following commands: 
+		makefml spool   $ml
+
+   File::Sequence 
+	return 0 if sequence file not found
+	
+   FML::Process::Command 
+	specify the definition on $command_args HASH STRUCTURE.
+
+2003/03/14
+
+   removed "fmlerror", "fmlsummary" and "fmlsuper".
+	instead of these, use the following commands: 
+		makefml error   $ml
+		makefml summary $ml
+		makefml mailq   $ml
+
+   FML::Process::Utils 
+	imlement debug_level()
+	
+   FML::Process::{Flow,Kernel}
+	define finalize() at the last of flow.
+	finalize() is only used for debug now.
+
+   FML::Header::Subject 
+   Mail::Message::Date 
+	validate input
+	
+   FML::Article::Summary 
+	validate input.
+	implement dump() method to show the whole summary_file.
+
+2003/03/11
+
+   FML::Sys::Alias
+	basic functions to deal with aliases file
+
+   FML::Process::Switch 
+   FML::Config::Tiny 
+	main.cf のデフォルト(バージョン依存)と /etc/fml/main.cf を
+	マージして評価する。そうしないと新変数が未定義になるなど
+	不都合がいろいろ出てくる。
+	
+	we use FML::Config::Tiny, which just reads and parses the file.
+	It is a tiny version of FML::Config module.
+
+   /etc/fml/	
+	install main.cf at $default_config_dir/
+
+2003/03/09
+
+   Mail::ThreadTrack::Print::HTML 
+	$action  = $curproc->safe_cgi_action_name()
+
+2003/03/06
+
+   variables
+	$use_article_filter_reject_notice
+	$article_filter_reject_notice_recipients
+	
+   etc/main.cf, etc/install.cf	
+	define $default_module_config
+	define $default_command_line_option_config
+
+   FML::Process::Distribute 
+	
+   FML::Process::Distribute 
+	enable switch by $use_article_filter_reject_notice
+	FNF: use get_as_array_ref()
+	
+   FML::Process::Addr 
+	switched to use FML::Sys::User
+	
+   FML::Restriction::Command 
+	nuke is_valid_mail_address() which is not used.
+	
+   FML::Process::Kernel 
+	validate From::syntax in credential updating.
+	FNF: use get_as_array_ref()
+
+   FML::Process::Kernel 
+   FML::Restriction::Post 
+	moved main codes of _check_restrions() to methods defined in new
+	FML::Restriction::Post module.
+	switched to use FML::Restriction::Post.
+
+   FML::Process::Scheduler 
+	remove dummy modules::queue_in() and exits()
+	
+   FML::Error::Cache 
+	modified not to use _new().
+	removed _new().
+	
+   FML::MTAControl::Procmail 
+	clarify *virtual* functoins are dummy.
+	These module do not need to handle virtual issue since
+	ml_name@ml_domain is explicitly written in procmailrc.
+	
+   FML::Process::Switch 
+	remove hard-coded module specific configuraitons.
+	resolve module name and the options based on etc::modules.
+	
+	use $default_config_dir/modules to resolv map between prorame
+	name and class (+ options).
+	
+	use etc::command_line_options to resolve getopts() parameters.
+	default_module_maps -> default_module_config.
+
+   FML::Filter 
+   FML::Process::Utils 
+	implment new method convert_to_mail_address() and use it
+	to expand {admin, sender, ...} to the corresponding mail address.
+
+2003/03/05
+
+   FML::Header 
+	do not show List-Help::unless $use_command_mail_program specified.
+	implement rewrite_errors_to()
+
+   FML::Process::Command Distribute 
+	return header for debug in error
+	
+   FML::Process::Kernel 
+	implement reply_message_add_header_info().
+
+	disable reply_message() in _check_restrictions().
+	
+	add "$curproc->caller_info($msg, caller) if $debug;" at a few places.
+	implement caller_info().
+	
+   FML::Filter 
+	「フィルタに弾かれたぞ」とメッセージを返す (プロトタイプ)
+	
+   messages
+	「メンバーじゃない」時のメッセージを改良
+	ウィルスかもよ?などとヒントも解説する。
+
+2003/03/03
+
+   FML::Article 
+	bug fix::try to mkdir $dir ($subdir) when $use_subdir enabled.
+	
+   Mail::Message::Spool 
+	bug fix::check value not by defined()
+
+2003/02/18
+
+   FML::Error 
+   FML::Process::Error 
+	use FML::Error->db_open() not FML::Error::Cache for cache db open.
+
+   FML::Filter 
+	fix typo
+	
+2003/02/16
+
+   clean up campaign of codes
+
+   variables
+	+summary_format_address_length
+	+cgi_menu_map_list
+	+cgi_menu_default_map
+	
+   FML::Config 
+	check the existence in load_file()
+	nuke ^\s* and \s*$ in array expantion.
+	yes() and no() compares the value case insensitively
+	bug fixed to work both FIRSTKEY() and NEXTKEY().
+	add debug code.
+	
+   FML::CGI::Calendar ThreadTrack 
+   FML::CGI::Admin::Menu 
+   FML::Command::HTMLify 
+   FML::Command::Admin::log 
+   FML::Process::Distribute 
+	use language_*() method to determine $charset
+	
+   FML::Article::Summary 
+	modified to use $summary_format_address_length.
+	it determines address length in summary file.
+	
+   FML::Command::User::get 
+	update comments and nuke todo.
+	
+   FML::Process::CGI::Kernel 
+	use language_*() to determine $charset.
+	remove hard-coded.
+	we ensure cgi_try_*() returns safe value.
+
+   FML::CGI::Admin::List 
+	nuke hard-coded and use config basd value.
+	add more syntax checks before main work.
+	
+   FML::Process::Utils 
+	implemente the following methods:
+	is_safe_syntax()
+	language_default()
+	language_of_cgi_message()
+	language_of_reply_message()
+	language_of_html_file()
+
+2003/02/15
+
+   FML::Command::UserControl 
+	use FML::Restriction::Base
+	
+   FML::Process::Utils 
+	implement safe_cgi_action_name()
+	
+   FML::CGI::ThreadTrack 
+   FML::CGI::Admin::List ML Menu User 
+   FML::Process::CGI::Kernel 
+	switched to use safe_cgi_action_name()
+
+2003/02/14
+
+   FML::MTAControl::Procmail 
+	fix code to find ml_name in procmailrc
+
+2003/02/13
+
+   Mail::Message 
+	use module global print_mode parameter not private one within
+	object.
+
+   FML::Command::Admin::off 
+	fixed to use $config->get_as_array_ref().
+	
+   FML::Command::UserControl 
+   FML::Command::Admin::{digest,off,on,subscribe,unsubscribe}
+	user{add,del}() checks input $address.
+	nuke the corresponding TODO.
+	
+   FML::Command::Admin::check 
+	validate $ml_name existence firstly.
+
+2003/02/11
+
+   switch INSTALL.sh to install.pl
+	インストーラを shell script から perl script へ変更しました!
+
+   FML::Install 
+	define default value (null) for md5 checksum result
+
+   FML::MTAControl 
+   FML::MTAControl::{Postfix,Procmail} 
+   Mail::ThreadTrack::Print::{HTML,Text} 
+   Mail::Delivery::Queue 
+   Mail::ThreadTrack::Print::Message 
+   Mail::Message::ToHTML 
+	FNF: not use $_
+
+2003/02/10
+
+   solaris 9 でもうごいたよ (^^)
+
+2003/02/08
+
+   variables
+	$command_run_*_hook added
+
+   etc/dot-qmail*
+	change args::ml_home_dir  -> ml_name@ml_domain
+
+2003/02/07
+
+   Mail::Message::ToHTML 
+	quick hack at sub sub _print_inline_object_link() URL Link
+
+2003/02/05
+
+   FML::Process::Command 
+	add $command_run_{start,end}_hook
+
+2003/02/03
+
+   FML::Process::Command
+   FML::Process::Error
+	stop_this_process() メソッドが意味をなすように修正
+	おもに hook のため
+
+2003/02/01
+
+   返事の返し方を変更 (お試し)
+	宛先の組ではなく、宛先ベースでメッセージをまとめる
+
+   FML::Process::Utils
+	implement unique()
+	
+   FML::Process::Kernel
+	unique recipient array before queuing.
+	implement another strategy of recipient based ququeing (for test).
+	
+   FML::Command::UserControl
+   FML::Command::Admin::chaddr
+   FML::Command::User::{chaddr,subscribe,unsubscribe}
+	try exact matching just before changing user.
+
+   IO::Adapter
+   IO::Adapter::{Array,DBI,MySQL}
+	remove get_next_value() method.
+	add todo for get_value_as_* if needed.
+	update document.
+	
+   IO::Adapter
+	get_next_value() メソッドを削除
+
+   FML::Command::Admin::chaddr
+	remove address matched by FML::Credential
+	in the case of $old_address
+	
+   FML::Config
+	FNF
+	bug fix wrong argument for chomp().
+	
+   FML::Credential
+	implement matched_address() method
+	
+   FML::Command::UserControl
+	try to remove address matched by $cred->has_address_in_map(), not
+	address specified by the function argument.
+
+   FML::Command::Auth
+	use FML::Crypt not Crypt::UnixCrypt directly.
+
+   variables	
+	enable changepassword, chpass, initpass and passwd as admin
+	command.
+
+2003/01/31
+
+   fix typo: rename Calender to Calendar ;)
+
+2003/01/29
+
+   FNF-ify (update/clean up documents, coding style ...)
+	FML::Install
+	File::CacheDir Utils.pm
+	IO::Adapter::AtomicFile
+
+   FML::Command::Admin::newml
+   FML::MTAControl::Utils
+	in newml, we should check if $ml_name already exists as a user
+	name or not.
+	
+   FML::MTAControl
+	add FML::MTAControl::Utils into @ISA
+
+   FML::Process::Calender
+	prepare() loads default configuration to use $path_* info.
+	w3m -> $path_w3m
+	cat -> $curproc->cat() method (XXX temporary use).
+	
+   FML::Process::Utils
+	implement cat() method for convenience
+	
+   FML::Command::Admin::unsubscribe
+	use $config->get_as_array_ref() method.
+
+   install.pl.in
+   FML::Install
+	implement is_run_as_root().
+	we verify install.pl runs as root.
+
+2003/01/28
+
+   FML::Config
+	expand ${variable}
+	
+   FML::Header::Subject
+	decode() returns tag info, too
+	
+   FML::Install
+	At the first time, do not ask if upgrade or not loader.
+	bug fix checks in copy_dir().
+	copy_dir() install files by preserving [am]time.
+
+   installer perl version
+	fml/etc/install.cf.in
+	install.pl.in
+
+2003/01/27
+
+   FML::Command::Admin::{deladmin,byeadmin}
+	mv real codes from byeadmin to deladmin module.
+	now, byeadmin is a forwarder to deladmin.
+	
+   FML::Command::Admin::delmoderator
+	sync with deladmin codes
+
+2003/01/26
+
+   FNF-ify (update/clean up documents, coding style ...)
+
+   FML::Command::DirUtils
+	use FML::Restriction::Base::regexp_match() to check command
+	line options.
+	FNF: remove $_
+	
+   FML::Restriction::Base
+	define 'command_line_options' regexp.
+	
+   FML::Command::Admin::byeadmin
+	bug fix target maps to handle.
+
+2003/01/25
+
+   FNF-ify (update/clean up documents, coding style ...)
+
+   FML::Command::Utils
+	removed since it is not used.
+
+   FML::Process::Utils
+	get_ml_list() checks arguments matched with regxp provided by
+	FML::Restriction::Base.
+	
+   FML::Error
+   FML::Command::DirUtils FileUtils.pm
+   FML::Command::Admin::dir file.pm
+   FML::Process::Kernel
+   FML::Restriction::Base
+	implement FML::Restriction::Base::regexp_match() and
+	switched to use it.
+	
+   Calender::Lite
+   FML::Restriction::Base
+	implement FML::Restriction::Base::regexp_match() can handle special
+	class "fullpath" not based on regexp.
+	
+	switch Calender::Lite to use this method for checking of fully path-ed
+	directory.
+
+2003/01/10
+
+   mime component filter に次の機能を仕込みました。
+
+	1) multipart のメッセージの中身がないなら、
+	   そのパートは切り捨てる
+
+	2) もし、すべてのパートが無効なら、reject する
+
+	例: こういうメールの場合を想定したものです。
+		text/plain (空)
+		application/ms-word (virus つき)
+
+	application/ms-word は content filter のルールで削除され、
+	無意味な text/plain は今回の機能で削除され、
+	結局有効なパートがないので reject する(配送しない)。
+
+	とりあえず、この機能はデフォルトで on です。
+
+   Mail::Message
+	fix next/prev link of object chain
+	implemenet is_multipart() method
+	
+   FML::Filter::MimeComponent3
+	when $opt_cut_off_empty_part is non zero, we cut off empty part.
+	Also, reject this message if no effective part in multipart.
+	
+	XXX $opt_cut_off_empty_part = 1; by default now.
+
+2003/01/09
+
+   FML::Filter::MimeComponent3
+	fix wrong logic of handling determined $action vs default_action.
+	corerct messages.
+
+2003/01/08
+
+   FML::Filter::MimeComponent3
+	sync default rule w/ etc/mime_component_filter
+
+2003/01/07
+
+   variables
+	postfix_verp_delimiters	=	+=
+	qmail_verp_delimiters	=	-=
+	
+   FML::Command::UserControl
+	shorten log messages
+	
+   FML::Process::Spool
+	change argument style
+
+2003/01/05
+
+   add new utility
+	fmlerror
+	fml
+
+   variables
+	$fmlerror_*hook added
+	
+   FML::Process::Switch
+	add fmlerror, fix fmlsuper getopt
+	
+   FML::Error
+   FML::Error::Analyze
+	
+	implement get_data_detail()
+
+2003/01/04
+
+   FML::MTAControl
+	add && enable FML::MTAControl::Sendmail.
+	
+	implement _remove_postfix_style_virtual(), which moved from
+	FML::MTAControl::Postfix.
+	
+   FML::MTAControl::Postfix
+	postfix_find_key_in_alias_maps()::find system aliases and fml defined
+	aliases irrespective of the result by postconf. This search uses newly
+	implemented _find_key_in_file() but it is a bug since it handles file
+	search only.
+	
+	modified to use _remove_postfix_style_virtual().
+	
+   FML::Error::Analyze
+	add analize day limit
+	
+	change day checkpoint at simple_count
+	add simple_count2() error_continuity2() for error type 4xx
+	
+	bugfix missing my at day check values
+
+2003/01/03
+
+   variables
+	add admin_member_maps into member_maps
+	
+   FML::Command
+	define $debug.
+	more error messages.
+	
+   FML::Restriction::Base
+	implement regexp() method.
+	FNF-ify.
+	
+   FML::Error
+	modified use FML::Restriction::Base->regexp().
+	
+   FML::Command::{DirUtils,FileUtils}
+   FML::Command::Admin::{dir,file}
+	modified to use FML::Restriction::Base->regexp().
+	modify messages.
+	
+   FML::Command::Admin::{newml,rmml}
+	get_as_array_ref() to get $newml_command_mta_config_list values.
+	
+   FML::Process::Command
+   FML::Command::Auth
+	modify log messages.
+	hide messages for debug mode.
+	
+   FML::Process::{Addr,Alias}
+	fix help message.
+	nuke not used variables.
+
+2003/01/02
+
+   fmlsuper コマンドを追加する。
+	キュー管理のための、ちょっとしたコマンドにするつもり。
+
+   update configure
+	add fmlsuper
+
+   variables
+	add $fmlsuper_*hook
+	
+   FML::Process::Switch
+	enable fmlsuper using FML::Process::Super
+	
+   FML::Process::Spool
+	fix description
+
+2002/12
+
+	オーバーホール・キャンペーンでした。
+
+
+2002/12/31
+
+   Mail::Bounce::SimpleMatch
+	bug fix trap pattern for more accuracy.
+
+   variables
+	+path_sum                  = @SUM@
+	+path_gzcat                = @GZCAT@
+	+path_makemap              = @MAKEMAP@
+	
+	define $newml_command_mta_config_list
+	define $rmml_command_mta_config_list
+	define $sendmail_virtual_map_file
+	
+	change $domain_sendmail_config_dir
+	$domain_mail_config_dir -> $domain_config_base_dir::sendmail
+
+   FML::MTAControl::Postfix
+	remove duplicated call "postmap virtual"
+
+   update configure
+	search sum, digest, gzcat and makemap, too.
+
+2002/12/30
+
+   Mail::Delivery::SMTP
+   Mail::Message
+	enhance Mail::Message::set_log_function() to override the global log
+	function within Mail::Message name space.  Thie enables all objects
+	within the current Mail::Message space uses the same log function.
+	
+	We need this function to enforce all objects in a chain to use the
+	same log output channel.
+	
+	So, Mail::Delivery enhanced to use this function to fix the lack of
+	log messages for multipart messages.
+
+2002/12/26
+
+   FML::Article
+	bug fix: defined check for $sfh
+
+   FML::Mailer
+	not set smtp_log_handle to avoid duplication
+
+   FML::Log
+	create log file with mode 0600 if could.
+	it seems o.k. by "Principle of Least Surprise".
+
+2002/12/25
+
+   FML::Process::Distribute
+	not use smtp_log_handle to avoid duplication in
+	var/mail/outgoing/ (PR fml-devel:345).
+
+   FML::Process::Command
+	fix comments.
+	rename::_allow_command() -> _config_allow_command()
+
+2002/12/24
+
+   *オーバホール・キャンペーン実施中
+
+   FML::Process::Command
+	rename:
+	o _is_valid_command() -> _config_permit_command()
+	o _is_valid_syntax()  -> _is_safe_syntax()
+	o _auth_admin()       -> _try_admin_auth()
+	
+	fix changes.
+	more log of level exceptions.
+
+2002/12/23
+
+   *オーバホール・キャンペーン実施中
+
+   File::CacheDir
+	fix comments.
+	check defined() more.
+	chop -> chomp.
+	
+   File::Sequence
+	fix comments.
+	clean up the return value by removing \s*..
+	
+   FML::Command::HTMLify
+	fix comments.
+	aggrege duplicated code.
+	
+   FML::Command::SendFile
+	fix comments.
+	rename: _is_valid_argument() -> _get_valid_article_list().
+	sort.
+	
+   FML::Command::User::digest
+	fix comments.
+	clean up (sort) codes.
+	
+   FML::Process::Kernel
+	clean up.
+	fix comments.
+	fix label name.
+	check address pattern by FML::Restriction.
+	//o if could.
+	
+   IO::Adapter::AtomicFile
+	bug fix: $fh->close() -> $fh->SUPER::close().
+
+2002/12/22
+
+   FML::MTAControl::Postfix
+	PR (fml-devel:343)
+	check the existence of virtual file.
+	
+   *オーバホール・キャンペーン実施中
+
+   IO::Adapter::AtomicFile
+	cometics. fix comments.
+	defined() check before $fh->close().
+	
+   Mail::ThreadTrack::Print::Text
+	fix comments.
+	add loop label.
+	
+   Mail::ThreadTrack::Print::Message
+	fix comments.
+	//o
+	modify variable to be more readable::$h -> header
+	
+   Mail::ThreadTrack::Analyze
+	fix comments.
+	//o
+	defined() check more.
+	
+   Tie::JournaledDir JournaledFile.pm
+	fix comments.
+	clean up variable names.
+	inform error by croak() more.
+	
+   FML::Config Confirm.pm
+	fix comments.
+	add todo(s) as comments.
+	//o
+
+2002/12/19
+
+   *オーバホール・キャンペーン実施中
+	clean up.
+	+ define label or rename label to more appropriate one for loop.
+	+ use return().
+	+ use qw() if could.
+	use ::::o if could.
+	fix comments.
+
+   FML::Header
+	s/rerply-to/Reply-To/
+	more defiend() check.
+	
+   FML::Command::Admin::log
+	fix comments.
+	fix typo.
+	bug fix the usage of _show_log() method.
+	
+   FML::Filter::TextPlain
+	fix comments. add todo(s).
+	rename $m -> $first_msg to clarify variable function.
+	remove not used declaration.
+
+2002/12/18
+
+   *オーバホール・キャンペーン実施中
+
+   FML::Header
+	clean up comments.
+	require() -> use()
+	
+   FML::Log
+	clean up commnets.
+	croak() if loading Mail::Message::Date fails.
+	
+   FML::MTAControl::Procmail
+	fix comments and documents.
+	use $fh->close() not close($fh).
+	
+   FML::MTAControl::Postfix Qmail.pm
+	fix comments
+	
+   FML::MTAControl
+	clean up comments.
+	define is_valid_mta-type() and modified to use it.
+
+   FML::Header::MessageID
+	define dummy db_close()
+	
+   FML::Process::Addr
+	clean up comments.
+	$fh->close()
+	
+   FML::Command::DirUtils
+	clean up comments.
+	modified to define $variable to describe arguments to execute
+	and run system($exec).
+
+2002/12/15
+
+   *オーバホール・キャンペーン実施中
+
+   FML::Article
+	id() returns data on memory or in sequence_file if not found
+	on memory.
+	clean up comments.
+	use $curproc->config(), $curproc->pcb().
+	
+   FML::Article::Summary
+	redireced to STDOUT if output channel cannot be opened.
+	add todo(s) as comments.
+	
+   ErrorStatus
+	clean up comments.
+	defined() check.
+	forward method::errstr() -> error().
+	
+   FML::Command::Admin::edit
+	print informational mesage
+	
+   FML::Command::Admin::dir
+	fix comments.
+	not pass $du_args->{options} to FML::Command::DirUtils module.
+	
+   FML::Command::Admin::byeadmin
+	care for primary_admin_recipient_map
+	XXX we should handle *_maps not primary_*_map.
+
+   FML::Restriction::CGI Command.pm
+	clean up comments
+	
+   FML::Restriction::Base
+	clean up comments.
+	define ${file,dir,command}_regexp. modified to use these regexp(s).
+	enhance $command_regexp to include [0-9].
+
+2002/12/13
+
+   File::SimpleLock
+	need write permission for flock on solaris (PR fml-devel:331,332)
+
+2002/12/12
+
+   Calender::Lite
+	cosmetic changes.
+	fix comments.
+	fix tag (FILE -> LINE).
+	
+   FML::Error::Analyze
+	defined()
+
+2002/12/10
+
+   updated IM modules to im-142
+	Thank Tatsuya Kinoshita .
+
+2002/12/09
+
+   update CPAN modules
+	import File-MMagic 1.16
+	import MIME-Types  1.004
+	update MailTools   1.15 -> 1.52
+
+2002/12/01
+
+   FML::Article::Summary
+   FML::Process::Distribute
+	bug fix article object handling:
+	we should not initialize article object under
+	libexec::distribute runs. pass $article object to $summary
+	object by append($article, $id).
+
+   FML::Article::Summary
+	summary date should be sync-ed with article date
+
+2002/11/26
+
+   implement fmlsummary program
+
+   new variables
+	define $fmlsummary*hook
+	define $summary_file, $summary_format_type
+	
+   FML::Article::Summary
+	FNF-ify.
+	clean up.
+	nuke debug.
+	implement rebuild() to enable "fmlsummary rebuild $ml_name".
+	make jcode of summary file "jis-jp".
+	implement append($id).
+
+   FML::Process::Summary
+	newly added as a main module to run fmlsummary program.
+	implement rebuild() to enable "fmlsummary rebuild $ml_name".
+	fix help and conditions to show help
+	
+   FML::Process::Distribute
+	update summary file by calling $summary->append($id)
+
+   FML::Process::Kernel
+	enable fmlsummary $command $ml_name ...
+	more defined() check
+
+   FML::Header::Subject
+	define clean_up(), decode(), delete_subject_tag() to separete
+	functions.
+	
+2002/11/24
+
+   variables
+	$commands_for_privileged_user += digest
+	
+	define $commands_for_admin = $commands_for_privileged_user for
+	conveninence.
+	XXX remove either in the future.
+	
+   FML::Command::Admin::digest
+	clean up
+	
+   FML::Command::Admin::{dir,file}
+	basic_variables() -> basic_variable() for FML::Restriction::Base
+	
+   FML::Process::Utils
+	enable to handle digest_recipient in which_map_nl().
+
+2002/11/20
+
+   FML::Error::Cache
+	mkdir $error_analyzer_cache_dir if not exists
+
+   variables
+	mkdir $error_analyzer_cache_dir in initialization phase
+
+2002/11/19
+
+   FML::Command::Admin::digest
+	init digest on off for admin
+
+   FML::Process::Kernel
+	bug fix queue identifier generation
+	
+   Mail::Delivery::Queue
+	input of recipients can be duplicated
+
+   Mail::Message::ToHTML
+	bug fix function call::f() => $obj->f()
+
+2002/11/18
+
+   FML::Process::Digest
+	correct start id calculation
+	enable queue flush to send digest.
+	
+   FML::Digest
+   FML::Process::Kernel
+	digest routine can customizes header.
+	XXX preliminary support. needs overhaul?
+
+2002/11/17
+
+   new variables
+	define $digest_*hook
+	$primary_digest_member_map	= $primary_member_map
+	$digest_member_maps		= $primary_member_maps
+	$primary_digest_recipient_map	= file:$ml_home_dir::recipients-digest
+	$digest_recipient_maps		= $primary_recipient_map
+	$article_sequence_file (= $sequence_file) for symmetry
+	$use_digest_program
+	$digest_sequence_file
+	$article_sequence_file
+	
+   FML::Process::Switch
+	enable libexec/digest
+
+   File::Sequence
+	fix get_id(); not use chomp() but use s::[\s\r\n]*$::::.
+	define set_id($id) to update value in the sequence file.
+	
+   FML::Process::Digest
+	newly created for digest delivery program.
+	implement _digest(), which is the real function to process digest
+	message creation.
+	
+	XXX mail queue operation is not yet implemented.
+
+   FML::Digest
+   FML::Process::Digest Kernel.pm
+   Mail::Delivery::Queue
+	enabled passing of recipient_maps (ARRAY_REF) into mail queue.
+	By this, we can now pass $digest_recipient_maps as digest recipients
+	to mail queue system.
+
+2002/11/09
+
+   I-D を消去し、www.fml.org I-D コレクションを見るようにした。
+
+2002/11/07
+
+   FML::MTAControl::Postfix
+	postconf -d -> postconf (postfix version dependent ?)
+	
+   FML::Process::Switch
+   FML::Process::Addr
+   INSTALL.sh configure configure.in
+   fml/bin/fmladdr.in
+	implement fmladdr command, which shows all users and aliases.
+
+2002/10/31
+
+   add configura option: --with/without-mime-component-filter
+	configure.in
+	fml/etc/site_default_config.cf.in
+		configure --with/without-mime-component-filter
+
+2002/10/29
+
+   FML::Process::Utils
+	fix escape of Log(...) in eval q{}
+	
+   FML::Command::Admin::newml
+	prinf "a b c" -> a, b, c
+	
+   Mail::Message::ToHTML
+	umask escaping like splx():
+	mask = umask();
+	umask( ...) ; # set up umask here
+	do something ...
+	uamsk($mask);
+	
+   FML::Process::Utils
+	ensure umask escape in _mkpath_*()
+	
+   FML::Command::Admin::newml
+	handle both public and private directories in initialization phase.
+	create variables:
+	$newml_command_init_public_dirs $newml_command_init_private_dirs
+	
+	changed newml codes to use them.
+
+2002/10/28
+
+   FML::Header::Subject
+	you can use \U$ml_name\$ in subject tag configuration:)
+	
+   FML::Process::ThreadTrack
+	fix db_update cannot get last_id from _speculate_last_id() use seqfile
+	
+   File::Sequence
+	use chomp at get_id()'s return value
+
+2002/10/27
+
+   FML::Filter::MimeComponent3
+	bug fix interface between FML::Filter and MimeComponent3
+
+2002/10/26
+
+   FML::Filter::MimeComponent3
+	fix initianlization bug
+	
+   FML::Filter
+	use MimeComponent3 as a test
+
+2002/10/23
+
+   Mail::ThreadTrack::DB
+	typofix filepath value at sub db_mkdb()
+	
+2002/10/22
+
+   FML::Process::Kernel
+	handle fmlthread $argv same as makefml one
+
+2002/10/21
+
+   MIME component フィルタの描き直し
+
+   FML::Filter
+	re-enable mime component filter based on
+	Filter::MimeComponent2
+
+   FML::Filter::MimeComponent2
+	
+	fix rule appling algorithm:
+	 for rule (rules) {
+	    for mp (message) {
+	       check mp by $rule
+	   }
+	 }
+	
+	enable to read filter rules from the specified file (-c file).
+	
+	show more debug info.
+	
+	clean up debug info. debug info changes with debug level
+
+	implement "cutoff" action
+
+	clarify reason in log message
+	
+	enhance filter rule to use the reverse condition.
+	e.g. (whole_type, !type, action).
+
+2002/10/12
+
+   Mail::Message::ToHTML
+	rename index.html to index_all.html
+	add sub create_top_index()
+
+2002/10/06
+
+   Mail::Message::ToHTML
+	add index reverse code at _update_id_monthly_index()
+
+2002/10/04
+
+   variables
+	define $html_archive_index_order_type
+	
+   FML::Command::HTMLify
+   FML::Process::Distribute
+   Mail::Message::ToHTML
+	enabled to handle order in index.html by
+	$html_archive_index_order_type.
+	
+	Mail::Message::ToHTML
+	o htmlify_{file,dir}() is changted to normal methods for passing
+	arguments.
+	
+   FML::Filter
+	add prototype for $use_article_non_mime_filter
+	
+   FML::Header::Subject
+	workaround to re-encode subject after subject tag handling
+
+2002/09/30
+
+   フィルタリングの再構成
+
+	FNF-ify
+	
+	rename: _load_function() -> _apply_function()
+	
+	module name renamed:
+	o ContentCheck -> MimeComponent
+	o HeaderCheck  -> Header
+	o BodyCheck    -> TextPlain
+
+2002/09/29
+
+   フィルタリングの再構成
+
+   変数
+	reconstruct filter system.  create a new file "article.cf",
+	and gather article_*_filter definitions in it.
+
+   FML::Process::Distribute
+	sync w:::FML::Filter reconstruction. rename function name
+	
+   FML::Filter
+	following new variable $article_filter_functions,
+	call the following function sequentially.
+	o article_header_filter
+	o article_non_mime_filter
+	o article_mime_component_filter
+	o article_text_plain_filter
+
+2002/09/29
+
+   FML::Process::ConfViewer
+	"fmlconf $ml $varname" shows "$varname = $value".
+	unless $varname specified, dump all variables.
+
+   FML::Config::Convert
+	hold file mode. set $dst mode same as $src mode
+	
+   FML::Confirm
+   FML::Header::MessageID
+   File::CacheDir
+   Mail::ThreadTrack
+   Mail::Delivery::Queue
+   Mail::Message::ToHTML
+   Mail::ThreadTrack::DB
+	we should not use hard-coded file::dir mode
+	
+   FML::Article
+	care subdir case more
+
+2002/09/28
+
+   variables
+	enable off/on for user use
+
+2002/09/24
+
+   variables
+	$article_body_filter_rules add permit as the last resort
+	$article_header_filter_rules append permit rule
+	
+   FML::Filter::BodyCheck
+   FML::Filter::HeaderCheck
+	define permit rule
+
+2002/09/23
+
+   FML::Filter::BodyCheck
+	should not import STR2EUC from Mail::Message::Encode
+	bug fixed to use Mail::Message::Encode->convert()
+
+2002/09/14
+
+   FML::Filter::BodyCheck
+	add use Mail::Message::Encode at reject_japanese_command_syntax()
+	because rejected by filter due to Undefined subroutine
+	&FML::Filter::BodyCheck::STR2EUC called
+	
+   variables	
+	define $default_umask and $timezone
+
+2002/09/11
+
+   FML::Log
+	not use /dev/stderr
+
+2002/09/09
+
+   INSTALL.sh
+	not use "id -p" (PR by fml-devel:241)
+
+2002/08/29
+
+   INSTALL.sh
+	add a cheap diag: check the existence of $owner and $group
+
+   FML::Command::Admin::newml
+	validate $ml_home_prefix before main
+
+2002/08/28
+
+   FML/Process/Kernel
+	proper handling of "$program /var/spool/ml/elena" case
+
+2002/08/26
+
+   IO::Adapter::File
+	ensure rollback in calling get_value_*()
+	
+   FML::Error::Analyze
+	error_continuity::in summation, bad if $v >= 2
+	
+   FML::Credential
+	is_same_address() validate input data more
+	
+   FML::Process::Kernel
+	bug fix my ml_name (+ ml_domain) detection code:
+	
+	[back ground detail] "fmlconf -n elena@fml.org" works but
+	"fmlconf -n elena" not works since we ignore the latter case.
+	Regaredless of poorman's strategy but we pick up the first non
+	/^-/ string as a $ml_name and set $ml_domain to the default
+	domain.
+
+2002/08/21
+
+   IO::Adapter
+	enhance add() to add($address, [$argv])
+	
+   IO::Adapter::File
+	enhance add()
+	implement get_next_value()
+	define get_value_as_str($key), get_value_as_array_ref($key)
+
+   IO::Adapter::AtomicFile
+	more unique temp filename
+	
+2002/08/20
+
+   FML::Process::Distribute
+	modify error message
+	
+   FML::Command::SendFile
+	message key change
+	command.get.invalid.args -> command.get_invalid_args
+	
+   IO::Adapter::File
+	remove fml 4 specific ignore rules such as m=.. option
+	delete(KEY) not (REGEXP)
+
+2002/08/19
+
+   FML::Process::Error
+	rename::$use_error_analyzer -> $use_error_analyzer_program
+	use default $log_format_type now
+	
+   FML::Process::Command
+	enable process if $use_command_mail_program is defined.
+	
+   FML::Process::Distribute
+	enable process if $use_distribute_program is defined.
+	
+   variables
+	define $use_command_mail_program ("yes" by default).
+	rename $use_error_analyzer to $use_error_analyzer_program
+
+   message key reconstructuring
+
+2002/08/18
+
+   FML::Command::SendFile
+	more debug info.
+	
+	send_user_xxx_message()
+	set $command_args->{ _filename_to_send } before calling send_file().
+	
+   FML::Command::User::confirm
+	send back welcome file in subscribe case
+
+2002/08/16
+
+   FML::Error::Analyze
+	error_continuity::sum up time sequence with not point but mountain
+	with some width.
+	rename::simple_count_by_day -> error_continuity
+
+   Mail::Message::Encode
+	add is_iso2022jp_string()
+	
+   FML::Command::Admin::log
+   FML::Filter::BodyCheck
+   FML::Process::Kernel
+	switch FML::Language to Mail::Message::Encode
+
+   FML::Language::ISO2022JP
+   FML::Language::Japanese::{String,Utils}
+	Removed
+
+2002/08/15
+
+   new variables	
+	$error_analyzer_function
+	$error_analyzer_simple_count_limit
+	
+   FML::Error
+	count up address with status=5*
+	move analyzer function() to FML::Error::Analyze
+	rename: *_timeout -> *_event_timeout
+	
+   FML::Process::Kernel
+	check if $maintainer differs $ml_address
+	rename: *_timeout -> *_event_timeout
+
+2002/08/14
+
+   FML::Process::Kernel
+	use $config->get_as_array_ref( 'header_loop_check_rules' ) to get list.
+	rename: refuse_further_processing() -> stop_this_process()
+	define do_nothing($reason), same as stop_this_process()
+
+   FML::Process::Alias Command ConfViewer Configure Distribute
+		DocViewer Error HTMLify Kernel Spool ThreadTrack
+   FML::Process::CGI::Kernel
+	apply fix_perl_include_path(); after load_config_files() runs to add
+	ml local library path to @INC.
+	This is used for ml specific extention e.g. command extension.
+	
+   FML::Process::Kernel
+	enable ml local message template handling
+	
+   variables
+	define $ml_local_* for ml specific customize
+	+ ml_local_dir           =       $ml_home_dir::local
+	+ ml_local_lib_dir       =       $ml_local_dir::lib
+	+ ml_local_share_dir     =       $ml_local_dir::share
+	+ ml_local_message_template_dir  = $ml_local_share_dir::message
+	
+	change definition for $message_template_dir:
+	$fml_share_dir::message::$template_file_charset ->
+		$fml_share_dir::message
+
+2002/08/13
+
+   fml.org を 4.0 から fml-devel ベースへ移行開始
+
+   etc/include*
+	__ml_home_prefix__::__ml_name__ -> __ml_name__@__ml_domain__
+	
+   etc/config.cf*
+	comment out $ml_name, $ml_domain
+	
+   FML::MTAControl::Postfix
+	bug fix $fh-close() under defined($fh) is confirmed
+	use "postconf -d" to expand variables
+
+   Mail::Message::Encode
+   remove FML::Encode and Mail::Message::Decode
+	merge FML::Encode Mail::Message::Decode into Mail::Message::Encode
+
+   FML::Header::Subject
+	switched to use of Mail::Message::Encode
+
+2002/08/11
+
+   FML::Encode
+	プロトタイプを作ってみる。
+	XXX このモジュールは fml 4.0 でも使う
+
+2002/08/09
+
+   libexec/error
+	エラーアドレスの自動削除機能一通り完成
+
+   FML::Process::Error
+	change lock granuality
+	
+   FML::Error
+	validate syntax for target address to remove
+	check if the target address is a ML member before deluser() runs
+	
+2002/08/08
+
+   FML::Error
+	enable real deluser()
+	
+   FML::Credential
+   FML::Command::{Auth,UserControl}
+   FML::Command::Admin::chaddr
+   FML::Command::User::{chaddr,off,on,subscribe,unsubscribe}
+   FML::Process::{Command,Error,Kernel}
+	change arguments of credential functions to clarify the target address:
+	e.g. is_member($curproc, $args) -> is_member(addr)
+	
+	modified functions:
+	o is_member()
+	o is_privileged_member()
+	o is_recipient()
+	o match_system_accounts()
+
+2002/08/07
+
+   libexec/error
+	エラーアドレスの自動削除機能を実装
+
+   FML::Error::Cache
+   FML::Process::Error
+   FML::Error
+	enable automatic user removing (prototype)
+	
+   FML::Process::{Kernel,Utils}
+	define $curproc->{ scheduler } not _scheduler
+	define access method scheduler().
+	please use it e.g. $curproc->scheduler().
+	
+   FML::Process::Kernel
+	lock() and unlock() accepts channel as the argument if needed.
+	
+	implemented
+	o is_timeout( $channel )
+	o get_timeout( $channel )
+	o set_timeout( $channel, $time )
+	
+   FML::Process::Error
+   FML::ErrorAnalyze  (removed)
+	create FML::Error:::with separate clesses for cache manipulation and
+	analyzer.
+	modified to FML::Error::Cache for cache writing.
+
+   FML::Process::Scheduler
+	$scheduler_queue_dir -> $event_queue_dir
+	
+   Tie::JournaledFile
+	check the file existence
+	
+   Tie::JournaledDir
+	bug fix the default day type handling
+	
+2002/08/03
+
+   変数
+	define $scheduler_queue_dir
+
+   FML::Process::Kernel Command Distribute Error
+   FML::Process::Scheduler
+	scheduler_init()
+
+   Tie::JournaledFile
+	enhance find: find(key, [mode]) where mode = scalar, array, array_ref
+	implement get_all_values_as_hash_ref()
+	bug fix FIRSTKEY() and NEXTKEY(), modified to use hash on memory
+	
+   Tie::JournaledDir
+	bug fix keys() and each(), modified to use hash on memory.
+	implement EXISTS(), DELETE(), CLEAR()
+	implement get_all_values_as_hash_ref()
+	
+   FML::Header::MessageID
+	modified to sync w:::Tie::JournaledDir usage
+	
+   FML::Article
+   FML::Header
+   FML::Process::Distribute Kernel
+	use LogError() if appropriate
+
+2002/07/31
+
+   ログファイル
+	ログファイルフォーマットのデフォルトを変更
+
+   FML::Header
+   FML::Header::MessageID
+	disable some debug codes.
+	switch DB from File::CacheDir to Tie::JournaledDir
+	
+   FML::Log
+	use File::Basename;
+	
+   FML::Article
+	s/Article/article/
+	
+   Mail::Delivery::SMTP
+	recipients::total=\d+
+	
+   FML::Process::Distribute
+   Mail::ThreadTrack::Analyze
+	disable some debug messages
+
+2002/07/30
+
+   変数
+	+error_analyzer_cache_type		=	File::CacheDir
+	+error_analyzer_cache_mode		=	temporal
+	+error_analyzer_cache_size		=	14
+
+   libexec/error を書き上げよう!
+	   FML::Process::Error
+	   FML::ErrorAnalyze
+		move error analyzer core functions to FML::ErrorAnalyze
+
+   FML::Process::Kernel
+	libexec::error not need reply_message()
+
+2002/07/29
+
+   変数
+	nuke database_* sql_*
+
+   FML::Process::Error
+	bug fix::resolve_ml_specific_variables() and load_config_files()
+	add a few function prototypes
+
+2002/07/28
+
+   変数
+	$newml_command_init_dirs
+		rename::init_config_dir_list -> newml_command_init_dirs
+
+		added $shared_db_dir $var_dir $db_dir $lock_dir
+		$tmp_dir $spool_dir
+
+	member_maps = $primary_member_map (nuke members-admin)
+
+2002/07/26
+
+   モデレータモードの予備作業
+	moderator の maps を定義する。
+		members-moderator
+		recipients-moderator
+
+	{add,del}moderator コマンドを作成
+
+   FML::Command::Admin::{add,del}admin
+		members-admin
+		recipients-admin
+	の両方をアップデートする(けど、recipients の方は使わない)。
+
+2002/07/25
+
+   FML::Config
+   File::Sequence Utils
+   IO::Adapter::File
+   IO::Adapter::AtomicFile
+   IO::File::Atomic
+	rename::IO::File::Atomic -> IO::Adapter::AtomicFile
+
+   IO::Adapter の改良継続中
+
+   FML::Process::Command
+	improve error messages
+
+   FML::Process::Kernel
+	improve log messages
+
+   IO::Adapter::File
+	bug fix so that getline() returns undef if not opened
+
+2002/07/24
+
+   IO::Adapter
+	clean up
+	remove AUTOLOAD()
+	removed replace()
+
+   IO::Adapter::DBI
+	add missing open(), close()
+	removed replace()
+	implement getline()
+
+   IO::Adapter::File
+	removed replace()
+	clean up comments
+
+   IO::Adapter::SQL::toymodel
+	removed since we discard sql model based framework
+
+   FML::Credential
+   FML::Command::UserControl
+   FML::Command::Admin::chaddr
+	change argv of FML::Credential::has_address_in_map():
+	($map, $address) -> ($map, $config, $address)
+
+2002/07/23
+
+   IO::Adapter の SQL コードを大改定
+
+   FML::Mailer
+   FML::Command::Auth UserControl
+   FML::Command::Admin::chaddr
+   FML::Process::Distribute Utils
+   Mail::Delivery::SMTP
+	reconstruct SQL functions in IO::Adapter
+	new IO::Adapter $map, $config;
+
+   IO::Adapter
+   IO::Adapter::DBI MySQL
+	reconstruct MySQL functions
+	o get_next_key() works now.
+	o disable some functions once.
+
+   FML::Config
+	.ini sytle extension. for example
+
+	[mysql:id]
+	key = value
+
+	So, we have the 2nd level hash value such as
+	$config->{ key1 }->{ key2 } = $value
+	and read::write it.
+
+	bug fix {+,-}=  operation in the second level.
+
+
+2002/07/22
+
+   変数
+	READ_ONLY($admin_member_maps)
+	mysql 設定の例を追加
+
+   FML::Config
+	expand READ_ONLY($array) -> an array of READ_ONLY($array[$i])
+
+   IO::Adapter
+	accept READ_ONLY($map)
+	prohibit add/delete/replace call for read only maps.
+
+   FML::Credential
+	add is_recipient() for sender is an ML recipient or not.
+
+   off/on command prototype
+	   FML::Command::User::confirm
+	   FML::Command::Admin::on
+	   FML::Command::Admin::off
+	   FML::Command::User::on
+	   FML::Command::User::off
+		prototype on and off mode for recipient map
+
+2002/07/20
+
+   FML::Command::Admin::unsubscribe
+	member_map    use config primary_member_map    to member_maps
+	recipient_map use config primary_recipient_map to recipient_maps
+
+2002/07/19
+
+   FML::Process::Kernel
+	repyl_message() handles makefml and *.cgi as special cases.
+
+   FML::Process::CGI::Kernel
+	cgi_execute_command() checks the command is allowed in
+	commands_for_admin_cgi.
+	XXX "commands_for_admin_cgi" is hard-coded.
+	XXX we should enhance this for ml-admin::*.cgi et.al.
+
+   FML::Restriction::Command
+	enhance command syntax regexp
+
+   FML::Command::Auth
+	check user matching
+
+   FML::Restriction::Command
+	bug fix wrong command regexp
+
+   FML::Process::Command
+	remove not used variable
+	check whether this command is allowed in this $level
+
+2002/07/17
+
+   Mail::Message::MH
+	add debug
+	define new()
+	bug fix first:\d+
+	handle a,b,c pattern
+
+   FML::Command::SendFile
+	use Mail::Message::MH
+
+   FML::Command::UserControl
+   FML::Command::Admin::log
+   FML::Process::Kernel Utils
+   FML::Process::CGI::Kernel
+	define printing style format such as 'text', 'html', ...
+	you can control it by the following access methods,
+	get_print_style() and set_print_style(mode)
+
+   FML::Command::Admin::dir file
+	use FML::Restriction::
+
+   FML::MTAControl::Procmail
+	remove garbage definitions
+
+   FML::MTAControl::Postfix
+	search only hash:, dbm::types in postfix alias_maps
+
+   FML::Credential
+	optionally, we accept case insensitive comparison of user part
+	of the mail address.
+
+2002/07/15
+
+   FML::Process::Utils
+	define the following access methods:
+	config()
+	pcb()
+	incoming_message_header()
+	incoming_message_body()
+	incoming_message()
+	article_header()
+	article_body()
+	article_message()
+
+   FML::Command::DataCheck
+   FML::Filter::BodyCheck
+   FML::Process::Command Distribute Error Kernel Utils
+	modified to use access methods above.
+
+   FML::Command
+	use "$myname eq" not "$0 =~"
+
+   FML::Config
+	nuke debug::... if $0 =~ ::loader::
+
+2002/07/14
+
+   いくつかのコマンドの結果やエラーメールは管理者へも送るようにする
+	登録/削除についてのログ
+	メンバー以外からの投稿/コマンドメールなど
+
+   FML::Process::Utils
+	implement which_message_nl()
+
+   FML::Command
+   FML::Command::UserControl
+   FML::Command::User::confirm
+   FML::Process::Command Distribute Kernel
+	copy message and send it to $maintainer too
+	use reply_message*() with $msg_args to copy the message if needed where
+	$msg_args = { always_cc => $maintainer } or
+	$msg_args = { recipient => $maintinaer } pertinently.
+
+   FML::Command::UserControl
+	use message_nl( {add,del}_{ok,fail} ... ) as a reply
+
+   FML::Process::Kernel
+	disabled makefml NOT TO USE reply_message() now
+
+2002/07/13
+
+   コマンドシンタックスの見直し
+	CGI もこれに合わせて修正
+
+	admin adduser
+	admin useradd
+	admin addadmin
+	admin adminadd
+	admin deluser
+	admin userdel
+	admin deladmin
+	admin admindel
+
+   FML::MTAControl
+   FML::MTAControl::Procmail
+   FML::Command::Admin::newml rmml
+	newml 時に procmail の設定のテンプレートを作る。
+	rmml  時には消す。
+
+   FML::Process::Kernel
+	check defined($ml_name) in ml_* variable handlings
+
+2002/07/12
+
+   procmailrc のサンプルもつくってみやう
+	newml/rmml コマンドが procmailrc のテンプレートを生成/削除する
+	ようにする
+
+2002/07/11
+
+   FML::MTAControl::Qmail
+	remove ~fml::.qmail-* when the ML is removed.
+
+2002/07/10
+
+   CPAN modules
+	import Unicode::Japanese 0.09
+
+   CPAN documents
+	catch up (2002::07::10)
+
+2002/06/30-2002/07/30
+
+   ドキュメントクリーニング きゃんぺーん
+
+2002/06/30
+
+   FML::Command::HTMLify
+	more check of input
+
+   FML::Process::ThreadTrack
+	fix ISA for ->speculate_max_id()
+
+   FML::Process::ConfViewer Spool
+	fix the condition to show help
+
+   FML::Process::Error
+	$self -> $curproc
+
+2002/06/28
+
+   FML::CGI::Admin::Menu
+   FML::Process::CGI::Kernel
+	separate execution of the command and the menu pop up.
+	Firstly execute run_cgi_main() and show tables after that.
+
+	CGI の情報更新をきちんとするために、CGI の関数呼びだしの基本構
+	造を修正
+
+2002/06/27
+
+  バーチャルドメインサポートの修正、全面的オーバホール
+
+   FML::MTAControl
+   FML::Command::Admin::newml rmml
+   FML::MTAControl::Postfix Qmail
+	major overhaul
+	o reconstruct architecture
+	o bug fix virtual domain support
+	o sync w:::FML::Process overhaul to bug fix virtual domain support
+
+   FML::Process::Alias Command ConfViewer
+		                            Configure Distribute
+		                            DocViewer Error HTMLify
+		                            Kernel Spool Switch
+		                            ThreadTrack Utils
+   FML::Process::CGI::Kernel
+	major overhaul::delayed loading of *.cf files.  The loading is done
+	within prepare() method now to handle virtual domains properly.
+
+   FML::Command::HTMLify
+	not need to validate ml existence
+
+2002/06/25
+
+   clean up CGI ...
+
+   FML::CGI::Admin::List
+	scroll size is set by the length of maps
+
+   FML::Command::Admin::rmml
+	fix virtual domain handling. sync w:::newml logic
+	clean up (white spaces)
+	clean up. nuke _get_domain_info (not used)
+
+2002/06/24
+
+   CGI の見栄えを大改良中
+
+   FML::Process::Utils
+	get_ml_list()::check $ml_home_prefix, bug fix default domain handling
+	bug fix ml_home_prefix() args, more defined() checks
+
+   FML::Config
+   FML::Process::Kernel
+   FML::Process::CGI::Kernel
+	more defined() checks and sanity check if could
+
+   FML::CGI::Admin::ML Menu User
+   FML::Process::CGI::Kernel
+	clean up menu, bug fix run_cgi_menu() args
+
+2002/06/23
+
+   バーチャルドメインのサポート
+	bug fix
+	postfix および qmail は makefml newml を実行するだけで
+	バーチャルドメインの設定まで全自動
+	# 最初の一回はちょっとだけ MTA の設定が必要だけどね
+
+   FML::Command::Admin::newml
+	insert "$ml_domain $ml_domain" to the file "virtual" at the
+	first time since $ml_domain is one of $mydestination.
+	install a template for qmail::control::virtualdomains
+
+2002/06/22
+
+   bug fix domain/virtual domain handling (specially in CGI)
+
+   FML::Process::CGI::Kernel
+	use $curproc->ml_XXX() as could as possible in new()
+	clean up table configuration:
+	define tables for function and  attributes
+
+   FML::Log
+	eval Log(warn ...) || print stderr it
+
+   FML::Restriction::Base
+	define navi_command as the same as command
+
+   FML::Config
+	defined() check more
+
+   FML::Command::Admin::newml
+	fix args of ml_home_xxx()
+
+   FML::CGI::Admin::ML
+	change get_ml_list() args
+
+   FML::CGI::Admin::Menu
+	classify the command in the navigation and main
+
+   FML::Process::Utils
+	define ml_name() method
+	ml_domain() returns the current process's domain not default one.
+	ml_home_prefix() and get_ml_list() behave more properly to reflect the
+	current situation.
+	fix ml_domain handling of rewrite_config_if_needed().
+
+2002/06/21
+
+   CGI bug fixes
+
+   FML::Process::Utils
+   FML::Process::CGI::Kernel
+	move get_ml_list() and get_recipient_list()
+	from Process::CGI::Kernel to Process::Utils.
+
+   FML::CGI::Admin::Menu
+   FML::Command::Admin::newml
+	set up $ml_name dynamically
+
+   FML::Command::UserControl
+	ignore non-existed files, not croak()
+
+   IO::Adapter::File
+	close write handle and read handle after the write one.
+
+   FML::Command::UserControl
+	use IO::Adapter->get_next_key() not getline() for member list up
+
+2002/06/01
+
+   major variable naming overhaul
+
+	relocating variable definitions in etc/src/
+
+	align convention: for example,
+		use_XXX
+		XXX_rules
+		XXX_dir
+		XXX_cache_dir
+
+	rename:
+	$recipient_limit -> $smtp_recipient_limit
+	$incoming_mail_dir -> $incoming_mail_cache_dir
+	$outgoing_mail_dir -> $outgoing_mail_cache_dir
+	$qmail_control_virtualdomains_file -> $qmail_virtualdomains_file
+
+	s/header_filter/article_header_filter/
+	s/header_rewrite/article_header_rewrite/
+	s/body_filter/article_body_filter/
+
+	s/subject_tag/article_subject_tag/
+
+	verify_XXX_* -> check_XXX
+
+	newly defined:
+		$use_digest_header_rewrite
+
+	removed:
+		$smtp_log_dir
+		$smtp_log_file
+
+   overhaul
+	variable naming convention
+	defined check
+	FNF-ify
+	fix argument declarations
+
+   FML::Command::Auth
+	permit_admin_member_maps() return 0 if not match
+
+   FML::Process::Kernel
+	temp_file_path() ensures temp file name uniqueness by counting the
+	number of times this function is called.
+
+2002/05/31
+
+   FML::Header
+	add rewrite_date() for header rewrite Date::to X-Date:
+
+2002/05/29
+
+   FML::Command::Admin::chaddr
+	bug fix::error_set() -> croak()
+
+   FML::Process::Switch
+	try to save the critical error message at $ml_home_prefix/ if could
+
+2002/05/28
+
+   rename/reconstruct variables
+	clarify prefixes in caution.
+	define or rename sysconf_dir et.al. to $domain_XXX_config_dir
+	define $path_postmap
+
+   FML::Command::Admin::newml
+	mkdir @$init_config_dir_list
+	run "postmap virtual"
+	mainconf_dir -> domain_mail_config_dir
+
+   FML::Credential
+	$config->get_as_array_ref
+
+   FML::Command::Auth
+	implement permit_admin_member_maps()
+
+2002/05/27
+
+   new variable naming convention
+	add caution
+
+	define terms on "mail" and "message"
+	change::_message_ -> _mail_
+
+	define $postfix_virtual_map_file
+
+	add $admin_member_maps to $member_maps
+
+	change attribute names:
+	o permit_members_only -> permit_member_maps
+	o check_command -> check_admin_member_password
+
+   FML::Mailer
+   FML::Process::Distribute
+   Mail::Delivery::{SMTP,Utils}
+	pass smtp log file handle to Mail::Delivery
+
+   FML::Process::Distribute
+	permit_members_only -> permit_member_maps
+
+   FML::Command::Admin::newml
+   FML::MTAControl
+   FML::MTAControl::{Postfix,Qmail}
+	set up virtual map if needed
+
+   FML::Process::Kernel
+	only user "fml" should read lock files.
+	define terms on "mail" and "message"::_message_ -> _mail_
+	permit_members_only -> permit_member_maps
+
+   FML::Process::Command
+   FML::Command::Auth
+	rearrange admin command authentication to sync w/ new variable names
+
+   FML::Process::Utils
+	implement is_default_domain()
+
+2002/05/25
+
+   FML::Command::Admin::newml
+	fix $templ_files be ARRAY_REF
+
+   FML::MTAControl::Qmail
+	install .qmail-do:ma:-$ml for .qmail-do.ma.in-$ml
+
+   FML::Command::Admin::newml
+   FML::Process::Configure Utils
+	at the first stage of makefml, care $config and rewrite it, if needed,
+	when we handle virtual domain.
+	implement $curproc->rewrite_config_if_needed() for it.
+
+2002/05/24
+
+   variables
+	reconstruct $newml_command_*_template_files
+
+   FML::Config::Convert
+	implement convert_file(srcfile, dstfile, params)
+
+   FML::Log
+	print STDERR $msg if Log() fails
+
+   FML::MTAControl
+   FML::Command::Admin::newml
+	use FML::MTAControl ACAP
+
+2002/05/23
+
+   FML::Header::Subject
+	add mime decode for subject
+
+   Mail::Message::Decode Encode
+	FNF-ify, fix documents and @EXPORTS
+
+2002/05/22
+
+   FML::Mailer
+	save smtp log at var/mail/outgoing/
+
+2002/05/21
+
+   variables
+   	define $error_cache_dir
+	define $newml_command_postfix_template_files
+	define $newml_command_qmail_template_files
+	define $incoming_message_dir
+	define $outgoing_message_dir
+		var/mail/{incoming,outgoing,queue}/
+
+	define $use_outgoing_message_cache     =       yes
+	define $outgoing_message_cache_size    =       128
+
+   etc/aliases
+	enable auto error analyzer by default
+
+   FML::Process::Kernel
+	implement $curproc->open_outgoing_message_channel()
+	$mincoming_dir -> $incoming_message_dir
+
+   FML::Process::Distribute
+	use $curproc->open_outgoing_message_channel() not _smtplog to save
+	SMTP transaction logs.
+
+   FML::Command::Admin::newml
+	$newml_command_template_files ->
+	$newml_command_postfix_template_files
+
+   Mail::Bounce::Postfix19991231
+	validate input data
+
+   FML::Process::Error
+	implement a prototype to cache error data
+
+2002/05/19
+
+   add/enable a prototype of libexe::fml::error (mead)
+
+   variables
+	define $use_error_analyzer
+	define $subscribe_command_auth_type
+	define $listinfo_base_dir
+	$command_prompot          -> $command_prompt
+	$command_chaddr_type      -> $chaddr_command_auth_type
+	$command_unsubscribe_type -> $unsubscribe_command_auth_type
+
+   FML::Process::Error
+	work if $use_error_analyzer is 'yes'
+	add hooks
+	finish() checks if this error message is effective or not.
+	fix typo and missing definition
+
+   FML::Process::Command
+	fix building logic of $command_args and $options to make admin
+	command work again.
+	fix $admin_prefix trap
+	rearrange structure
+	FNF-ify
+	clarify the current context is under confirmation or not.
+	ignorance of commands are dependent on this context.
+	nuke mode=special which is not used.
+	send back statistics and original message
+
+   FML::Command::DataCheck
+	fix parse_command_arguments() arguments
+
+   Mail::Message::MH
+	fix wrong last:\d+ counting logic
+
+2002/05/18
+
+   FML::Process::Command
+	reconstruct command check logic (1)
+
+   Mail::Message
+	implement message_text_as_array_ref()
+
+   updated IM to im-141 + local patch (tats20020413.diff)
+
+   FML::Filter::BodyCheck
+	add reject_uuencode()
+
+2002/05/17
+
+   FML::Process::Kernel
+	check whether $use_incoming_message_cache is yes
+	use $mincoming_cache_size as cache modulus
+	save incoming message at $ml_home_dir/var/mincoming/
+
+   File::CacheDir
+	update document on new() arguments
+	bug fix eval{} should do eval { use()&&new() }
+
+   new variables: (etc/)
+	use_incoming_message_cache	=	yes
+	incoming_message_cache_size	=	128
+
+2002/05/16
+
+   FML::Process::CGI::Kernel
+	pick up address_selected not address
+
+   Mail::Message::ToHTML
+	not reset @AnyDBM_File::ISA.
+	It is better for us to use the default @ISA
+
+2002/05/13
+
+   FML::Process::Utils
+	implement
+	config_cf_filepath($ml, $domain)
+	is_config_cf_exist($ml, $domain)
+
+   FML::Command::HTMLify
+	validate if config.cf exists
+
+2002/05/11
+
+   FML::Filter::ContentCheck
+	add Log deteled mimetype at only_plaintext() and typo fix
+	fix wrong log message (but is it correct fix ?).
+	FNF-ify
+
+   FML::Language::Japanese::Utils
+	_look_not_iso2022jp_string::add trivial check
+
+   Mail::Message
+	fix::parser() should handle header only message.
+	no no no, not reset $data_ptr unless body
+	nuke \s*$
+
+2002/05/10
+
+   FML::Filter::ContentCheck
+	add function permit_mimetype() and reject_mimetype()
+	add function permit_rules() and reject_rules()
+
+2002/04/30
+
+   FML::Command::Admin::check
+	add prototype for diagnostics
+
+2002/04/28
+
+   FML::Process::Kernel
+	check $curproc->is_refused() more before action at each step
+
+   Mail::Message
+	fix comment.
+	add loop label.
+	FNF.
+	more checks by defined() and whether the content is not empty.
+	new() not need $InComingMessage here
+	remove module global variable $InComingMessage
+	check invalid multipart format
+
+2002/04/27
+
+   FML::Process::Kernel
+	kern.not_member -> error.not_member
+
+   FML::Process::Kernel
+	disable debug message
+
+   Mail::Message
+	check more data by defined()
+
+   FML::Process::Kernel
+	modified to not using FileHandle::pipe()
+	add methods to prepare and clean up temporary files
+	implement parse_exception()
+	implement message_nl() to separete message converter into natural
+	language and message handling parts
+
+   FML::Process::CGI::Kernel Param
+	convert exception syntax into the new style. See FNF
+	convert message to natual language if could
+
+2002/04/26
+
+   FML::Process::Flow
+	run clean_up_tmpfiles() finally
+
+   FML::Process::Kernel
+	fix typo
+	define "permit_commands_for_stranger" (only define not implemented :)
+
+   FML::Process::Command
+   FML::Command::DataCheck
+	permit_commands_for_stranger works
+
+   variables
+	add rule permit_commands_for_stranger for $command_restrictions
+
+2002/04/25
+
+   variables
+	rename variable::available_commands_for_xxx -> commands_for_xxx
+
+   FML::Command::Admin::htmlify
+	check $use_html_archive value before action
+
+   FML::MTAControl
+	implement get_aliases_as_hash_ref()
+	new() accepts { mta_type => ... } argument
+
+   FML::Process::Switch
+   FML::Process::Alias
+	new utility::fmlalias e.g. shows not only fml but all alias entries
+
+   Mail::Message
+	check defined($InComingMessage) before $body_size estimation
+
+2002/04/24
+
+   FML::Header::Subject
+	replace subject to Subject
+
+   define $path_postconf
+
+   File::Utils
+	define append()
+
+   FML::Command::Admin::{newml, rmml}
+	use File::Utils and FML::MTAControl to share codes.
+
+   FML::Command::Admin::newml
+	check $ml_name duplication over all $alias_maps (postfix case)
+
+   FML::Filter::ContentCheck
+	bugfix object argument
+
+2002/04/23
+
+   FML::Process::Distribute Kernel
+	fix errro message and enable the rejected message forwarding
+
+   FML::Command::Admin::newml
+	check alias duplication
+	enable cgi
+
+   FML::Restriction::Base
+	define $ml_name_specified
+
+   FML::CGI::Admin::Menu
+   FML::Process::CGI::Kernel
+   FML::CGI::Admin::ML
+	define cgi_try_get_ml_name()
+	enabled newml and rmml on CGI.
+
+2002/04/22
+
+   FML::Process::CGI::Kernel
+	sort ml list
+
+   FML::Command::HTMLify
+	bug fix subdirs sorting algorithm
+
+   Mail::Message::Spool
+	check value of $args->{ use_subdir }
+
+   FML::Article
+	error if the article already exists
+
+2002/04/21
+
+   FML::Command::Admin::newml
+	install .htaccess only for the first time
+
+   Mail::Message::ToHTML
+	you can specify $ENV{MAX}
+
+   Mail::Message::ToHTML
+	for () { fork() && call htmlify_file() }
+
+   Mail::Message::ToHTML
+	htmlify_dir() accepts options::$has_fork and $max (for debug)
+
+   Mail::Message::ToHTML
+	sort years in monthly.index
+	bug fix the scan range for each subdir
+
+   FML::Command::HTMLify
+	sort -n subdirs list
+
+2002/04/20
+
+   FML::Filter::BodyCheck
+	comment out "local($*) = 0;"
+
+   FML::Filter::TrafficMonitor
+	disable almost all codes imported from fml 4.0 once anyway
+
+   configure
+	add --with-warning
+
+   FML::Command::HTMLify
+   FML::Process::HTMLify
+	bug fix subdir checking
+
+	use FML::Command::HTMLify to share htmlify code between
+	fmlhtmlify and "makefml htmlify".
+
+   FML::Command::Admin::htmlify
+	remove $options
+
+   FML::Process::Configure
+	log raw error message
+
+2002/04/19
+
+   FML::Process::Spool
+	check argument and show help if invalid
+
+   FML::Process::Switch
+	stop $ml_home_dir search when we can get it.
+
+   Mail::Message::ToHTML
+	bug fix::check the source file existence more severely
+
+2002/04/18
+
+   Mail::Message::ToHTML
+	check $args->{ file } more severely in _update_relation()
+
+   FML::Process::Distribute
+	eval htmlify_file() to avoid unknown error ;)
+
+   FML::Process::Distribute
+	eval filtering
+
+2002/04/16
+
+   FML::Process::Switch
+	fmlspool --srcdir not --dstdir
+
+   FML::Process::Spool
+	fix conversion algorithm
+
+2002/04/15
+
+   FML::Process::Switch
+	fmlspool --srcdir not --dstdir
+
+   FML::Process::Spool
+	fix conversion algorithm
+
+   add a new utility "fmlspool"
+	add a new utility::fmlspool to handle spool directory
+
+   FML::Process::Utils
+	implement ml_home_dir()
+
+   FML::Process::Switch
+	enable fmlspool
+
+   FML::Article
+	implement subdirpath().
+	check $curproc->{'incoming_message'}->{ message } in new() data input.
+
+   FML::Process::Kernel
+	implement set_umask_as_public(), reset_umask() for umask control.
+
+   FML::Process::Distribute
+	umask and permission control for html archives
+
+   Mail::Message::ToHTML
+	BEGIN { @AnyDBM_File::ISA = qw(DB_File GDBM_File NDBM_File); }
+
+   FML::Process::HTMLify
+	consider spool:::may has subdir(s)
+
+2002/04/14
+
+   Mail::Message::ToHTML
+	fix $subdir handling on month boundary
+	validate $curid ($self->{ _current_id})
+	validate or warn input into Jcode
+	set $code for Jcode if needed
+
+   CPAN	modules
+	updated Jcode to 0.79
+
+2002/04/13
+
+   FML::Command::User::unsubscribe
+	use FML::Confirm not via eval{ use ..}
+
+   FML::Process::Command
+	select the error message by the $xxx_restrictions error reason
+
+   Mail::Message
+	implement whole_message_as_string_ref()
+
+   FML::Process::Command
+	reply_message( OBJ(Mail::Message) ) when the message is rejected by
+	$command_restrictions.
+
+   FML::Process::Kernel
+	o reply_message() can handle OBJ(Mail::Message).
+	o save error reason at pcb area when the message is rejected by
+	xxx_restrictions.
+
+2002/04/12
+
+   FML::Process::Distribute
+	send back mesg "we deny requests from system accounts"
+
+   FML::Process::Command
+	check by permit_command() before command execution ;)
+	send back mesg "we deny requests from system accounts"
+
+   FML::CGI::Calender
+	switched to the current style
+
+2002/04/11
+
+   FML::Config
+	has_attribute() should look up %_fml_config_result
+
+   FML::Process::Command
+	accept commands, e.g. subscribe, allowed for not members
+
+2002/04/10
+
+   2002/03 分クリーンアップおわり
+
+   FML::Filter クラスによるフィンルタリングを有効にする
+	FML::Filter:: のバグ修正
+
+   FML::Process::Distribute Kernel
+	enable filtering.
+	implement access methods to control filtering.
+	o $curproc->refuse_further_processing()
+	o $curproc->is_refused()
+
+2002/04/07
+
+   variables
+	define $primary_admin_member_password_map
+	rename $admin_member_passwd_maps -> $admin_member_password_maps
+
+   FML::Command::Admin::chaddr
+	chaddr over all maps
+
+   FML::Command::Admin::get
+	clean up variable names to be easy for your eyes
+
+   FML::Command::Admin::htmlify
+	doc::remove makefml description
+	add --dstdir=DIR
+	FNF-ify
+
+   FML::Command::Admin::list
+	show all maps in $xxx_maps
+
+   FML::Command::Admin::log
+	fix::add comments
+	use HTML::FromText class to espace metchars
+
+   FML::Process::Calender
+	clean up documents, comments
+	use $curproc not $self if appropriate
+
+   FML::Process::DocViewer
+	remove AUTOLOAD()
+	clean up
+
+2002/04/06
+
+   remove "recipients" file from default $recipient_maps
+
+   Mail::Message::Spool
+	define dirpath()
+
+   FML::Article
+	mkdir subdir if needed
+
+2002/04/05
+
+   spool (記事のスプール)の階層化構造をオプションにする
+	変数 $use_spool_subdir を創設する
+
+2002/04/03
+
+   clean up, audit campaign
+	春だからお掃除しましょう(意味不明)
+
+2002/04/01
+
+  実際に構築しつつテストしてみる。
+	configure はもっといろいろチェックするべし
+	不便なものを実装する。e.g. makefml list
+
+   more check and expansion by configure
+	we should use values speculated by configure if could.
+	default_ml_home_prefix = @mlspooldir@
+
+   FML::Command::Admin::newml
+	not install CVS
+
+	expand default_domain by config.status
+
+   FML::Command::UserControl
+   FML::Command::Admin::list
+	enable "admin list" command
+	admin list $ml {members,actives,recipients}
+
+   FML::Process::Switch
+	warn() if $ml_name not specified
+
+2002/03/31
+
+   "makefml newml" set up ~fml/fml/listinfo/$domain/$ml/
+	MLの作成時に WWW ページを用意する( listinfo を作る)。
+	FML::Command::Admin::newml
+
+	variables
+	+ remove $message_message_dir
+	+ change $message_template_dir
+	+ change $html_archive_dir
+	+ add $listinfo_dir
+
+   階層化構造を取れるようにする
+	HTML 化記事を置くディレクトリ
+	スプールディレクトリ
+
+   FML::Process::Kernel
+	$message_message_dir -> $message_template_dir
+   FML::Command::Admin::htmlify
+   FML::Process::{Distribute,HTMLify}
+   Mail::Message::ToHTML
+   Mail::HTML::Lite
+	rename class::Mail::HTML::Lite -> Mail::Message::ToHTML
+	change .ht* database names
+
+   FML::Article
+   Mail::Message::Spool
+   Mail::ThreadTrack
+   Mail::ThreadTrack::DB Print.pm
+   Mail::ThreadTrack::Print::HTML Text.pm
+	use Mail::Message::Spool::filepath() for the article file path.
+	use $self->filepath() which is  based on Mail::Message::Spool
+	Mail::Message::Spool::spool arg changes::$spool_dir -> $base_dir
+
+   Mail::HTML::Lite
+	rename message_file*() -> html_file*()
+	html file path is YYYYMM/msg$id.html by default
+
+2002/03/30
+
+   FML::Article
+   FML::Command::SendFile
+   FML::Process::Distribute
+	FML::Article::filepath() determines the article file path.
+
+   admin {delete,unlink} -> admin file $subcommand
+	コマンド名が衝突する可能性があるため
+	admin コマンドのシンタックスの拡張をはじめる。
+
+2002/03/25
+
+   enable admin {delete,unlink}
+
+   FML::Restriction::Base
+	define file
+
+   FML::Command::DirUtils
+	fix to use FML::Restriction::Base not CGI
+
+2002/03/24
+
+   FML::Restriction::Base
+	define directory regexp as [-a-zA-Z0-9]+
+	permit . in "user" part in e.g. "address"
+
+   variables
+	define $path_ls for admin {dir,ls}
+
+   enhance dommands
+	enable admin {ls,dir,delete,unlink}
+
+2002/03/23
+
+   FML::Command::Auth
+	admin コマンドのパスワード認証を有効にする
+
+   FML::Command
+	implement rewrite_prompt(). It is used to hide password et. al.
+
+   FML::Process::Command
+	clean up
+	use rewrite_prompt() by FML::Command to hide admin password.
+
+   variables
+	define $admin_member_passwd_maps.
+	admin password
+	admin pass
+
+   new modules from CPAN
+	import Crypt-UnixCrypt-1.0, perl-only implementation of the
+	crypt(3).
+
+2002/03/21
+
+   コマンドの認証について改良
+
+   FML::Credential
+	reconstruct is*member() functions
+	implement primitive is_privileged_member()
+
+   FML::Process::Command
+	clean up :::clarify the logic:
+	o valid command syntax
+	o command mode for a user, admin and stranger
+	o add prototype of admin command auth
+
+   variable:
+	define $admin_command_restrictions
+
+   FML::Command::Auth
+	add prototype of admin command auth
+
+2002/03/20
+
+   CGI の再構成: clean up's
+
+   loader
+	prepare a hook to inform some hints via $main_cf
+
+   FML::Process::Utils
+	implement hints()
+
+   FML::Command::Admin::newml
+	setup admin::{thread,config,menu}.cgi based on libexec::loader
+	and hints
+
+   FML::Config::Convert
+	replace __hints_for_fml_process__
+
+   FML::Process::Switch
+	enable config.cgi , remove makefml.cgi
+
+   FML::CGI::ThreadTrack
+	vertical align of menus
+
+   FML::Process::CGI::Kernel
+	change layout in table a little.
+	define run_cgi_title() and run_cgi_help()
+	add options bar to switch the language (dummy yet :-)
+
+   FML::CGI::Admin::Menu
+	remove run_cgi_help() once
+
+2002/03/19
+
+   CGI の再構成: FML::CGI と FML::Command 間のトランポリン機構
+	コマンド依存の機能を FML::Command クラスへ委任する
+
+   FML::Process::CGI::Param
+	accpet empty value even if it not matches filter:)
+
+   FML::Command::Admin::subscribe unsubscribe.pm
+	implement cgi_menu() to show command specific menu in CGI screen
+
+   FML::CGI::Admin::Menu
+   FML::Process::CGI::Kernel
+	o prepend cgi_ or run_cgi to function name.
+	o implement trampoline mechanism using FML::Command::class.
+	o change::pop_menu -> scrolling_list
+
+   FML::Command::UserControl
+	define FML::Command::UserControl class to share user control codes.
+	modified Admin::{subscribe,unsubscribe} commands to use it.
+
+   new commands
+	これらの admin コマンドが新たに使えるようになりました。
+	admin addadmin
+	admin addpriv
+	admin byeadmin
+	admin byepriv
+	admin log
+
+   new variables
+	$primary_admin_member_map
+	$admin_member_maps
+
+2002/03/18
+
+   CGI の再構成をはじめる
+
+	FML::CGI::*
+	FML::Process::CGI::*
+	reconstruct CGI around structure phase 1:
+	o table not frame based menu support (similar style to www.netbsd.org)
+	o prepare method for each location in the screen.
+	   for example,
+	   + run_cgi_main() to show main menu at the center in the screen.
+	   + run_cgi_navigator() to show navigation bar at the left.
+	o longjmp() by eval::croak when we encounter insecure conditions.
+
+   FML::CGI::Admin::Menu
+   FML::Process::CGI::Kernel
+	cosmetics
+	FNF
+	define cgi_execute_command() and try_get_address() into
+	FML::Process::CGI::Kernel and remove them from FML::CGI::Admin::Menu
+
+   FML::Process::Utils
+	define ml_domain() but same as default_domain() yet
+
+   new variables (for CGI)
+	$cgi_main_menu_color
+	$cgi_navigation_bar_color
+
+2002/03/17
+
+   chaddr コマンドが動くようになった!
+		chaddr
+		admin chaddr
+		makefml chaddr
+	この3つ全部です。
+
+   FML::Command::User::chaddr
+	works again!
+	if either old or new addresses in chaddr arguments is an ML member,
+	try to confirm this request irrespective of "From:" address.
+
+   FML::Command::Admin::subscribe unsubscribe.pm
+   FML::Command::User::chaddr confirm.pm
+	change $command_args argument:
+	$command_args->{ adddress } =>  $command_args->{ command_data }
+
+   FML::Process::Kernel
+	reply_message::append \n to message if \n$ is missing
+
+	reconstruct message queue subsystem internal.
+	we can handle output styles for message queue input properly.
+
+	メッセージキューイングシステム再構築
+	受信者ベースでのまとめあげ処理などを正しく処理する
+	XXX これで chaddr コマンドが書けます。
+
+2002/03/16
+
+   FML::Process::Kernel
+	new message queue handling. sync with reply-message branch
+
+	clean up logic to handle messages queue.
+	for $recipient ( queue ) {
+		apply the following rules for messages returned to
+		specified $recipient.
+
+		1. pick up text messages and put them into the first part.
+		2. append non text messages
+	}
+
+2002/03/06
+
+   variables
+	define directory for cgi and HTML article archive
+	define $newml_command_template_files
+	define $available_commands_for_admin_cgi
+
+   FML::Config
+	implement get_as_array_ref()
+
+   FML::Process::Switch
+	makefml --force $command $ml ...
+
+2002/02/24
+
+   update /etc: define the following variables
+	$fml_owner $fml_group $syscon_dir $mailconf_dir
+	$mail_aliases_file
+
+   FML::Process::Utils
+	define fml_owner(), fml_group() and mail_aliases().
+
+   FML::Config::Convert
+	replace $fml_owner and $ml_home_dir.
+
+   FML::Config
+	set(key, value) and update() informs FML::Config to expand variables.
+
+   FML::Command::Admin::newml
+	install aliases when makefml newml runs.
+
+2002/02/23
+
+   FML::Command::SendFile
+   FML::Command::Admin::get
+	fix filename in mime header
+
+   FML::Process::Command and etc/
+	validate if the requested admin command is permited or not.
+	define $available_commands_for_privileged_user
+	rename $available_commands -> $available_commands_for_user
+
+2002/02/20
+
+   File::Sequence
+	add function _search_max_id_from_top()
+
+   clean up commands
+	多くのコマンドを動くようにした(微修正だが:-)。
+
+	update $available_commands_for_stranger and $available_commands
+	fix path::$message_template_dir -> $ml_home_dir
+	o $guide_file
+	o $help_file
+	o $objective_file
+	o $summary_file
+
+   FML::Process::Kernel
+	add Reply-To::into our reply message
+
+2002/02/19
+
+   FML::Command
+	remove require_lock() due to obsolete
+
+2002/02/18
+
+   clean up FML::Command::{User,Admin}::*
+	remove FML::Command::Utils and ErroStatus
+	we should not inherit anything as could as possible.
+
+   enhance xxx_restrictions:
+	enable "permit_anyone" can be used in {post,command}_restrictions.
+
+2002/02/17
+
+   FML::Config
+	implement hook extension. For example,
+	$config->is_hook_defined( 'START_HOOK' );
+	$config->get_hook( 'START_HOOK' );
+
+   FML::Process::Command ConfViewer Configure Distribute
+		 DocViewer HTMLify ThreadTrack
+	implement several hooks
+
+   import HTML-Template-2.5 from CPAN
+
+   change variables
+	$confirm_keyword -> $confirm_command_prefix
+	add $admin_command_prefix
+
+   FML::Command::Admin::htmlify
+	makefml htmlify elena --srcdir=.. --outdir=...
+
+   Mail::Delivery::ESMTP
+	fix argument
+
+   admin コマンドを動くようにする
+	まだ認証してないけど :)
+
+   FML::Command::User::confirm
+	remove ErrorStatus, FML::Command::Utils;
+	define new()
+	call User::Command::XXX without lock since already locked now.
+
+   FML::Config
+	fix return value by FETCH() to be without \s*$
+
+   FML::Command
+	change use() and new().
+	not use ErrorStatus.
+	check $command_args->{ override_need_no_lock } to control lock.
+
+   FML::Process::Distribute
+	bug fix definitions on hooks
+
+   FML::Process::Kernel
+	fix file name in searching message template
+
+2002/02/13
+
+   define access method need_lock().
+        each command module determins whether it needs lock or not.
+
+	FML::Command と FML::Command::* 以下の変更いろいろ
+	各コマンドは各自 need_lock() というアクセスメソッドで
+	ロックが必要かどうかを FML::Command に教えるべし
+	XXX 拡張を考慮の上、こうしてみた
+
+   FML::Command::SendFile
+	remove import of ErrorStatus
+
+   rename module::TinyScheduler -> Calender::Lite
+	FML::Process::Switch
+	FML::CGI::Scheduler -> FML::CGI::Calender
+	FML::Process::Scheduler -> FML::Process::Calender
+
+2002/02/11
+
+   create FML::Restriction::Command class
+
+   FML::Command::SendFile
+   FML::Command::User::{guide,help,deny,objective}
+	send back file file in $ml_home_dir if found.
+	return the default message if not found.
+	"guide", "help", "objective" commands use this logic.
+
+	ユーザ用のコマンドの送り返し方を変更
+		1. (4.0 風にいえば) $DIR の help ファイルを送り返す
+		2. help ファイルがないなら、デフォルトのメッセージを使う
+
+		1. は 4.0 との互換性のためで、
+		fml-devel では 2. がデフォルト( help ファイルは作らない )
+
+2002/02/04
+
+   FML::Process::ThreadTrack
+	determine the max sequence id by considering last mofieid time
+	among the sequence file and thread databases.
+
+   Mail::ThreadTrack::DB
+	implement db_last_modified()
+	It return the last modified time of "date" DB in dateabase as
+	unix time.
+
+2002/02/03
+
+   main.cf.in
+	$ml_home_prefix -> $default_ml_home_prefix
+
+   FML::Command::Admin::newml
+   FML::Process::Utils
+	ml_home_prefix() can recognize virtual domain.
+	modified to use it.
+
+	we should not use $curproc->{ main_cf } directrly in modules out of FML::Process::
+	we implement the following methods in FML::Process::Utils and use them.
+	o $curproc->executable_prefix()
+	o $curproc->template_files_dir_for_newml()
+
+2002/02/02
+
+   FML::Process::Utils
+	define access methods::default_domain(), ml_home_prefix()
+	(prototype)
+
+   FML::Process::Switch
+   FML::Process::CGI::Kernel
+	use FML::Process::Utils::__ml_home_prefix_from_main_cf() to
+	get $ml_home_prefix.
+
+   TinyScheduler
+   Mail::ThreadTrack::DB
+	use File::Spec
+
+2002/02/01
+
+   remove $ENV{debug} based toggle flag
+
+2002/01/27
+
+   FML::Command::Admin::newml
+	"makefml newml" virtual domain support. For exmaple,
+
+		% makefml newml elena@nuinui.net
+
+	The ml_home_dir is speculated from $virtual_maps in main.cf.
+
+
+   IO::Adapter clean up campaign ?:)
+
+   Mail::Delivery::SMTP
+   IO::Adapter
+   IO::Adapter::{Array,DBI,File,MySQL}
+	clarify IO::Adapter definition and clean up get_XXX() functions.
+	remove get_member(), get_active() and get_recipient()
+	define get_next_key() and get_next_value() and clarify thier definitions.
+	add IMPLEMENTATION.jp
+
+   FML::Credential
+   IO::Adapter
+   IO::Adapter::DBI
+	clarify IO::Adapter::find() usage.
+	find() returns "key value" by default and "key" if requested.
+	add want option e.g. find(key, { want => $what } ).
+
+   File::Sequence
+	search_max_id() searches all keys if full_search option specified
+
+   FML::Command::SendFile
+	clarify function acl, arguments more
+
+   FML::Command::User::get
+	clarify function arguments more
+
+2002/01/20
+
+   /etc/fml/main.cf
+	define $virtual_maps
+
+   FML::Process::Utils
+	implement get_virtual_maps()
+
+   FML::Process::Kernel
+	fix module loading of Mail::Delivery::Queue
+
+   FML::Command
+   FML::Command::SendFile
+	fixed to call up error to FML::Process::Command layer
+
+   FML::Process::Command
+	more comments, log.
+	fix message handling to use object to get command string returned by
+	find_first_plaintext_message().
+
+2002/01/16
+
+   change Mail::Message naming convention.
+	   FML::Article Parse
+	   FML::Filter::BodyCheck HeaderCheck TrafficMonitor
+	   FML::Process::Command Distribute Kernel
+	   Mail::Bounce Message
+	   Mail::Bounce::DSN Exim GOO Postfix19991231 SimpleMatch
+	   Mail::Delivery::SMTP
+	   Mail::HTML::Lite
+	   Mail::ThreadTrack::Analyze HeaderRewrite
+
+	public -> private:
+	o head_message
+	o last_message
+	o next_message
+	o prev_message
+
+	prefix change:
+	o rfc822_message_ -> whole_message_
+	o get_first_plaintext_message() -> find_first_plaintext_message()
+	o get_encoding_mechanism() -> encoding_mechanism()
+	o get_data_type() -> data_type()
+	o get_data_type_list() -> data_type_list()
+
+	renamed:
+	o get_offset() - >offset_pair()
+	o header_in_body_part() -> message_fields()
+	o data_in_body_part()   -> message_text()
+	where we use RFC822 flabour naming convention.
+	rfc822 says "message = fields + text" and rfc2047 says "message" as
+	defined in RFC 822, with all header fields optional.
+
+2002/01/14
+
+   Mail::HTML::Lite
+	define default value.
+	delayed loading by eval q{ use .. }.
+	validate defined( $db->{ _thread_list }->{ $id } ).
+
+	_head_thread()::fix head_thread search algorithm.
+
+	rename __search_default_next_thread_id() to
+	__search_default_next_id_in_thread().
+
+	__sort_yyyymm()::validate value is not null.
+
+2002/01/13, 01/12, ...
+
+   final clean up campaign in 2001
+   	クリーニングキャンペーン 2001 final はいまだに続いているぞ;-)
+
+   Mail::Message
+   FML::parse
+	rfc822_message_FUNCTION()
+
+	メッセージ全体( Mail::Message の chain 全体)に対する
+	メソッドには rfc822_message_ を頭につけるように名前をあわせる
+
+   File::SimpleLock
+   Mail::Delivery::Queue
+
+        use Fcntl qw(:DEFAULT :flock), remove LOCK_XX() definitions.
+
+2001/12/25
+
+   Mail::HTML::Lite
+	bug fix::_print_li_filename() check is too restricted
+
+2001/12/22,23,24,25
+
+   final clean up campaign in 2001
+   	クリーニングキャンペーン 2001 ファイナル:)
+	FNF-ify
+	コメントおよびドキュメントの更新
+	空白の削除 \s*$
+	使っていないので削除したモジュール
+		FML::Messages
+		FML::MIME
+		FML::Language::Japanese::Subject
+
+	FML::MIME は Mail::Message::Decode および
+	Mail::Message::Encode の2つにわかれたよ
+
+   renamed
+	FML::Checksum -> Mail::Message::Checksum
+
+2001/12/22
+
+   FML::Process::Kernel
+	remove FML::Messages
+
+   TinyScheduler
+	define get_mode() for symmetric definition.
+
+2001/12/18
+
+  記事の HTML 化を可能にする(デフォルトで ON)
+
+	use_html_archive = yes (デフォルト)
+
+	~fml/public_html/mlarchive/ML名/
+
+   FML::Process::Kernel
+	define $fml_owner_home_dir by process $uid
+
+   FML::Process::Distribute
+	htlmify article
+
+2001/12/16
+
+   FML::Messages
+   IO::Adapter::LDAP
+   Mail::Message::Date
+   Mail::Message::Language::Japanese::Subject
+	nuke "require Exporter, which is not needed
+
+   INSTALL.sh
+	warn you should update loader if needed
+
+   loader.in
+	use $fmlconfdir not $sysconfdir
+	use IO::File not FileHandle
+
+2001/12/11
+
+   FML::Command::Admin::newml
+	ensure installed file mode to be 0644
+
+   TinyScheduler
+	speculate $user by $$ unless defined $user
+
+   ./configure の拡張
+		メッセージをいろいろつけたす
+		--with-fml-group=$GROUP
+		--with-fmlconfdir=$prefix/etc/fml
+
+2001/12/09
+
+  インストーラのバグをとる
+	makefml の引数チェックのバグを修正
+	fml/etc/ 以下の構成を変更する
+	makefml newml は config.cf 生成時にML名の変更をする
+
+2001/12/08
+
+   TinyScheduler
+	more proper error messages
+
+   FML::Process::Configure
+	fix error handling, define finish() to avoid loading error
+
+   FML::Process::DocViewer
+	add path for perl executatbles e.g. ::usr::local::bin
+
+2001/11/27
+
+   FML::Log
+   Tie::JournaledDir
+	FML::Date -> Mail::Message::Date
+
+   Mail::Message::Date
+	remove MTI.. message
+
+   update comments
+	clean up
+	FNF-ify
+
+   Mail::ThreadTrack::Analyze
+	run prepare_history_info($msg) if $self->{ _is_rewrite_header }
+
+   configure
+	@sysconfdir@ -> @sysconfdir@/fml
+	modify message
+
+   FML::Process::Switch
+	modified not to use Standalone
+	loader has Standalone by itself now.
+
+   config.sh.in
+   etc/main.cf.in
+	@sysconfdir@ -> @sysconfdir@::fml
+
+   FML::Process::Switch
+   libexec/loader.in
+	modified not to use Standalone
+	loader has Standalone by itself now.
+
+2001/11/26
+
+   FML::Process::Kernel
+	bug fix missing mkdir() argument
+
+   FML::Process::Distribute
+   Mail::ThreadTrack
+   Mail::ThreadTrack::Analyze
+	toggle header rewriting (subject) to add thread id. off by default
+
+   config.cf
+	define $use_thread_subject_tag to toggle header rewrite
+
+2001/11/25
+
+   more tainted safe
+	(but needs more consideration, may be use of FML::Restriction class)
+	TinyScheduler
+	FML::Process::ConfViewer, FML::Process::Scheduler
+
+   FML::Filter::BodyCheck
+	validate get_first_plaintext_message() return value
+
+   libexec/loader.in
+	we should not use @INC derived from $0
+	reset PATH in the early stage
+
+   FML::Process::*
+	implement help() method
+	enable --help for all command line programs
+	verify_request() checks @ARGV and show help() if needed
+
+   FML::Process::Switch
+	enable distribute and command
+	check whether getopt() options are given or not.
+	enable --help for all command line programs
+	xxx.cgi SHOULD NOT ACCPET the same options as command line program xxx
+	does.
+
+   FML::Process::Kernel
+	trap --help in new() to show and exit asap
+
+   FML::Process::ConfViewer
+	fmlconf and makefml are separete now
+
+   FML::Process::CGI::Kernel
+	change defualt target to _top
+
+   FML::Process::CGI::Param
+   FML::Restriction
+	reconstructured safe parameter definitions
+
+2001/11/21
+
+   FML::Process::Switch
+	fmlsch -h to show help
+
+   FML::Process::Scheduler
+   TinyScheduler
+	clean up fmlsch
+	FNF-ify
+	handle options by getopt() in Process::Scheduler not TinySchedule
+	make "fmlsch help" work
+	fix entry duplication bug in parser
+	print_specific_month() can handle (month, year) pair
+	define set_mode()
+	use env var BROWSER ("w3m" by default)
+
+2001/11/20
+
+   File::Sequence
+	implement search_max_id() in hash key
+	more debug
+
+   Mail::ThreadTrack::DB
+	db_hash( $type ) to return hash reference for $type
+
+   Mail::ThreadTrack::HeaderRewrite
+	validate variables
+
+   FML::Process::ThreadTrack
+	update database for latest not-yet-analyzed articles.
+
+2001/11/19
+
+   Mail::ThreadTrack
+	implement set_fd(), get_fd()
+	implemente set_order()
+
+   FML::Process::ThreadTrack
+   Mail::ThreadTrack::Print
+	split functions for list and summary.
+	"list" shows thread summary but "summary" shows thread summary +
+	article summary.
+
+	enhance fmlthread to provide CUI, oh this is useful !
+
+   Mail::ThreadTrack::Print
+	enable --reverse for summary, list command
+	check reverse_order value ;-)
+
+   Mail::ThreadTrack::Print::Message
+	check value of header fields, which is undefined in some cases
+
+   Mail::ThreadTrack::Print::Text
+	implement show_articles_in_thread()
+
+   FML::CGI::ThreadTrack
+	summary listing on CGI is normal order by default
+
+2001/11/18
+
+   FML::Article
+	implement speculate_max_id()
+
+   FML::Process::ThreadTrack
+	change max_id speculation strategy:
+	1. check the max_id is given or not, use it if given
+	2. try max_id() of FML::Article;
+	3. speculate_max_id($spool_dir) in FML::Article
+
+   fml/etc/paths.cf
+	./configure が paths.cf を作る。
+
+2001/11/17
+
+   FML::Process::HTMLify
+   Mail::HTML::Lite
+	disable debug code, enable it when $ENV{debug} is defined
+
+   FML::CGI::Configure ThreadTrack.pm
+   FML::Process::Switch
+   Mail::ThreadTrack
+   Mail::ThreadTrack::Print::HTML
+	change default target to _top
+	use $msg_base_url to show link to article
+
+2001/11/16
+
+   Mail::ThreadTrack
+	new()::save $args as _saved_args in $self
+
+   Mail::ThreadTrack::DB
+	fix _status but in unpolite way. XXX fix it !
+
+2001/11/13
+
+   CGI 新スタイルへ変更他、
+
+	Problem 追跡システム、スケジューラ、makefml CGI 版 (プロトタイプ)
+	すべて動くようにした
+
+   FML::Process::CGI::Kernel
+	some cgi may need no ml_name
+
+   FML::Process::CGI::Param
+	fix address regexp, define $command, modify error return way
+
+   FML::Process::CGI::Kernel
+	move get_ml_list() to FML::Process::CGI::Kernel
+	from FML::CGI::ThreadTrack
+
+2001/11/12
+
+   use autoconf
+	いろいろ改造する。そういうわけで
+
+		# useradd fml
+		# ./configure; make install
+
+	というインストール方式になりました。
+
+   loader
+	loader generated from loader.in (autoconf)
+
+   Standalone
+	expand ${variable}
+
+   FML::CGI::ThreadTrack
+	fix typo, $myname resolved by $curproc->myname()
+
+   FML::Process::Switch
+	fix to introduce $config_dir (etc::fml) from main.cf
+	default_config -> default_config_cf
+
+   FML::CGI::ThreadTrack
+   FML::Process::CGI::Kernel Param.pm
+	move "function to get paramlist" to FML::Process::CGI::Param module
+	implement safe_pramlist\d+_\S+() via AUTOLOAD()
+
+2001/11/11
+
+   Mail::ThreadTrack::Print::Sort
+	change cost evaluation logic (numeric now)
+
+   Mail::ThreadTrack::Print
+   Mail::ThreadTrack::Print::HTML Message.pm
+	clean up summary() mode for both text and html modes.
+	print() method knows what should it do for text::html mode.
+
+   Mail::ThreadTrack::HeaderRewrite
+	defined $rh->{ _articles  }->{ $thread_id }
+
+   Mail::ThreadTrack::Print
+   Mail::ThreadTrack::Print::HTML Text.pm
+	dynamic binding accoding to mode::text or html
+
+   Mail::ThreadTrack
+	change article_summary_lines to 5 by default
+
+   FML::Process::CGI::Param
+	define article_id, method -> action
+
+   FML::Process::CGI::Kernel
+	header( -charset => $charset)
+
+   FML::CGI::ThreadTrack
+	modified to fit FML::Process::CGI structure.
+	enable 'close' operation
+	reset button
+
+   FML::Process::CGI::Kernel
+	workaround::header( -target  => "ResultsWindow" ) anyway
+
+   FML::Process::CGI::Param
+	allow action =~ ::^[-a-z_]+$::
+
+   FML::CGI::ThreadTrack
+   Mail::ThreadTrack
+   Mail::ThreadTrack::Print
+   Mail::ThreadTrack::Print::HTML
+	enable "show" and "change_status" to work
+
+   FML::CGI::ThreadTrack
+   FML::Process::{Distribute,Switch,ThreadTrack}
+   Mail::ThreadTrack
+   Mail::ThreadTrack::Print::HTML
+	ThreadTrack switches acconding to myname ($0).
+	threadview is view only and cannot change status.
+
+2001/11/10
+
+   loader
+   FML::Process::Switch
+	bug fix::format $reason
+
+   FML::Process::CGI::Kernel
+	remove makefml issue.
+	modify run() which now executes:
+		$curproc->html_start($args);
+		$curproc->run_cgi($args);
+		$curproc->html_end($args);
+
+2001/11/08
+
+   Mail::Message::Language::Japanese::Subject
+	nuke new(), not used
+
+   Mail::ThreadTrack
+	restructure hierarchy
+	clean up inheritence for further refactoring
+	modify method names
+	clean up
+	nuke some "*cost*" indicator codes
+	closed -> close for some cases
+
+   Mail::ThreadTrack::Analyze
+	avoid duplicated commit to articles DB { thread_id => [ id1 id2 ... ] }
+   Mail::ThreadTrack::Print::Message
+	ignore ^= line in message summary
+
+   Mail::Message::Date
+	validate $in $shift_m
+
+   Mail::ThreadTrack
+	list_up_thread_id()::remove db_*() operation
+
+   Mail::ThreadTrack::Analyze
+	speculate date from header's Date:
+
+   loader
+	least error infomation by default OR raw $@ if debug
+
+   FML::Process::Switch
+	least error infomation by default OR raw $@ if debug
+
+   Mail::ThreadTrack::Print
+	bug fix trap pattern of _valid_buf() and
+	_delete_subject_tag_like_string()
+
+   FML::Process::CGI
+	use FML::Process::CGI::{Kernel,Param}
+
+   FML::Command
+	defined() check for $command_args
+
+   FML::Process::Switch
+	modify error message
+
+2001/11/07
+
+   FML::Process::Switch ThreadTrack.pm
+   Mail::ThreadTrack
+   Mail::ThreadTrack::Print
+
+	enable fmlthread options:
+	--article_id_max=\d+  to override ::var::spool::ml::$ml::seq
+	--reverse             to reverse time order in showing "review"
+
+   Mail::ThreadTrack::DB
+
+	remove not used variables
+
+   FML::Process::Switch ThreadTrack.pm
+   Mail::ThreadTrack::Analyze
+
+	fmlthread -f filterlist ...
+
+   Mail::ThreadTrack::DB
+
+	show ... when processing
+
+   Mail::ThreadTrack::Print
+
+	check -f article_file
+
+   FML::Process::Utils
+
+	command_line_argv_find()
+
+   FML::Process::ThreadTrack
+
+	fmlthread review ML RANGE srcdir=::some::where
+	XXX srcdir=\S+ overwrites config->{ spool_dir } variable
+
+   Mail::ThreadTrack
+
+	define add_filter() method
+
+   FML::Process::Switch ThreadTrack.pm
+
+	we should use long line options since we support it :)
+	o define --spool_dir for fmlthread. for example:
+	% fmlthread db_clear fml-help
+	% fmlthread --spool_dir=::some::where -f ::tmp::filter db_rebuild fml-help
+	% fmlthread --spool_dir=::some::where review fml-help last:100
+
+
+
+2001/11/06
+
+   スレッド review と再生成をリモートでできるようにするとちょっと便利
+
+	fmlthread db_clear fml-help
+	fmlthread --spool_dir=/some/where -f /tmp/filter db_rebuild fml-help
+	fmlthread --spool_dir=/some/where review fml-help last:100
+
+2001/11/05
+
+   fmlthread review
+	review() mode to show summary for articles in each thread
+
+   FML::Process::Utils
+	implement command_line_options()
+
+   fmlhtmlify [-I dir] src_dir dst_dir
+		new utility for convenience
+	Affected Files:
+		INSTALL.sh
+		fml/bin/fmlhtmlify
+		FML::Process::Switch
+		FML::Process::HTMLify
+
+2001/11/04
+
+   プログラム全域で ticket -> thread
+
+   FML::Process::Switch
+	eval FML::Process::Flow::ProcessStart($obj, $args);
+	and trap error.
+	If error traped and $obj has help() method, run $obj->help().
+	also upcall the $@ by croak($@)
+
+   FML::Process::
+	save $args at $curproc->{ __parent_args }
+	$curproc provides convenient functions FML::Process::Utils has.
+	fml_version()
+	myname()
+	command_line_raw_argv()
+	command_line_argv()
+	article_id_max()
+
+	my $myname  = $curproc->myname();
+	my $argv    = $curproc->command_line_argv();
+
+   FML::Process::ThreadTrack
+	enable db_clear, db_mkdb, summary, help
+
+   Mail::ThreadTrack
+	implement exist() and close()
+	implemente db_clear(), db_mkdb()
+
+2001/11/03
+
+   remove fmlticket, create fmlthread
+
+   FML::Process:: を Mail::ThreadTrack ベースに切替える
+	FML::Process::TicketSystem は削除し、
+	FML::Process::ThreadTrack が作られた。
+
+   Mail::ThreadTrack を CVS へ入れる。
+	これはスレッドを追跡するためのツールであり、
+	call tracking system の概念のごく一部をなしているといってよい
+
+   Mail::ThreadTrack
+	change new() parameters
+	nuke pcb
+	$config->{ db_type } = 'AnyDBM_File'; by default
+	$self->{ _index_db } = $db_base_dir::"index"
+	moved set_status() into this module
+
+   Mail::ThreadTrack::Analyze
+	nuke pcb
+	bug fix $article_id handling
+	Log() to $self->log()
+	assign()::clean up function names and arguments
+	define {get,set}_thread_id() and modified to use them
+	add commentes for FNF style
+	clarify assign() and rewrite_header() roles
+	define {set,get}_thread_status() and modified to use them
+	message-id is  (RFC822), we use this format also in DB.
+	correct handling of $config->{ thread_subject_tag_location }
+	remove _address_clean_up(), which is not used now.
+	remove set_status()
+
+   Mail::ThreadTrack::HeaderRewrite
+	prepare_history_info()
+
+   Mail::ThreadTrack::DB
+	make index database in db_base_dir not db_dir
+
+   Mail::ThreadTrack::Print
+	build-in decode_mime_string()
+	tune up alignment in printing
+	EUC-ify output
+	define STR2EUC() for convenience
+
+2001/10/29
+
+   Mail::Message
+	_get_mime_header() checks offset boundary
+	return default pair if overrun.
+
+   Mail::HTML::Lite
+	nuke $ENV{DEBUG}, check input data more
+
+	rename key:
+	prev_thread -> prev_thread_id
+	next_thread -> next_thread_id
+
+	count up $self->{ _num_attachment } for child process
+	attachment file name $id.$count.html
+	parent passes the id to child (processing attachment)
+
+	ignore type if type is ::^multipart::
+
+	check $idp pattern
+
+2001/10/28
+
+   Mail::HTML::Lite
+	change method to speculate thread link
+
+	rename functions
+	implement _create_temporary_filename()
+	reorder $type check
+
+	consider case of text::* with encoded content
+	save content to file once and rewrite it by _rewrite_html_file()
+
+	consider encoding style of quoted-printable, 7bit also
+
+	_format_safe_header() and print it in raw mode to enable
+	 tag use.
+
+	define _sprintf_safe_str() and  __sprintf_safe_str() for convenience
+
+	define _separete_url() to help incomplete regexp of
+	HTML::FromText::text2html()
+
+2001/10/27
+
+   Mail::HTML::Lite
+	use _PRINT_DEBUG(), define _print_safe_{str,buf}() to be easy for eyes
+	_print() -> _print_raw_str()
+
+   Mail::Message
+	oops, should be s::::::mi to trap encodinge
+
+   FML::Filter::BodyCheck
+   Mail::Message
+   Mail::Bounce::DSN
+   Mail::HTML::Lite
+	change method: data() -> data_in_body_part()
+
+2001/10/22
+
+   FML::Ticket::System (clean up campaign)
+	remove obsolete functions:_quote_space(), _dequote_space(), AUTOLOAD()
+	remove not used _pcb_[sg]et_id()
+	$self->_pcb_set_id($curproc, $id) -> $pcb->set('article', 'id', $id)
+
+   Mail::HTML::Lite
+	add (X-ML-Name X-Mail-Count X-Sequence) into @header_field (default
+	header to show)
+
+	defined() check before calling Jcode::XXX()
+
+   FML::Command::Admin::htmlify
+	accept command line option::srcdir=$srcdir
+
+2001/10/21
+
+   makefml htmlify $ml_name outdir=$out_dir
+
+	スプールを HTML 化するコマンド
+	もちろん Mail::HTML::Lite を利用する。
+	# fml 4 の spool2html に対応するものといえよう
+
+   Mail::HTML::Lite
+	月ごとの ID インデックスも作る (TABLE)。
+	make monthly index always
+		monthly_index.html
+		month.YYYYMM.html
+
+	prepare top level entrance functions:
+		htmlify_file() for file
+		htmlify_dir()  for directory
+
+	clean up codes, documents
+
+	implement _print_index_{begin,end}() and modified to use them
+
+	sort location of function definition
+	rename functin name:
+	_print_attachment -> _print_inline_object
+	_raw_text_print   -> _text_print_by_raw_mode
+
+	oops, fix untie() operation to be ensured
+
+	check target html is already processed or not
+
+	bug fix _address_clean_up() syntax check
+
+	check already processed or not
+	you can know it by $self->is_ignore($id) method.
+
+	move a lot of debug code to "if $debug > 3" in cache_message_info()
+
+2001/10/20
+
+   Mail::HTML::Lite
+	メールを HTML 化するモジュール
+	mhonarc のように凝ってはいないが必要十分な最低限の機能は持つ
+	(だから Lite なんだよん)
+
+	cache information in .ht_hml_* in html article directory
+	rewrite links using these data among articles needed to rewrite.
+	links contains prev::next by ID (article ID) and prev::next by Thread.
+
+	bug fix target lists to update, modified to use the result by
+	evaluation_relation()
+
+	clean up debug code
+	more debug information
+
+	show  and  information in  if could
+	new() takes charset as argument
+	change _decode_mime_string() to method
+	modify ifdef in_chaset_to_code() to be more suitable
+
+	we can make index.html and thread.html
+
+	Mail::HTML::Lite::new() accepts
+		{ db_type => "DB_TYPE", attachment => 0::1 }
+
+	change html_begin argument::($wh, { message => $msg });
+	we can specify title in 
+	several minior changes
+
+	bug fix::_address_clean_up() should check return value, which is
+	address or not more rigolously.
+
+	bug fix::check parent::child (attachment) process or not
+
+	more and more debug info
+
+   Mail::Message
+
+	bug fix::$InComingMessage should not local scope. modify it to
+	SCALAR REF
+
+	bug fix::data_in_body_part() returns whole data not the first
+	512 bytes. if $size is specified as argument, return the first
+	$size bytes.
+
+	feature::get_data_type_list() returns ARRAY of xxx::yyy by
+	default for other method use. If under $debug mdoe, it shows
+	verbose output.
+
+2001/10/19
+
+   import HTML::FromText 1.005
+
+   Mail::Bounce
+	Mail::Message::get_data_type_list() is changed. To sync with it,
+	use $msg->get_data_type_list( { debug => 1 } ) for debug.
+
+2001/10/18
+
+   Tie::JournaledDir
+	change default unit to "day" not number (unix time).
+
+2001/10/17
+
+   variables
+	add $confirm_keyword to $available_commands_for_stranger
+	add $available_commands_for_stranger to $available_commands
+
+   FML::Command
+	modified FML::Command uses get_attribute() in FML::Command::Attribute
+
+   FML::Command::Attribute
+	renamed FML::Command::ACL -> FML::Command::Attribute.pm
+
+   FML::Command::SendFile
+	support MH style arg::first, last, cur, first:\d+ and last:\d+
+
+   FML::Command::User::bye
+	fix typo
+
+   File::Sequence
+	implemente get_id() method to return the latest article id
+	update document
+
+2001/10/15
+
+   フィルタリングを有効にする
+
+     FML::Filter::BodyCheck
+     FML::Filter::HeaderCheck.pm
+	define @default_rules and use it if rules not specified
+	rules() method to overwrite filtering rules
+
+     variables
+	define the following variables for filtering (FML::Filter)
+		body_cksum_cache_dir
+		body_filter_rules
+		body_loop_check_rules
+		header_filter_rules
+		use_body_filter
+		use_body_loop_check
+		use_header_filter
+
+2001/10/14
+
+   FML::Process::Kernel
+	bug fix::we should pay attention to implisit $_ use
+
+   FML::Process::Configure
+	sync style w:::Process::Command
+
+   FML::Process::Command
+	make argument vector from $command
+	relocate _parse_command_options()
+	implemt _get_command_name()
+	clean up
+	fix typo
+
+   FML::Command::Admin::get
+	prototype to use FML::Command::SendFile
+
+   FML::Command
+   FML::Command::*
+   FML::Process::Configure
+   FML::Process::Command
+	$optargs -> $command_args
+
+2001/10/13
+
+   FML::Process::Command
+	pass $comname in $optargs
+
+   FML::Command::SendFile
+	fix duplicatoin for $charset
+
+   FML::Config
+	avoid infinite loop
+
+   FML::Command::SendFile is added
+	This module provides basic file sending functions
+
+   implement command: get help summary guide
+	FML::Command::SendFile based command
+
+2001/10/12
+
+   FML::Command
+	remove error_nl()
+
+   FML::Command::Admin::resign
+	->SUPER::process()
+
+   FML::Command::Admin::subscribe
+	clean up log message, LogError() -> croak()
+
+   FML::Command::User::subscribe
+	use reply_message_nl()
+
+   FML::Command::User::unsubscribe
+	confirm version
+
+   FML::Config
+	expand_variable_in_buffer can take optional $args
+
+   FML::Credential
+	bug fix variable name
+
+   FML::Process::Kernel
+	implement search template mechanism in reply_message_nl()
+	$config->expand_variable_in_buffer() takes optional $args
+
+   FML::Process::Command
+	use reply_message_nl()
+	remove exception mechanism by $obj->error_nl();
+
+   etc/
+	define $message_message_dir
+	add chaddr to $available_commands
+
+   メッセージ
+	テンプレートは euc-jp を使う
+
+   FML::Config
+	expand_variable_in_buffer()
+	expand $varname to $config->{ varname }
+
+   FML::Process::Command
+
+	add _pre_scan()
+	even not member need to use $confirm_keyword.
+	for example, 'guide', 'subscribe', 'confirm'
+
+	add _can_accpet_command()
+	1. simple command syntax check
+	2. use of this command is allowed in FML::Config or not ?
+	3. Even new comer need to use commands [ guide, subscirbe, confirm ].
+
+   enable confirmation
+	FML::Confirm module を利用します
+	変数 $available_commands_for_stranger を定義する。
+	FML::Confirm provides basic functions needed for confirmation
+	+ FML::Command::User::subscribe
+	+ FML::Command::User::confirm
+	+ FML::Confirm
+
+   FML::Command::Admin::subscribe
+	check address is specified or not
+
+   FML::Command::User::help
+	clean up
+	expand_variables_in_file() -> prepare_file_to_return()
+
+   FML::Process::Kernel
+	define prepare_file_to_return():
+	expand $xxx variables in template (e.g. $help_file).
+	1. in Japanese case, convert kanji code::iso-2022-jp -> euc
+	2. expand variables::$ml_name -> elena
+	3. back kanji code::euc -> iso-2022-jp
+	4. return the new created template
+
+2001/10/11
+
+   FML::Filter::Utils
+	it provides utility functions
+		is_secure_command_string()
+		is_valid_mail_address()
+
+   FML::Process::Command
+	it checks input by FML::Filter::Utils::is_secure_command_string()
+
+2001/10/10
+
+   コマンド
+	get mget help などが動くようになった。
+
+   FML::Config
+	check defined() more
+
+   FML::Credential
+	implement is_same_address() completely.
+	is_member() accpepts $args->{ address }
+	define set_compare_level(), get_compare_level()
+
+   add variables
+	command_prompot	= >>>
+	help_file = $message_template_dir/help
+	message_template_dir = $fml_share_dir/template/$template_file_charset
+	template_file_charset = $default_charset
+
+   Mail::Delivery::SMTP
+	old IO::Socket has no connected() method. modified to use our
+	own socket_is_connected() method or remove connected() check.
+
+	Mail::Delivery::SMTP
+	+ bug fix: ensure we handle IPv6 case more restrictly
+
+	Mail::Delivery::Net::INET6
+	+ bug fix: clear error counter
+	+ check more defined($socket) or not, socket is connected
+	+ more debug log
+
+   FML::Process::Kernel
+	define prototype for reply_message_nl() for natural language
+	check more defined() or not
+	more debug info
+	define expand_variables_in_file()
+	+ expand $xxx variables in template (e.g. $help_file).
+
+   FML::Process::Command
+	bug fix: $obj->$command where $command is a command name not line.
+	modified to use reply_meessage_nl()
+
+   FML::Command
+	define error_nl(), but a dummy yet now
+	+ get natural language information
+
+2001/10/09
+
+   libexec/Standalone.pm
+	check $config->{ $x } is defined() or not
+
+   Ticket System
+	consider $ticket_subject_tag_location in regexp
+	change ticket_id_syntax to "$ml_name/%d" by default
+	define ticket_subject_tag_location as "appended"
+	change default ticket syntax
+		etc/default_config.cf.ja
+		etc/defaults/tickets.cf.ja
+
+	FML::Header::Subject
+		change regexp_compile().
+		quotemeta() firstly, and hack a few
+
+   FML::Process::Command
+	catch up the modification in FML::Process::Distribute.
+	make command function work with replying request mail.
+	disable lock()/unlock() since each command module lock/unlock
+	by itself.
+
+   FML::Process::Distribute
+	modified finish() to use queue_flush()
+
+
+2001/10/08
+
+   メールでのコマンドの応答を可能にした(プロトタイプ)
+	add a lot of debug messages
+
+	* Affcted modules:
+		FML::Command
+		FML::Process::Command
+		FML::Process::Distribute
+		FML::Process::Kernel
+		FML::Process::Switch
+
+	* newly added:
+		FML::Command::User::help
+
+	* test tools:
+		regress/simulation/test-ctl.sh
+		regress/testmails/text=plain.command
+
+   FML::Command
+   FML::Process::Kernel
+	more debug info
+
+   FML::Process::Distribute
+	log ACL error
+
+   FML::Process::Switch
+	enable "loader --ctladdr" behaves as libexec/command
+	more debug messages
+	modify style e.g. eval q## -> eval q{} et. al.
+
+   regress/simulation/test-ctl.sh
+	added simple command mode emulator
+
+   regress/simulation/perlcheck
+	add -I ../../fml/libexec
+
+   libexec/loader
+	die() -> croak()
+	define missing default value in initialization
+	remove obsolete variable: $libexec_dir
+	eval()-fiy more
+	fix error message
+	show $@ in error
+	fix typo
+
+   fix: more severe initialization check
+	FML::Credential
+
+
+2001/09/23
+
+   Mail::Message
+	implement get_encoding_mechanism() in Mail::Message.
+
+	implement get_offset(): return offset information in the data.
+	return value is	ARRAY.
+
+	return encoding type for specified Mail::Message not whole mail.
+	The return value is one of base64, quoted-printable or undef.
+
+	Modified Files:
+		fml/lib/Mail/Message.pm
+		fml/doc/ja/tutorial/module/Mail::Message.sgml
+		regress/message/dump.pl
+
+   チュートリアル
+	module  に関する新パートの創設
+	module/ ディレクトリを創設
+		Mail::Message
+		IO::Adapter
+	のプロトタイプを用意する。
+	このディレクトリでは各モジュールの詳細な使い方について
+	記述するもの。
+
+   FML::Filter
+	fml 4.0.x 相当の機能をきちんと実装する。
+	# ただし、ウィルスチェックは除く
+	XXX これで、おおむね、いつでも入れ換え可能か?
+
+	Utils を削除し、関数は適当なモジュールへ移動
+	move clean_up_buffer() and compare_euc_string() to
+	FML::Filter::BodyCheck and FML::Language::Japanese::Utils
+	respectively to remove FML::Filter::Utils.
+
+	MS GUID を判別するルーチンも実装した
+
+2001/09/22
+
+   FML/Config.pm
+	if ($ENV{'debug'}) { ... debug ...;}
+
+   TinyScheduler.pm
+   FML/Command/Admin/edit.pm
+	modified to use File::Spec
+
+2001/09/18
+
+   errormail collection
+	add netscape messaging server 3.54 sample
+	thanks PR for Toshimi Aoki 
+
+2001/09/17
+
+   IO::Adapter
+
+     * IO::Adapter::{DBI,MySQL,RDBMS}.pm
+	rename: $self->{ _driver } -> $self->{ _model_specific_driver }
+	dynamically load DBD:mysql
+
+	move replace(), getline() and get_nextvalue() to DBI.pm
+	since these functions are MI (Map Independent).
+
+	implement setpos(), getpos() and eof() in MySQL.pm
+	since these functions is dependent on map type (MD).
+
+	RDBMS.pm is not used now, so removed.
+
+     * IO/Adapter.pm
+	change replace()
+	o fix typo: s/regexp/replace/
+	o fix case insensitive search when $show_all is on
+	o call md_find (md == map dependent, function) if defined
+	o enabled to call md_XXX()
+		define AUTOLOAD() to hook up md_XXX() functions
+		XXX For example, md_XXX() should be implemented at
+		XXX IO::Adapter::SQL::toymodel.pm
+
+     * IO/Adapter/SQL/toymodel.pm
+	rename: fetch_and_cache_address_list -> fetch_all
+	implement md_find()
+
+
+2001/09/13
+
+   FML::Process::QueueManager
+	send() can take queue id as the argument
+
+   FML::Process::Kernel
+	more friendly error message
+
+	implement queue_flush($queue): This flush C<$queue>, that is,
+	send mail specified by C<$queue>.  It uses
+	FML::Process::QueueManager module.
+
+   FML::Config.pm
+	define FIRSTKEY and NEXTKEY for complete hash emulation
+
+   FML::Command::Admin	ユーザ用コマンド群
+		commit prototype
+		makefml uses this class
+
+2001/08/26
+
+   FML::Credential
+	implement has_address_in_map() method and is_member() uses this.
+	has_address_in_map() searches the address in the specified map.
+
+   IO::Adapter クラス
+	touch() メソッドを追加
+	XXX file タイプ以外では無意味。ダミー
+
+   FML::Command:: クラスの再構成
+
+	FML::Command.pm		FML::Command クラス以下への入口
+	FML::Command::ACL	ACL
+	FML::Command::Utils	よもやまの定義
+	FML::Command::User	ユーザ用コマンド群
+	FML::Command::Admin	ユーザ用コマンド群
+
+		newml edit などは Admin のみ
+
+2001/08/24
+
+  regress/
+	add&enable FML::Config {+,-}= overload test tools
+
+2001/08/23
+
+   FML::Config の拡張
+	postfix style のさらなる拡張
+
+	変数名 += 値
+	変数名 -= 値
+	で、特定の値の足し引きができます。
+
+	例:
+		x  = a b c d
+		x -= b
+		は
+		x = a c d
+
+		x  = a b c d
+		x += e
+		は
+		x = a b c d e
+		などとなる。
+
+2001/08/22
+
+   clean up
+	File::Spec を使うように変更
+
+
+2001/08/21
+
+   Tie::JournaledDir クラスの創設
+   Tie::JournaledFile の clean up
+
+	Tie::JournaledDir クラスはキャッシュとしてあるディレクトリを使い、
+	その中の複数個のファイルを順番に使います。
+	それぞれのファイルは Tie::JournaledFile を使ってアクセスします。
+
+	これにより auto expiration をする Journaled 型キャッシュを実現
+	します。
+
+	add Tie::JournaledDir which wraps Tie::JournaledFile and uses some
+	directory as cache area.
+
+	add/update test tools for Tie::Journaled{File,Dir} modules.
+
+	clean up Tie::JournaledFile
+	o remove header in the cache file
+	o $self->{ 'key' }
+	o $debug is on if $ENV{'debug'} is defined.
+	o more carefull check of whether the value is defined or not.
+	o quotemeta() for pre search key in find()
+	o rename grep() to find()
+
+2001/08/19
+
+  フィルタコードの改良
+	一行メールか否か?の判定コードをきれいにする
+
+		そのために signature や引用か?を判定するコード他を書く
+		Utils.pm もきれいにし、いらないコードを消した。
+
+
+2001/08/06
+
+  フィルタ
+	clean up
+
+  fml/lib/
+  fml/etc/
+	変数名の変更をする。s/header_check/header_loop_check/
+	ループチェックの設定であることを変数名自体ではっきりさせる
+
+  IO::Adapter
+
+	IO::Adapter
+		set @ISA = qw(IO::Adapter::ErrorStatus) to call error_set()
+		check $@ before call configure()
+		add more debug codes
+
+	IO::Adapter::MySQL
+		メインの部分を 	IO::Adapter::SQL:: 以下へ移す
+		IO::Adapter::MySQL は単なるフロントエンドにする
+
+2001/08/02
+
+   Mail::Message
+	bug fix wrong handling of "\n" at the last of part
+
+2001/07/31
+
+   rename FML::NL to FML::Language
+
+   Mail::Bounce class
+
+	以下のパターンを解析できるようになったはずです。
+		Lotus Notes
+		pakeo.ne.jp
+		jp-r.ne.jp (ほんとか?)
+
+	Mail::Bounce::Language::Japanese
+		日本語依存パーサを作成する
+
+   Mail::Bounce::DSN
+
+	call again $self->address_clean_up($addr, $addr)
+	gives $addr itself as a hint of fixing broken address
+	domain part of $addr may match someting e.g. nifty.ne.jp, webtv.ne.jp.
+
+   Mail::Bounce.pm
+   Mail::Bounce::FixBrokenAddress.pm
+
+	use Mail::Bounce::FixBrokenAddress to clean up address
+
+	Mail::Bounce::FixBrokenAddress class provides irrgular
+	address handlings, so handles domain/MTA specific addresses.
+	For example, nifty.ne.jp, webtv.ne.jp, ...
+
+2001/07/30
+
+   Mail::Bounce class
+
+        pick up Reporting-MTA and Received-From-MTA in DSN
+
+	clean up documentation
+	add error examples
+
+	modify Mail::Bounce::$module return "hints" to caller
+	(Mail::Bounce class).
+
+2001/07/19
+
+   add errormail samples
+
+	freeserve.ne.jp
+	webtv.ne.jp
+
+2001/07/15
+
+   設定変数
+
+	pid を _pid へ変更
+
+   FML::Config
+
+	enable read and write configuration file
+
+	コメントを保存しつつ postfix スタイルの設定ファイルの
+	読み書きを可能にするように
+
+2001/07/15
+
+   このファイルを創設する:)
+
-- 
cgit v1.2.1