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.