Convert &fml4; Style ML To &fml8; Style ML 2004/03: We have implemented a converter which converts ML HOME DIRECTORY ($DIR) such as /var/spool/ml/elena ($ml_home_dir in &fml8;) from &fml4; style to &fml8; style. It is incomplete but is being developed. 2004/11: You can replace fml.pl of &fml4; with fml.pl of &fml8;. now. It means that &fml8; directly emulates &fml4;. It enables easy upgrade from &fml4; to &fml8;. Overview: &fml4; To &fml8; (1) It is a little wrong that &fml8; works if &fml8; overwrites &fml4; programs. Currently &fml8; can work but it needs automatic conversion in the background. Hence, &fml8; modifies &fml4; to emulate &fml4;. Firstly there is a problem. You want to upgrade all ML's at the same time from &fml4; to &fml8;? It is better to upgrade from one to one ? When something fails, you want to downgrade your system if could. We want to support both types. So it is available that some ML's are &fml8;, other ML's are &fml4; in one domain simultaneously. Downgrading if needed are supported. One example of upgrade operation follows: 1. install &fml8; 2. (in the case of Postfix) add &fml8; aliases to postfix's alias_maps. Example: alias_maps = hash:/etc/mail/aliases hash:/var/spool/ml/etc/aliases (fml4) hash:/var/spool/ml/etc/mail/aliases (fml8) 3. convert &fml4; ML to &fml8; one. fml $ml mergeml fml4's$DIR for example, fml elena mergeml /var/spool/ml/elena Apply 3. for ML's which would be converted to &fml8;. You can use "makefml mergeml" command to convert aliases, include files, &fml4; configuration files and member lists from &fml4; to &fml8;. It is not easy to convert difficult &fml4;'s config.ph file. Now we can convert simple config.ph to &fml8; config.cf style file automatically. We suppose this simple config.ph is generated by &fml4;'s "makefml config" command. Overview: Convert &fml4; To &fml8; (2) 2004/11: you can replace &fml4;'s fml.pl with &fml8;'s fml.pl. Configure like this. [1. Install &fml8;] % su fml % sh configure % su root # make install [2. Emulate &fml4;] # mv /usr/local/fml/fml.pl /usr/local/fml/fml.pl.orig # ln -s /usr/local/libexec/fml/fml.pl /usr/local/fml/fml.pl # ln -s /usr/local/libexec/fml/msend.pl /usr/local/fml/msend.pl # ln -s /usr/local/libexec/fml/mead.pl /usr/local/fml/libexec/mead.pl Precisely &fml8; can not read &fml4; configuration file. If &fml8;'s fml.pl cannot find config.cf, it tries to convert config.ph in ML's home directory to &fml8; config.cf, read it and starts to run. The conversion is incomplete but &fml8; can convert simple configurations manipulated by &fml4; CUI or GUI. Overview: Difference Between &fml4; and &fml8; There are several &fml8; variables and functions not related with &fml4; since &fml8; is re-designed and re-coded from scratch. Also not one to one even if the relation found. Let's see a few examples below. Anyone Can Post Users registered as members can post ML by default. This default behaviour is common between &fml4; and &fml8;. To set "anyone can post", in the case of &fml4;, $PERMIT_POST_FROM = "anyone"; in the case of &fml8;, article_post_restrictions = reject_system_special_accounts permit_anyone reject . Subject Tag No subject tag defined by default. This is common between &fml4; and &fml8; To set the tag such as '[ML_NAME:00100]', in the case of &fml4;, $SUBJECT_TAG_TYPE = '[:]'; This corresponds to the following &fml8; configuration: article_header_rewrite_rules = rewrite_article_subject_tag article_subject_tag = [$ml_name:%05d] &fml8; configuration concepts are more orthogonal. Disable Specific Command In Command Mail Commands such as "members" are prohibited in &fml8; by default. &fml4; needs the following configurations to disable dangerous commands: &DENY_PROCEDURE('member'); &DENY_PROCEDURE('active'); &DENY_PROCEDURE('members'); &DENY_PROCEDURE('actives'); &DENY_PROCEDURE('status'); &DENY_PROCEDURE('stat'); Old &fml4; use no filter by default but &fml8; uses filter by default. &fml8; applies confirmation for subscribe, chaddr, unsubscribe commands by default. &fml4; not. Currently &fml8; always applies confirmation, which can not be disabled by configuration. Discussion "makefml mergeml" command processes the following steps automatically. To clarify details more, explain conversion of aliases and include files below. Our purpose is to run &fml8; anyway. If &fml8; runs, converter of config.ph runs too. So, we need MTA runs &fml4; and &fml4; runs &fml8;. Explain more details. Consider ML driver internal section. For example, when you use Postfix, Postfix reads aliases and recognizes it needs to read include file. By reading include file, Postfix knows how to call &fml8; process. Finally, postfix runs /usr/local/libexec/fml/distribute command. Executed distribute command reads config.cf and knows the location of member lists and processes et.al. That is, when &fml8; process starts, the following two phases aliases (MTA configuration) include ends. It is mandatory that no duplication in aliases files. For example, if /etc/postfix/main.cf contains the following configuration: alias_maps = hash:/etc/mail/aliases hash:/var/spool/ml/etc/aliases (fml4) hash:/var/spool/ml/etc/mail/aliases (fml8) aliases of &fml4; and &fml8; should not have duplication. In othe words, in the case of &fml4; process, MTA -> fml4's aliases -> fml4's include -> fml4 (fml.pl) runs in the case of &fml8; process, MTA -> fml8's aliases -> fml8's include -> fml8 runs So we need the following condition: remove the ml from fml4's aliases file. add the ml to fml8's aliases file. If no duplication in aliases, both &fml4; and &fml8; runs on the same host.