CHANGES Last Modified: $Date: 2008/09/28 11:16:39 $ [最近のまとめ] FML_CURRENT_VERSION=7.98.14 8.0 PRE_ALPHA 7.98.14 www interface for anonymous users. Anyone can submit a subscribe/unsubscribe request via www interface. 7.98.13 "isolate" instead of "reject" spam or unknown messages by default. 7.98.12 delivery system error handling fixed. 7.98.11 ignore in restrictions supported. 7.98.10 delivery system overhaul sequal. 7.98.9 delivery system overhaul 7.98.8 correct context switch. address validation in smtp transaction. 7.98.7 confirmation + manual subscribe/chaddr/unsubscribe manual subscribe/chaddr/unsubscribe 7.98.6 fundamentals of moderator mode implemented. 7.98.5 add reviveml command (to revive a removed ML). add PostgreSQL support. add LDAP support. 7.98.4 minor fixes. clean up. clean up method naming convension. 7.98.3 Japanese/English document overhaul/revised. 7.98.2 queuing system revised. fetchfml added. PGP/GPG authentication. bug fix method naming convension (FNF). MIME-Base64 removed from cvs tree. 7.98.1 overhaul. [注意] コマンドメールのコードを全面的に書き直しました。 fml-devel-20040303 が、このコマンドメールの変更が"入っていない" 最後のスナップショットです。 fml-devel-20040313 では、変数命名のルールが大きく変わりました。 気をつけてください。 2004/09 以降の fml8 は疑似 MTA 的な動作をしていて、自分のメー ルキューイングシステムを使ってエラー処理や再送処理を行ないます。 2008/09/28 documentation usage of anonymous cgi. 2008/09/15 FML::ML::Control delete scripts in the reverse order of creation. define {get,set}_force_mode(). FML::Command::Admin::{newcgi,rmcgi} install/deinstall all CGI scripts for the specified domain. 2008/09/14 FML::Process::Utils define ml_name_list(), which returns the list of valid ml in the specified domain. fix documents and todo. FML::ML::Control fix admin.cgi removing operation bug. count up the number of valid ml, remove admin.cgi only if ensured that no more valid ml exists. 2008/09/13 variables define $listinfo_template_base_dir template files share/listinfo/euc-jp/index.html.ja change default url for submission of subscribe/unsubscribe request. mailto:... -> ::...::submit.cgi share/listinfo/euc-jp/index.html.en aded. FML::ML::Control listinfo operations fixed::install and deinstall index.html.{ja,en}. 2008/09/12 variables define $ml_anonymous_cgi_base_url FML::Command::Admin::{newml,rmml} clean up. warn() -> ui_message() + logwarn(). change variable names to be more proper. fix comments. FML::Command::Admin::rmml FML::ML::Control delete cgi scripts and listinfo in runnign rmml. 2008/09/11 FML::Error::Cache document: fix typo 2008/09/10 FML::CGI::Skin::Anonymous (1) check if the banner image format generator works or not (2) if not, use ascii generator. FML::String::Banner new() needs $curproc as the argument. as_png() checks if GD perl module is available. if not, return undef. FML::ML::Control clean up setup_cgi_interface() to be more modular. 2008/09/09 WWW interface for anonymous users is added. Anyone can request subscribe/unsubscribe via WWW interface. After the request processed, the command flow is same as usual command mails ( confirmation is sent back, ...). 一般ユーザが WWW インターフェイスでMLへの「入会」「退会」 のリクエストを出すことが出来るようにしました。 ・ subscribe と unsubscribe しか出来ません。 ・ リクエストを出すと confirmation のフェイズに入ります。 その後は、いつのもコマンドメールと同じ処理になるだけです。 本当に入口だけ。2つの違う通信路を使うことに意味があります。 ・ パスワード登録とかはしません。どうせ次に使う時には忘れてる。 無駄にML側へ情報が集まってしまうと逆に危ないだけ。 ・ ゆがんだ画像を読みといてもらって「魔法の文字列」を入れさせます。 SPAM よけの軽いおまじないです。 気合いの入った OCR 野郎とかいたら無駄でしょうが、そこまでして 突破したいような価値ある WWW じゃないし(confirmation かえる だけなんだし)。 ・ もっといけてる画像の作り方のアイデア(というかコード)募集中。 variables define variables for anonymous cgi::$use_anonymous_cgi_function, $anonymous_cgi_expire_limit, $anonymous_cgi_base_dir, $ml_anonymous_cgi_base_dir, $html_tmp_dir, and $html_tmp_base_url. define $ml_anonymous_cgi_allowed_commands definition changed::$cgi_base_dir, $admin_cgi_base_dir and $ml_admin_cgi_base_dir. renamed::$commands_for_ml_admin_cgi -> $ml_admin_cgi_allowed_commands etc/modules add definition "anonymous::*::*::submit.cgi". while space cosmetics. share/messages add message templates for anonymous CGI. FML::Char::Ascii::Data ascii presentation of letters. FML::String::Banner FML::String::Banner::{Ascii,Image} banner string generator FML::String::Random generates a magic string and the identifier used for the session ID. FML::Restriction::Base define $alnum_regexp class. define 'session_id' and 'magic_string' regexp. FML::CGI::User define anonymous_cgi_menu(). fix and update documents. FML::CGI::Anonymous::{DB.pm,Submit} FML::CGI::Skin::Anonymous anonymous cgi initial version FML::Command::User::{chaddr,subscribe,unsubscribe} show menu for an anonymous user by calling FML::CGI::User->anonymous_cgi_menu(); FML::ML::Control in setting up cgi, install cgi script(s) for anonymous users, too. FML::Process::Kernel import $fml_owner and $fml_group into $config name space from main.cf. FML::Process::Utils fix how to search main_cf information. define set_allow_reply_message() and get_allow_reply_message(). We can enable or disable reply_message*() functions dynamically. FML::Process::CGI::Kernel generate anonymous session ID always (anyway). finish() calls message flush sub-system. cgi_execute_command() is enhanced to handle both *admin.cgi and anonymous cgi case. some error messages are natural-languaged. use cgi_var_*() and specify -target if could. FML::Process::CGI::Utils $commands_for_ml_admin_cgi -> $ml_admin_cgi_allowed_commands ensure the return value for CGI action to be not "undef". menu is enhanced to handle both *admin.cgi and anonymous cgi case. 2008/08/31 WWW インターフェイスからの subscribe / unsubscribe 他のための準備... 隔離メールの「TODO: ワンタイムパスワードつき URL の生成。」 も同じフレームワーク上にある(はず)。 2008/08/24 隔離されたメール(SPAM)を日付名ディレクトリへ奇麗に並べ替える。 TODO: レポートメールの生成と送信。 TODO: ワンタイムパスワードつき URL の生成。 この URL はレポートメールに含まれるようにする。 FML::Process::{Flow,Kernel} FML::Isolate rearrange isolated mails to under $isolated_queue_dir/YYYY/MM/DD dir. FML::Command::Admin::thread allow sub-command "outline" load. FML::Article::Outline fixed::typo: add_outline_to_header_field -> add_outline_to_header variables add new entry on "isolatation" related variables. define $isolated_queue_dir and $isolated_queue_expire_limit. 2008/08/23 clean up documents (continued) remove recipes and faq, tech category. merge recipes to tutorial. 2008/08/21 clean up cpan/ IO::Stringy removed since it is not used. 2008/08/20 tutorial(jp) overhaul-ed. 2008/08/17 FML::Process::Command [bug fix] check isolated or ignored precisely and determine the final action. 2008/08/15 documents being updated. 2008/08/14 variables bug fix create-on-post default configuration. update and complete descriptions. sort definitions. remove "permit_createonpost_maintainer_maps", which is not defined. remove duplication in descriptions. 2008/08/13 FML::Process::CreateOnPost bug fix::fix internal arguments passing bug to handle sender information correctly. save sender candidates in PCB. 2008/08/07 anoncvs.fml.org changed to support anonymous cvs over ssh. fml/bin/anoncvs changed. documents updated. 2008/08/03 bump up version to 7.98.13 isolation or quarantine mode implemented and enabled by default. "isolate" instead of "reject" spam or unknown messages by default. 変なメール(まぁはっきり言えば、ほぼ全部 SPAM)は、今まで *_restrictions のルールの最後が reject のため、敵に返事を 送ろうとしてしまっていたが、デフォルトを isolate に変更。 とりあえず受けとり、隔離キューに入れる動作にした。 隔離キューのレポートなどは、まだ未実装。 variables support directives (isolate_system_special_accounts isolate_spammer_maps isolate) for $article_post_restrictions and $command_mail_restrictions. Mail::Delivery::Queue create isolated queue, too. FML::Process::Command fixed that isolate operation works. 2008/07/20 FML::Process::Utils define incoming_message_dup_content() and incoming_message_isolate_content(). FML::Process::{Command,Distribute} isolate the current incoming message if matched FML::Restriction::Post define isolate_system_special_accounts() and isolate_system_accounts(). 2008/07/16 [isolate_XXX 命令シリーズ創設案] 2008/07/06 の各 restrictions (例: 投稿、コマンドメール)で reject のかわりに isolate と ignore を使えるようにし ... は、いいのですが、reject_system_special_accounts 命令は どうすればよいのでしょう? isolate_system_special_accounts ってのを創設すれば良いですね? ほえ_restrictions にある reject なんとか命令をすべて isolate へ 書き換えてしまえば、一番素直な拡張だと思える。 $*_restrictions =~ s/reject/isolate/g; 2008/07/06 各 restrictions (例: 投稿、コマンドメール)で reject のかわりに isolate と ignore を使えるようにし、デフォルトを reject から isolate へ変更します。 isolate 命令は ignore + 一定期間保存(隔離)相当の機能です。 拒否の返事をせずに、メールを保存し、一定期間後に削除します。 補足: 最初 hold 命令を、この意味で使おうとしましたが、それだと Postfix の hold と意味が違ってしまうので、それは廃止。hold は 予約語として、そのまま(実態がない命令なので書いても何も起こら ないので注意)。 FML::Process::{Distribute,State} FML::Restriction::Post define "isolate" operation template. "isolate" differs "hold". "isolate" sets apart spam candidates from normal incoming messages, whereas "hold" moves the incoming message to "hold" queue, which does not move until someone changes the state. 2008/07/05 FML::Restriction::CreateOnPost fixed: add missing use FML::Restriction::Post 2008/07/04 FML::Process::State define restriction_state_{set,get}_hold_reason() FML::Restriction::Post define hold() and discard() 2008/06/29 CREATE-ON-POST 機能では、動的にMLの作成、メンバーの追加が 出来るわけですが、MLの作成が可能なユーザの制限を可能としました。 FML::Credential implement is_ml_domain() method. fix debug and pod descriptions. FML::Restriction::Post implement permit_ml_domain() FML::Restriction::CreateOnPost define permit_createonpost_newml_maps FML::Process::CreateOnPost "who can do newml operations" code is rewritten to use of createonpost_newml_restrictions. variables define $createonpost_newml_restrictions. define $createonpost_newml_maps. remove $createonpost_maintainer_maps. 2008/06/08 create-on-post enhanced. define $createonpost_maintainer_maps FML::Process::CreateOnPost clean up. fix comments. restrict who can create a new ML. FML::Credential define is_valid_map() method configurations define $createonpost_maintainer_maps 2008/05/25 switched to configure 2.62 based configure.in configure show datarootdir fmlsrc/config.sh.in fmlsrc/fml/etc/{install.cf.in, main.cf.in} datadir -> datarootdir 2008/05/11 project restarts (crash and fsck;) ends, orz). TEST: switched to a new source changes system. 2006/12/03 overhaul continues ... (slowly ;_;) ... ちょっとずつオーバホール継続中 FML::Command::Admin::reviveml fix comments. ensure initial value. add assert. show more error messages. FML::Command::Admin::mergeml newcopml newdomain rmcopml rmdomain fix comments. ensure initial value. 2006/11/26 FML::Sys::Alias fix comments. remove a unused local variable. set the upper limit of recursive call _expand(). FML::Sys::User fix comments. add the label to a loop. define debug code by myself. FML::Process::Fake fix comments. fix help message. change a local variable name to more proper one. FML::Credential fix comments (FNF). ensure initial value. use more proper local variables. FML::Mailer fix comments. fix error logic. FML::Moderate fix comments. correct argument definitions. 2006/11/19 FML::Error::{Analyze,Cache} FML::Error::Analyze::{histgram,simple_count } fix comments. use more proper variable names. FML::Header::MessageID fix comments. ensure initial value. 2006/11/13 FML::Error fix comments ensure variable initialization. define $mname and use it in log messages. FML::Envelope fix comments use FML::Credential->is_same_assress() to compare addresses. move variable definitions to the block using it more nearly. 2006/11/12 FML::IPC::Queue more debug messages. enhance debug patterns. 2006/10/22 FML::Body more error logs. move $curproc definition to near message logging. FML::PCB use gloval_ prefix for package gloval variable: current_context -> global_current_context FML::Command::{Auth,DataCheck,Filter,Syntax} clean up. fix comments. FML::Command::DirUtils fix comments. move definitions to near the codes. use more proper variable names. FML::Command::FileUtils fix comments. move definitions to near the codes. use more proper variable names. FML::Command::HTMLify fix comments. use more proper variable names. FML::Command::Message fix comments. define the default message. FML::Command::QmailExt fix comments. permit case insensitive commands. more error messages. validate temorary message file more. 2006/10/14 etc/command_line_options FML::Demo::{Chart,Project} FML::Process::Project fmlproj::GanttProject XML format extension. --xml options dump GanttProject XML format by default. FML::Article::Summary fix importation 2006/10/10 FML::Confirm fix comments. rename private variables to more proper ones. remove not used private variables. 2006/10/08 ちょっと体調がよくなってきたので、 レビュー、クリーニングを再開しました。 2006/09/24 FML::Demo::Chart fix initialization code. _shrink_date() for column list. sort main data before printing. FML::Demo::Project FML::Demo::Language::Japanese NL-ify (use FML::Demo::Language if needed) enabled to expand YY::DD-YY::DD form to date list. cosmetics. status and misc support. 2006/07/09 オーヴァホールはじめた… 2006/06/10 TinyMTA デバッグおよび、ちょっと(インチキだけど)MTAもどきを使いたい場 合に便利 2006/06/25 へんな SPAM でコマンドが落ちたりするのが直ったはず。 FML::Command::DataCheck FML::Process::Command validate if find_first_plaintext_message() returns object. 2006/05/22 Mail::Message::ToHTML _update_montly_thread_index_master() rewrite same logic using _update_id_montly_index_master() 2006/05/17 fml4 to fml8 変換 97 % 終了 メッセージテンプレートをいくつか追加 2006/05/16 登録可能なユーザ数の制限をかけられるようにしました。 fml4 の $MAX_MEMBER_LIMIT にあたるものです。 #って、そんな機能欲しいのは ISP くらいかも :-) variables define $*_total_limit FML::User::Control define get_user_total(), return the total number of addresses in list. FML::Command::Admin::subscribe check the number of users in {member,recipient}_maps exceeds the limit. 2006/05/14 FML::Envelope envelop based loop check 2006/05/13 variables cksum -> checksum FML::Process::Kernel Utils FML::Body enable body based loop check 2006/05/11 Mail::Message::Checksum restructured. define md5_str_ref() too, same as md5(). implement md5_file() 2006/05/09 variables reject_spammer_maps directive available now. define dummy $primary_spammer_map and $spammer_maps. add envelope loop checks FML::Restriction::Post implement reject_spammer_maps() FML::Credential define is_spammer() FML::Process::Error restructure qmail-ext command emulation. currently libexec::error traps the request and switch the context to command process. FML::Process::QMail no more used. FML::Command::QmailExt provides qmail-ext emulation functions. etc/dot-qmail-admin bug fix: add missing calling of libexec::error process. 2006/05/04 いろいろな機能の expire を整備しました。 variables define $welcome_file and $deny_file. % format of strftime(3) is available for $log_file FML::Log expand % format in $log_file by strftime(3). ログファイルに log.%C%y%m%d などといった日付がつけられるように なりました。 FML::Process::Debug define incoming_message(), which returns undef as a dummy. FML::Process::Distribute expire article under locked FML::Process::Kernel change default message subject to "message from $ml_name ML $myname system". call $queue->expire() in incoming_message_cleanup_queue(). FML::Article FML::Article::Summary expire article summary (remove content, corresponding with expired articles, in summary). FML::Moderate expire too old submitted queue after $moderate_queue_expire_limit. FML::Command::Admin::subscribe send back welcome file in subscription when running under CGI/MTA process. FML::Command::User::confirm move "send welcome message" code to FML::Command::Admin::subscribe class. FML::Command::SendFile bug fix::pass recipient information to reply_message_nl(). FML::Command::User::admin fix typo::$use_admin_command_mail_fucntion Mail::Delivery::Queue constuctor imports $expire_limit in the argument. delete() and remove() can accept queue id if specified. define expire() which removes too old queue files in the specified queue. It expires all queue if $class unspecified. expire()::cleanup() is overhauled. queue removing is done by remove(). define {set,get}_expire_limit() access methods. 2006/05/03 variables define $use_article_summary_file_expire define $use_article_expire and $article_expire_limit define $moderate_queue_expire_limit fix typo: $use_admin_command_mail_function FML::Article implement expire(), which function expires too old articles. modify log messages FML::Process::Distribute try to expire articles once per day if enabled. 2006/05/02 variables define $confirm_command_expire_limit (= 14d by default). FML::Config implement as_second($key), which returns the value as seconds such as 86400 for '1d'. FML::Command::User::confirm modified to use $confirm_command_expire_limit which value is converted to the integer by as_second() method of FML::Config. FML::Restriction::Command changed that permit_forward_to_moderator() returns ("matched","ignore"). 2006/04/30 FML::Merge::FML4::RULES.txt 83 % checked. FML::Merge::FML4::config_ph support for LOGFILE_NEWSYSLOG_LIMIT and XMLNAME 2006/04/28 Mail::Delivery::Queue fix open() mode::r -> < 2006/04/22 7.98.12 released. 配送システムの見直し(1) 2006/04/22 - 2006/04/20 エラーリセットのタイミングを変更 IPv6 対応部分のエラーを修正 FML::Process::Utils FML::File::Rotate FML::File::Rotate overhaul-ed. access method changed. variables variable name changed due tu overhaul of FML::File::Rotate. $log_rotate_size_limit $log_rotate_archive_file_total FML::Process::QueueManager Mail::Delivery::SMTP message modified (unified among modules) FML::Process::Flow Kernel runs operation on log files (currently log rotation). 2006/04/21 Mail::Delivery::SMTP fix error reset timing. show more useful info in log message. FML::Process::QueueManager log as status=deferred not status=fail when the delivery fails. 2006/04/20 Mail::Delivery::SMTP Mail::Delivery::Net::INET6 try to connect(2) $mta by IPv6 if (1) we can use Socket6 and (2) mta is not pure IPv4 syntax (Iv6 syntax or hostname). IPv6 module, which should be fully rewritten in the future, exports parse_mta6() and is_pure_ipv4_syntax(). rewritten to use them. 2006/04/18 FML::Header::MessageID $Counter -> $global_counter, easily identified as a global variable. base address is ( $article_post_address || $maintainer ). fix style. FML::Process::Kernel logging system enabled by default 2006/04/17 ダミーの rewrite_message_id メソッドを実装した。 TODO: 将来、MLオリジナルの Message-Id: をつけられるようにする。 FML::Header variables define dummy rewrite_message_id() method and the rewrite rule. this method does nothing by default (pass the original message id as itself). FML::Process::Debug define logdebug() 2006/04/16 変数名を分かりやすくするなど、クリーニング FML::Filter::TextPlain Mail::Bounce::DSN Postfix19991231 Qmail SimpleMatch Mail::Message Mail::Message::ToHTML Outline nuke ambiguous method and variable name. num_paragraph() -> paragraph_total() (XXX see "Code Complete"). each variable holding this return value is fixed to $total. FML::Command::User::get clean up variable name style. Mail::Message::ToHTML fix variable name syntax::_num_attachment -> _num_attachments Mail::Delivery::SMTP fix variable name::num_rcpt -> rcpt_total FML::Article::Spool fix variable names: num_file -> num_files num_dir -> num_dirs 2006/04/11 投稿時もしくはコマンドメールの処理で不正なリクエストを無視するディ レクティブを書けるようにした。主に SPAM を無視するため。微修正。 variables ${article_post,command_mail}_restrictions support {ignore,ignore_invalid_request}. FML::Process::Distribute apply filter system to avoid useless work if distribution is allowed. temporarily disable logging system before calling is_permit_post() at filter check. FML::Process::Kernel define log_{enable,disable}() to enable::disable logging system. 2006/04/10 投稿時もしくはコマンドメールの処理で不正なリクエストを無視するディ レクティブを書けるようにした。主に SPAM を無視するため 例: 有効なコマンドでないなら無視。 メール全体で一つも有効なメールがない場合は返事も返さない。 command_mail_restrictions = reject_system_special_accounts permit_anonymous_command permit_user_command ignore_invalid_request reject FML::Restriction::Post define ignore() and ignore_invalid_request() methods. FML::Restriction::Command define ignore() and ignore_invalid_request() methods. assert FML::Process::State define restriction_state_set_ignore_reason() and restriction_state_get_ignore_reason() methods. FML::Process::Command enhance restriction checks for invalid contents to determine the action against such content. 2006/04/05 IO::Adapter IO::Adapter::File trylock() (lock( { wait => TIME }) implemented Mail::Delivery::Queue fix usage of logging. trylock() is available, too. validate stat() object before using it. mask some debug messages Mail::Delivery::SMTP fix fallback algorithm::we need not do fallback for the queue already on the queue. bug fix loop check counting. bug fix queue_directry info handling. prepare several acess methods::_is_map_in_queue(), _set_queue_directory(), _get_queue_directory(), set_not_done(), get_not_done(). FML::Mailer modifieid to sync w:::Mail::Delivery::Queue changes. + use recipient_maps as an argument to Mail::Delivery system. + pass queue object to Mail::Delivery system. + check if delivery is DONE or not by get_not_done(). FML::Process::Kernel queue_flush() takes no argument FML::Process::Distribute modifieid to sync w:::Mail::Delivery::Queue changes. + more fast lock + pass log function pointers. + pass queue object to Mail::Delivery system. + check if delivery is DONE or not by get_not_done(). FML::Process::QueueManager modifieid to sync w:::Mail::Delivery::Queue changes. pass log function pointer to Mail::Delivery system. 2006/04/04 Mail::Delivery::Queue define set_sleep_count, get_sleep_count, set_retry_count and get_retry_count. rewritten by using them. FML::Process::QueueManager queue validation logic modified. 2006/04/03 Mail::Delivery::SMTP check the number of effective MTA. tune retry max limit (XXX a lot of todo around this). fix retry handling (now we use cost penalty by rollback). style::not use $_xxx in loop Mail::Delivery::Queue ensure lock::unlock return value bug fixed to lock new or lock queue file, not active queue. IO::Adapter consider context switch FML::Mailer enable fallback 2006/04/02 Mail::Delivery::SMTP overhaul. o subroutine-ify. o more error check and assertion. o fix comments. et.al. fix error handling (do not trap normal condition) Mail::Delivery::Queue fix typo. check lock status. FML::Log clean up input buffer (nuke \s+$) 2006/04/01 Mail::Delivery::Queue overhaul 2006/03/29 Mail::Message::ToHTML change monthly_index.html's table output in _update_id_montly_index_master(). see also fml-devel 798. 2006/03/26 Mail::Delivery::Base define [sg]et_address_validate_function() FML::Mailer FML::Process::Distribute use $curproc->log() as log_info and $curproc->logdebug() as log_debug in Mail::Delivery, by passing log_debug function pointer to Mail::Delivery class. Mail::Delivery::Net::INET4 INET6 fix arguments: + connect{4,6}() accepts $mta. + remove not used arguments. 2006/03/25 Mail::Delivery::Base fix comments. fix usage of ->log*() 2006/03/24 Mail::Delivery overhaul (1). Mail::Delivery fix comments. Mail::Delivery::Net::INET6 overhaul. + more use of access methods. + change method name to more proper one. Mail::Delivery::Net::INET4 overhaul. use $self->log*() instead of Mail::Delivery::Utils. Mail::Delivery::Queue SMTP overhaul. more access method based. FML::Mailer FML::Process::Distribute QueueManager rewritten to use access methods to sync w:::Mail::Delivery overhaul. 2006/03/23 Mail::Delivery::SMTP if EHLO fails, try HELO. 2006/03/21 FML::Mailer FML::Process::Distribute Mail::Delivery::SMTP validate format of recipient within smtp transaction. Mail::Delivery::ErrorStatus define {set,get}_error() Mail::Delivery::Queue fix type in queue_id generator Mail::Delivery::SMTP bug fix starting position in fallback process. 2006/03/20 FML::Merge::FML4::RULES.txt 56.5 % verified. status and rules updated. FML::Merge::FML4::config_ph fix conversion for address variables. add conversion of REJECT_ADDR and SKIP_FIELDS. fix HOST and PORT handling. apply _fix_path() for *_FILE variables. add conversion of INCOMING_MAIL_SIZE_LIMIT with ATOI suport. etc/compat/fml4/default_config.ph by default, define ___NULL___ for the following variables: $PERMIT_POST_FROM $REJECT_POST_HANDLER $PERMIT_COMMAND_FROM $REJECT_COMMAND_HANDLER $REMOTE_ADMINISTRATION_REQUIRE_PASSWORD $USE_DISTRIBUTE_FILTER $FILTER_NOTIFY_REJECTION $FILTER_ATTR_REJECT_COMMAND $FILTER_ATTR_REJECT_2BYTES_COMMAND $FILTER_ATTR_REJECT_INVALID_JAPANESE $USE_ERRORS_TO $APPEND_STARDATE $AUTO_HTML_GEN $USE_NEW_HTML_GEN 2006/03/19 fml 4 から fml 8 への変換 56.5 % 確認 variables define $article_header_list_software define $mail_header_default_list_software $default_umask -> $system_default_umask FML::Header List-Software: and X-MLServer: is set as ${mail_header_default_list_software} or ${article_header_list_software} by definition. sort definition order: _get_header_type(), ... FML::Process::Distribute $use_smtp_log enable/disable smtp transaction logging. 2006/03/12 variables define $maintainer_signature (not used now). define $article_header_* and $mail_header_default_* variables. rewritten to use $mail_header_default_* for outgoing_*. FML::Process::Kernel pass {mode => default} parameters to FML::Header object by default. FML::Header rewrite logic to generate list-* header field to sync w:::new variable definitions::article_header_list* et.al. FML::Merge::FML4::Makefile define printok::print_ok rules FML::Merge::FML4::config_ph save default value for later use in evaluating default_config.ph. overhaul algorithm to fix path. changed to use _fix_path() if needed. 2006/03/06 variables define $use_admin_command_mail_fucntion ("no" by default). 2006/03/05 refactoring: use of command context object based. FML::Command::User::admin FML::Process::Command State FML::Restriction::Command FML::Context::Command command context information switched to use of FML::Context::Command object. FML::Command::Admin::* FML::Command::User::* FML::Command Error FML::Article::Spool FML::CGI::List ML User FML::CGI::Skin::Base FML::Command::Auth DirUtils FileUtils Message SendFile Syntax FML::Context::Command FML::Fault::Address FML::ML::Control FML::Process::Command Configure FML::Process::CGI::Kernel FML::User::Control $command_args -> $command_context (OBJ), method style changed to command_context object based. FML::Command::User::admin duplicate FML::Context::Command object by object dup method not by myself. FML::Context::Command implement dup() method. 2006/02/18 FML::User::Control always update user infomation db. update gecos and action date if operation runs under MTA, but update only date in other cases. FML::User::DB define add() and set() FML::User::Info rename method::add(HASH_REF) -> set_header_info($address) 2006/02/15 FML::Error FML::Command::Admin::reviveml rmcl rmml FML::Error::Analyze FML::Error::Analyze::histgram simple_count FML::ML::Control FML::MTA::Control FML::MTA::Control::Postfix Procmail Qmail Sendmail FML::Process::Error Kernel Utils Mail::Message::Utils fix method name::remove -> delete Mail::Delivery::Queue define delete() as an alias of remove() 2006/02/05 FML::Header implement raw level insert_message_id_cache() method to access cache more directly. rewritten to use it. FML::Process::Kernel add a new message-id to the outgoing message fml8 generates and cache it in our message-id database for further loop check. FML::Process::CreateOnPost ignore *-ctl and *-admin addresses as a ML one. implement reject_list_header_field derective. FML::Process::CreateOnPost comments on _is_ml_address() logic: if you create xxx-ctl or xxx-admin ML, it should be allowed. variables $createonpost_sender_restrictions += reject_list_header_field 2006/02/04 CREATE-ON-POST implemented. CREATE-ON-POST は「動的にMLを生成」する仕組みです。 存在しないMLに投稿すると fault がおき、fault handler が MLの生成処理を行なう。アドレスの登録も fault で行なう。 メカニズムとしては fml4 エミュレータの fallback 処理と同じ。 ml fault 存在しないMLなら、MLを作る address fault アドレスが登録されているか?を調べ 未登録の場合には登録処理をする (走り始めた配送プロセスが fault を処理)。 variables define CREATE-ON-POST function. FML::Config context switch safe fix comments (FNF) FML::Header return <> for error mail sender FML::PCB context switch safe FML::ML::Control FML::MTA::Control implement createonpost function dispatcher FML::MTA::Control::Postfix Postfix specific CREATE-ON-POST operations. FML::MTA::Control::Qmail qmail_install_alias() install ~fml::.qmail-* files not qmail_setup() method. FML::Process::Utils define several methods around $0 handling, address fault handling and context switching. +set_process_title() +get_process_title() +set_address_fault() +get_address_fault() +is_address_fault() +set_address_fault_list() +get_address_fault_list() +context_switch_get_context() +context_switch_set_context() FML::Process::Distribute FML::Fault::Address address fault handling FML::Process::Configure use $curproc->{ml_name,ml_domain}() method. $command_args includes ml_domain info. FML::Process::Kernel initialize context information when constructor runs. FML::Process::Switch prefer $hints if specified for argv, ARGV and options. support context switching in executing new (child) process. FML::Command::Admin::rmml use $command_args->{ ml_name } and $command_args->{ ml_domain }; FML::Command::Admin::newml use $command_args->{ ml_name } and $command_args->{ ml_domain }; not udpate alias relates information if update-alias = no specified. 2006/02/03 FML::Config define {set,get}_context() method. 2006/01/24 各種テスト、オーヴァホール 2006/01/19 いろいろとレシピ’sを書く、書く、書く… fml4 emulator tool added. 2006/01/15 いろいろとレシピ’sを書く、書く、書く… FML::Process::Utils implement policy_ignore_this_message(), policy_reject_this_message(). 2006/01/13 FML::Process::Utils is_config_cf_exist() evals the statements. implement is_fml8_managed_address() which checks the given address is either of fml8 managed ml addresses. 2006/01/12 ドキュメント: Reply-To: hacks をいろいろ書いておきました。 FML::Demo::Calendar on the format of files in ~/.schedule/ directory. 2006/01/09 FML::Header add rewrite_subject_tag() equal to rewrite_article_subject_tag(). rewrite_reply_to_enforce_article_post_address() fix comments. variables $article_header_rewrite_rules supports more 2 rules: + rewrite_subject_tag + rewrite_reply_to_enforce_article_post_address 2006/01/08 FML::Merge::FML4::config_ph add prototype to translate PERMIT*_FROM and REJECT_*_HANDER combinations. 2006/01/07 variables +chaddr_command_operation_mode = automatic +subscribe_command_operation_mode = automatic +unsubscribe_command_operation_mode = automatic FML::Command::User::subscribe chaddr unsubscribe FML::Command::Message move location of reseting compare_level. rewritten to call FML::Command::Message->send_notification() not direct reply_message() calls in Command::User:::class. send_notification() works differently according to the value of $XXX_command_auth_type variable. FML::Command::User::confirm Accoding to ${command}_command_operation_mode, it works differently. 1. XXX_command_operation_mode == automatic, fml8 do subscription et.al. automatically. 2. XXX_command_operation_mode == manual, notify "the request is confirmed" to $maintainer, who do actual subscription et.al. FML::User::Control use reply_message() in chaddr operations to send back log. 2006/01/04 fml 4 -> 8 変換ルール生成プログラムのバグを修正した。 FML::Merge::FML4::config_ph change diff() return value to ($config, $diff), ARRAY of HASH_REF's. add debug codes. FML::Merge::FML4::Rules regen::converter fixed. fml4to8::configtest.pl follow change of diff() return value. croak() if eval() fails. gen_rules.pl 2nd generation prototype::check diff between default_config.ph and config.ph and translate rules bsaed on config.ph vlaues. fix copyright of module header template. modify private function names. fix bug of output indent level. croak() if unknown rule found. modify initialization logic. add missing comments. check the current key in appling if() conditions. modules updated to File::MMagic 1.25 2006/01/02 FML::Merge::FML4::RULES.txt new keyword system. fix some rules. FML::Merge::FML4::Rules regen 2006/01/01 あけましておめでとうございます。今年の目標は official release なん だけど… # fml 4 直接エミュレータ以外は全部できてるつもりなんだけど remove not-used modules. Class::NamedParms Class::ParmList AsciiDB::* FML::Merge::FML4::config_ph pass $config to translation*() methods. support MODERATOR_MEMBER_LIST, ADMIN_LOG_DEFAULT_LINE_LIMIT. implement translate_not_yet_implemented(). clean up. modify comments. 2005/12/31 fml 4 to 8 コンバータのルール解釈ルーチンは間違ってます。 修正中。冬休み中に直せるかな? 2005/12/19 モデレータモードのバグとり FML::Process::Distribute Kernel change is_permit_post() retruns action string not number to support 3 permit/ignore/deny states. FML::Moderate remove moderation queue if distribution succeded. FML::Restriction::Post permit_forward_to_moderator() returns (matched, ignore) モデデータからのメールなら投稿を許す命令を追加。 考え用によっては一番単純なメールマガジンはこれを使えば良い(推奨はしない) FML::Credential implement is_moderator_member() FML::Restriction::Post implement permit_moderator_member_maps(). 2005/12/18 モデレータモードの基本的な実装を行なう variables fetchfml_queue_dir = $var_dir/mail/queue-fetchfml define moderation definition::enable, queue_dir Mail::Delivery::Queue enhanced dup_conent() to take two arguments. FML::Process::Switch NewProcess() takes hints as args to overload configuration in a new process. FML::Process::Utils comment on incomplete dup_command_args FML::Restriction::{Command,Post} implement permit_forward_to_moderator. FML::Command::User::confirm pass _confirm_id information to called process. support "moderate" command. FML::Process::Kernel workaround::unlock() call lock object via IO::Adapter if saved object undefined. bug fix loop check functions to check enabler variable definition. FML::Moderate o fix comments. o if (defined ) { .. open .. } FML::Confirm implement id(), set(), get() FML::Command add more debug codes 2005/12/17 FML::Process::FetchFML Switch not need to pass $args to FML::Process::Switch::NewProcess() which fake $args by $curproc->dup_curproc_args(). FML::Process::Utils implement dup_curproc_args() template 2005/12/16 FML::Command::User::digest fix duplicated definition. 2005/12/10 FML::Credential IO::Adapter::PCRE pass hints to IO::Adapter to return matched address. 2005/12/09 IO::Adapter IO::Adapter::PCRE pcre: support 2005/12/01 FML::Process::Utils define credential() method FML::Command::Admin::changepassword addrecipient digest off on addmember FML::Command::User::admin chaddr digest off on subscribe unsubscribe FML::Command::Auth FML::ML::HomePrefix FML::Process::Command Distribute Kernel QueueManager FML::Restriction::Command Post FML::Filter Error FML::Process::Digest Error Utils use $curproc->credential(); FML::Credential use $address_compare_function_domain_matching_level 2005/11/19 ドキュメンテーション レシピ一覧を作るようにしてみました。 「FML バイブル」のレシピコレクションを参考にしてレシピを追加中 ですが、未実装のものは未実装と書いてあります。 fml/utils/bin/listup_recipes.pl generate list of recipes 2005/10/29 variables change naming of $article_thread_outline_rules. fix comments. add $article_thread_outline_* ドキュメンテーション 「FML バイブル」のレシピコレクションを参考にしてレシピを追加中 2005/09/17 FML::Filter::TextPlain is_signature() and is_citation() switched to Mail::Message::String based. FML::Article::Thread eval use .. FML::Article::Outline check method existence before calling. rename method names. 2005/09/13 FML::Article FML::Article::Outline FML::Process::Distribute changed to FML::Article->add_outline($tdb_args) style. 2005/09/11 スレッドまわりの改造中 variables rename: $*_overview -> $*_outline Mail::Message::Thread define DESTROY() Mail::Message Mail::Message::Outline Mail::Message::Language::Japanese::Outline move thread outline generator codes to Mail::Message::Outline. correct error messages (Mail::Message). FML::Process::Distribute FML::Article::Outline move thread outline generator to FML::Article::Outline 2005/09/01 FML::Article::Thread remove obsolete codes. private-ify::psw_*() -> _psw_*(). use article_summary cache as coudl as possible. To clean up around the codes, some codes are separeted to _generate_summary(). fix comments and documents. strict check of $status code. implement get_overview($id, $thread_args). It returns string holding article short summaries of a thread for this article $id. FML::Process::Distribute article_thread_overview support. variables preliminary definitions for article thread overview. +article_thread_overview_greeting +article_thread_overview_greeting_en +article_thread_overview_greeting_ja +article_thread_overview_rules +use_article_thread_overview 2005/08/31 Mail::Message implement new method prepend(), append() and whole_message_body_tail(). fix charset() logic to handle plural header field lines. Mail::Message::DB implement find_head_key(). add() updates article_summary database, too. FML::Article implement append() and prepend() methods. FML::Process::Utils langinfo_get_charset() uses Content-Type::information as a hint when Accept-Language::is not specified. 2005/08/27 Mail::Message::DB define open() and close() FML::Filter::TextPlain use $msg->message_chain_as_array_ref() instead of $mp->{ next } form. 2005/08/25 Mail::Message::Thread ToHTML renamed::db->analyze() => db->add() Mail::Message::DB renamed methonds: o analyze -> add o db_open -> _db_open o db_close -> _db_close 2005/08/23 IO::Adapter add PostgreSQL support. add LDAP support. IO::Adapter::MySQL $sql_server -> $sql_servers. enhanced to handle a list of dsn. fix comments. IO::Adapter::DBI change dsn to form "DBI:$driver:dbname=$database;host=$host". always $dbh->commit(); enhanced to handle a list of dsn and to retry sql servers if needed. DBI->connect with { AutoCommit => 0 } option. FML/Command/Admin::reviveml revive a removed ML. FML::CGI::ML add & enable reviveml in cgi FML::Process::FetchFML handle $fetchfml_pop_servers FML::MUA::POP3 remove message when the message retrival succeeded. FML::Log $log_syslog_host -> $log_syslog_servers variables $log_syslog_host -> $log_syslog_servers $sql_server -> $sql_servers 2005/08/20 FML::Filter::MimeComponent FML::Header::Subject Mail::Message::Language::Japanese::Subject Mail::Message::Subject cut_off -> cutoff FML::Config FML::Config::Menu merge_to_file -> merge_into_file FML::Merge::FML4::config_ph var_dump -> dump_variable FML::Error deluser() -> remove_address() 2005/08/19 Mail::Message::DB ToHTML Utils convension::from_to_name -> from_address_to_name FML::Filter convert_to_mail_address($list); -> address_resolve($list); FML::Command::Admin::log $curproc->output_{set,get}_print_style(). FML::Header::Subject bug fixed (forgotten import of module ;-) FML::Process::Kernel FML::Process::CGI::Kernel set_print_style() -> output_set_print_style() FML::Process::Utils which_map -> map_to_term which_map_nl -> map_to_term_nl convert_to_mail_address -> address_resolve set_print_style -> output_set_print_style get_print_style -> output_get_print_style FML::User::Control which_map -> map_to_term which_map_nl -> map_to_term_nl set_print_style -> output_set_print_style get_print_style -> output_get_print_style FML::Process::FetchFML FML::MUA::POP3 FNF::pick_up_queue -> pickup_queue FML::Article::Summary FML::Header FML::Command::DataCheck FML::Filter::TextPlain FML::Header::Subject FML::Process::Error Kernel State Mail::Bounce::DSN Exim Postfix19991231 Freeserve GOO Qmail SimpleMatch Smtpfeed Mail::Delivery::Queue Mail::Bounce Mail::Message::DB Address XXX_clean_up() -> XXX_cleanup() 2005/08/18 FML::ML::Control check ::etc::passwd only in the case of default domain. follow changes of ml_home_dir_removed_path() arguments. FML::Process::Utils change ml_home_dir_removed_path() and ml_home_dir_find_latest_removed_path() argument order: e.g. ml_home_dir_removed_path($curproc, $ml_home_prefix, $ml_name); removed_path format is changed to $ml_name.YYYYMMDD.COUNT style. FML::Header::Subject exclude explicit code e.g. euc-jp and use Mail::Message::Charset instead. FML::MTA::Control::Postfix fix typo 2005/08/17 FNF: adjust method naming convension. FML::Article::Thread FML::Command::Admin::thread FML::Command::HTMLify FML::Process::Distribute $curproc->thread_db_args(); -> $curproc->article_thread_init(); Mail::Message::Encode str_dump() -> dump_string() FML::CGI::Calendar Thread FML::CGI::Skin::Base FML::Command::Admin::log FML::Command::SendFile FML::Process::CGI::Kernel langinfo_XXX() e.g. langinfo_get_charset()... FML::Command::Admin::addmoderator addadmin delmoderator deladmin addrecipient digest off on subscribe unsubscribe addmember follow changes of FML::User::Control::userXXX() -> user_XXX() FML::User::Info import_from_mail_header() -> add() with args changed (nuke $curproc). FML::User::Control align methond name user_XXX::changed userXXX() -> user_XXX(). follow FML::User::Info changes (import_from_mail_header() -> add()). FML::MTA::Control::Postfix Procmail Qmail Sendmail template_files_dir_for_newml() -> newml_command_template_files_dir(); FML::Cache::Ring import_data_from() -> add(). FML::ML::Control template_files_dir_for_newml() -> newml_command_template_files_dir() removed_ml_home_dir_path() -> ml_home_dir_removed_path() FML::Process::Fake change {set,get}_emul_XXX() to internal use (_method) FML::Process::Kernel follow changes of FML::Cache::Ring. use langinfo_XXX(). moved lang_to_charset() and remove_too_old_files_in_dir() from FML::Process::Utils to here and change lang_to_charset() and remove_too_old_files_in_dir() to module internal use. FML::Process::Utils removed_ml_home_dir_path -> ml_home_dir_removed_path find_latest_removed_ml_home_dir -> ml_home_dir_find_latest_removed_path template_files_dir_for_newml -> newml_command_template_files_dir set_language_hint -> langinfo_set_language_hint get_language_hint -> langinfo_get_language_hint set_charset -> langinfo_set_charset get_charset -> langinfo_get_charset set_accept_language_list -> langinfo_set_accept_language_list get_accept_language_list -> langinfo_get_accept_language_list thread_db_args -> article_thread_init changed to internal use. language_of_html_file -> _language_of_html_file move lang_to_charset() and remove_too_old_files_in_dir() to FML::Process::Kernel. 2005/08/15 FML::Log use sprintf instead of "${name}[${pid}]:" to avoid error in perl 5.6.x. 2005/08/10 FML::Process::CGI::Kernel FML::Process::Calendar Addr Alias ConfViewer Command Distribute Configure Digest DocViewer Error HTMLify Kernel Emulate Utils Fake PGP FetchFML config_files_XXX() -> config_cf_files_XXX() to clarify the meaning. FML::Process::Emulate FNF: generate_config_cf_from_config_ph -> config_cf_generate_from_config_ph FML::Error FML::Error::Analyze FML::Error::Analyze::histgram simple_count module internal variables are changed. o summary() -> get_summary() o removal_address() -> get_address_to_be_removed() FML::Config::Menu FML::Filter::External::clamscan FML::Filter::MimeComponent FML::Process::Flow Kernel s/temp_file_path/tmp_file_path/g; s/tmp_files_clean_up/tmp_file_cleanup/g; FML::Process::Flow Kernel s/incoming_message_queue_clean_up/incoming_message_cleanup_queue/g; FML::Process::State current_process_ml_name_init() -> current_process_init(). IO::Adapter::DBI $sql_QUERY -> $sql_query_QEURY variables $sql_QUERY -> $sql_query_QEURY 2005/08/09 FML::Filter FML::Filter::MimeComponent FNF: rename read_filter_rule_from_file() -> read_filter_rule_file(). FML::MUA::POP3 Mail::Delivery::Queue FNF: content_dup2() -> dup_content() Mail::Message::ToHTML fixed function name: o htmlfy_rfc822_message() -> htmlify_rfc822_message(). o html_begin() -> html_start() 2005/08/08 FML::Process::Kernel FNF: if (defined $queue) { $queue->open( ... );} FML::Header fix comments. fix $addr_for_post -> $article_post_address. enforce use of "return $value" form. 2005/08/06 Mail::Message::Utils define get_time_from_header() method (moved from Mail::Message::DB). Mail::Message::ToHTML switched to use Mail::Message::Utils::get_time_from_header. Mail::Message::DB overhaul: [sg]et_db_module_name() -> [sg]et_db_module_class(). get_time_from_header() -> _get_time_from_header(). mov get_time_from_header() to Mail::Message::Utils class. clean up. remove not used variable. fix db_close(). fix comments. FML::Process::PGP bug fix: -h -> -l 2005/08/03 7.98.3 English document revised. 2005/07/01 FML::Process::Kernel garbage collection runs only when valid ml_home_dir found. 2005/06/27 7.98.3 Japanese document revised. 日本語のドキュメントをオーバーホールしました。 2005/06/04 7.98.2 bug fix method naming convension (FNF). FML::MUA::POP3 bug fix::check queue_id value itself, too FML::Process::Kernel define _get_debug_level(), moved from FML::Process::Utils and made private. FML::Process::Fake switched to use FML::Process::Switch::NewProcess(). bug fix pcb handling. FML::Process::Kernel QueueManager Error $curproc->OBJ_METHOD() form (FNF): [sg]et_event_timeout() -> event_[gs]et_timeout(). FML::CGI::User moved get_address_list(), called only at this module, from FML::Process::Utils to here. Also, it is changed to the private method; get_address_list() -> _get_address_list(). FML::Process::CGI::Utils move get_ml_list definition, used only here, to this module. also it is changed to private. FML::Process::Utils remove get_ml_home_prefix_maps() definition, which is not used. move definitions to proper module::get_ml_list(), get_address_list() and get_debug_level(). FML::Mailer FML::Article::Sequence FML::Command::SendFile FML::Config::Menu FML::Process::Addr Alias Calendar Command ConfViewer Configure Digest Distribute DocViewer Error FetchFML Flow HTMLify PGP State Kernel Emulate Fake Utils FML::Process::CGI::Kernel method naming fixed to $curproc->OBJ_METHOD() form (FNF). get_article_id -> article_get_id set_article_id -> article_set_id config_files_append_to_list -> config_files_append append_to_config_files_list -> config_files_append_to_list get_config_files_list -> config_files_get_list load_config_files -> config_files_load set_config_files_list -> config_files_set_list verify_sender_credential -> credential_verify_sender get_current_process_ml_name -> current_process_get_ml_name set_current_process_ml_name -> current_process_set_ml_name fix_perl_include_path -> env_fix_perl_include_path parse_exception -> exception_parse parse_incoming_message -> incoming_message_parse clean_up_incoming_queue -> incoming_message_queue_clean_up get_cui_menu -> menu_get_cui_config_file_path get_gui_menu -> menu_get_gui_config_file_path resolve_ml_specific_variables -> ml_variables_resolve outgoing_message_open_channel -> outgoing_message_cache_open open_outgoing_message_channel -> outgoing_message_open_channel inform_reply_messages -> reply_message_inform prepare_file_to_return -> reply_message_prepare_template clean_up_tmpfiles -> tmp_files_clean_up reset_umask -> umask_reset set_umask_as_public -> umask_set_as_public 2005/06/03 7.98.2 queuing system revised. キューイングシステムの微修正 POP/IMAP による MTA+ML エミュレーションをサポート (fetchfml)。 この実装を試すことで、現在のキューイングおよびキャッシュシステ ムが妥当かあるかどうかが分かります。基本構造は、そのままですの で、本質的には変わっていませんが、2、3の拡張が必要でした。 FML::PCB fix dump_variables() for context based switching. define {set,get}_current_context(). fetchfml FML::Process::FetchFML added. FML::MUA::POP3 added. etc/command_line_options modules install.cf.in add fetchfml definitions. variables define fetchfml related variables. $fetchfml_*_hook added. Mail::Delivery::Queue fix args and comments of *_dir_path(). implement local_{dir,file}_path(), content_dup2(), open() and close(). queue_id = second + microsecond + pid + counter. now other module can extend class for local use. FML::Process::Switch alloc shared memory area in $args (shared_hash_get() uses). implement NewProcess(). FML::Process::Kernel incoming queue system revised. o move some log to logdebug. o not use queue file directly. instead use $queue->open() method. o use incoming_message_set_current_queue() instead of mail_queue_set_incoming_queue(). o clean up incoming queue removal code. FML::Process::Utils implement helper functions for incoming cache::queue system. o incoming_message_set_current_queue() o incoming_message_get_current_queue() o incoming_message_stack_queue_for_removal() o incoming_message_remove_queue() shared memory for IPC between parent and child $curproc processes. o shared_hash_get() FML::Process::State remove mail_queue_set_incoming_queue($queue), mail_queue_get_incoming_queue(). XXX alternative methods available in FML::Process::Utils. FML::Article switched to use $curproc->incoming_message_get_cache_file_path(); 2005/06/02 MIME-Base64 removed. 2005/05/31 FML::Process::Kernel "my $path = $obj->cache_file_path();" is wrong. old implementation saves the FML::Cache::Ring file path for later use. But it is ambiguous. When many processes (> modules) runs simultaneously, $path may be overwritten by the next content. Instead, use $queue_file since $queue_file (queue::incoming::ID) is unique. FML::Process::Kernel Utils FML::Restriction::Post Command fix naming convension (FNF). set_incoming_message_cache_file_path -> incoming_message_set_cache_file_path get_incoming_message_cache_file_path -> incoming_message_get_cache_file_path 2005/05/30 Mail::Message::ToHTML FML::Filter::TextPlain use Mail::Message::Encode not MIME::Base64. Mail::Message::Encode switch to use MIME::Base64::Perl not MIME::Base64 module. define raw_decode_{base64,qp}(). 2005/05/29 投稿制限: PGP/GPG の電子署名を元にしたアクセス制御を可能にする variables o define PGP related variables pgp_config_dir gpg_config_dir path_gpgv path_gpgsplit o define editors: vi, ng, mule, emacs, xemacs +path_gpgv +path_gpgsplit remove $gpg_config_dir, $pgp_config_dir. define $article_post_{auth,encrypt}_{pgp,gpg}_config_dir and ${admin_,}command_mail_auth_{pgp,gpg}_config_dir. add $fmlpgp_*_hook etc/command_line_options etc/modules etc/install.cf define fmlpgp fmlpgp5 fmlpgpe fmlpgpk fmlpgps fmlpgpv fmlgpg fmlgpgv. bin/ utilities added. bin/* etc/command_line_options modules etc/install.cf.in add fmlgpg fmlgpgv fmlpgp fmlpgp5 fmlpgpe fmlpgpk fmlpgps fmlpgpv. FML::Process::PGP For convenience, create a conventional named dir (e.g. pgp-admin) and symlink to the current style dir. For example::pgp-admin@ -> pgp-admin-command-mail-auth FML::Restriction::Post define check_pgp_signature, which permits article post when the article has proper PGP::GPG signature. For example: article_post_restrictions = reject_system_special_accounts check_pgp_signature reject setup and reset environment more strictly. etc/{pgp,gpg}-$role style naming ("_" -> "-"). FML::Command::User::admin FML::Restriction::Command ${admin,}command_mail_restrictions support "check_pgp_signature" rule. Both restrictions uses same rule name but which needs different keyring directories. So, we need to handle carefully the context of two restrictions. FML::Process::State definie command_context_set_try_admin_auth_request(), command_context_reset_try_admin_auth_request() and command_context_get_try_admin_auth_request() to handle context of $*command_restrictions. 2005/05/26-27 fml-devel を fml 7.98.1 とする。 スレッドシステムを書き直したら 7.99.x の予定。 variables o define $use_article_spool (as ${ues_spool:-yes}). o log: define syslog related variables o command: $use_command_mail_reply_preamble = yes $use_command_mail_reply_trailor = yes ErrorStatus FML::Filter not use this module. FML::Article use_spool -> use_article_spool FML::Log preliminary syslog extension support. FML::Article::Summary FNF. $fh -> $rh FML::Command::Auth log errors more. FML::Command::User::subscribe unsubscribe $curproc->allow_reply_message() -> $curproc->is_allow_reply_message(). FML::Process::DocViewer IO::Adapter::AtomicFile Mail::Message::ToHTML FML::Command::DirUtils FML::Config::Convert FML::Filter::MimeComponent FML::Config::Tiny FML::Header::MessageID Subject FML::MTA::Control::Procmail FML::Process::DocViewer IO::Adapter::AtomicFile Mail::Message::ToHTML FNF: not use str.str FML::Filter::External::clamscan fixed to work. FML::MTA::Control::Postfix not use str.str. white space clean up of alias file path. _remove_postfix_style_virtual() -> remove_postfix_style_virtual(). FML::MTA::Control::Sendmail fix the comment of virtual file. not use str.str. _remove_postfix_style_virtual() -> remove_postfix_style_virtual(). FML::Process::Configure fix comments (FNF). $curproc->allow_reply_message() -> $curproc->is_allow_reply_message(). FML::Process::Flow remove _xxx() methods among modules::rename _XXX() to sysflow_XXX(). FML::Process::Utils fix comments (FNF). remove is_safe_syntax(), which is not used. rename allow_reply_message() to is_allow_reply_message(). Mail::Delivery fix typo::EMTP -> ESMTP. Mail::Bounce::Exim Freeserve GOO Qmail Smtpfeed clean up. FNF. use self->address_clean_up($addr, $addr) to clean up address if could. FML::Demo::Calendar fixed::_Calender -> _calender FML::IPC::Queue set umask(077) in creating a tmp file. FML::MTA::Control rename _remove_postfix_style_virtual() to remove_postfix_style_virtual(), which is used among plural modules. not use str.str form. FML::Process::Command $use_command_mail_reply_preamble toggles off::on to show the preamble of command reply. $use_command_mail_reply_trailor toggles command processing summary. FML::Process::Distribute more strict error handling. more comments. FML::Process::Fake fix comments. fix error handling. FML::Process::CGI::Kernel remove the duplicated code. use Mail::Message::Date instead of `date`. fix comments. FML::Restriction::Command croak() -> logerror(). fix comments. Mail::Delivery::Queue add randam factor into exponential back off. back off is upper limited by 4000 sec. Mail::Delivery::Net::INET4 set timeout for socket(2). Mail::Message::Encode use Jcode always. Mail::Message::MH sort the output for a,b,c style input. FML::Filter::External Header Size TextPlain FML::Filter::ErrorStatus FML::Filter use FML::Filter::ErrorStatus instead of ErrorStatus. FML::Process::Kernel fml-devel YYYYMMDD -> fml $version (7.9x.y-YYYYMMDD) modified to use incoming_message_header(), temp_file_path() et.al, to avoid raw descrptions. bug fix config.cf search algorithm. defne sysflow_XXX() methods used in FML::Process::Flow. not use str.str form. clean up. Tie::JournaledDir fix comments, error messages. Tie::JournaledFile fix comments, error messages. more defined() checks. 2005/05/01 現在のソースコードを fml 7.98.1 (cvs tag fml-7-98-1)と定義する。 なお、スレッドのコードを修正後に fml 7.99.1 とする。 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