<!--
   $FML: fml.sgml,v 1.4 2005/09/28 11:05:52 fukachan Exp $
   $jaFML: fml.sgml,v 1.4 2003/04/15 14:51:43 fukachan Exp $
-->

<chapter id="overview.fml">
	<title>
	&fmldevel; Overview
	</title>

<para>
See
<link linkend="changes">
<xref linkend="changes">
</link>
on the detail of difference between &fml4; and &fml8;.
</para>


<!-- ======================================================== -->
<sect1 id="overview.fml8">
	<title>
	&fmldevel; Features
	</title>

<para>
    <itemizedlist>


    <listitem>
	<para>
	&fml8; configuration file format is changed to
	<link linkend="internal.config.cf">
	new Postfix style format configuration files (.cf files).
	</link>
	</para>
    </listitem>


    <listitem>
	<para>
	usage of CUI is almost same as &fml4; 
	(it is same as could as possible).
	You can use CUI 
	<link linkend="usage.onhost">
	(makefml and fml command)
	</link>
	<screen>
	to create/remove an ML,
	to add/remove/change an addresse of ML members,
	to add/remove/change an address of remote administrators,
	to see log and member list,
	et.al.
	</screen>
	Makefml and fml are same programs except for argument order.
	</para>

	<para>
	See
        <link linkend="changes.cui">
        <xref linkend="changes.cui">
        </link>
	on the CUI usage difference between &fml4; and &fml8;.
	</para>

    </listitem>

    <listitem>
	<para>
	GUI (CGI) interface.
	The functions are a subset of CUI ones.
	<screen>
	to create/remove an ML,
	to add/remove/change an address of ML members,
	to add/remove/change an address of remote administrators,
	to see log and member list,
	et.al.
	</screen>
	The configuration file editing is incomplete yet.
	</para>
    </listitem>


    <listitem>
	<para>
	article delivery,
	header rewriting
	and
	several filters (
	corresponding with &fml4;'s envelope filter and content filter
	).
	</para>
    </listitem>

    <listitem>
	<para>
	command mail for users.
	<screen>
	to add/remove/change the address,
	get article summary, 
	get old articles,
	et.al.
	</screen>
	</para>
    </listitem>

    <listitem>
	<para>
	command mail (admin command mail) for remote administratoin by mail.
	<screen>
	to add/remove/change an addresse of ML members,
	to add/remove/change an address of remote administrators,
	to see log and member list,
	et.al.
	</screen>
	</para>
    </listitem>

    <listitem>
	<para>
	automatic analyzer of error messages.
	</para>
    </listitem>


    <listitem>
	<para>
	IPv6 ready.
	</para>
    </listitem>


    <listitem>
	<para>
	tiny thread track system.
	</para>
    </listitem>


    <listitem>
	<para>
	built-in module for HTML converter of articles.
	support automatic conversion by default.
	</para>

	<para>
	fmlhtmlify and makefml supports html conversion functions.
	</para>

    </listitem>


    <listitem>
	<para>
	main programs (fml/libexec):
	distribute command error
	</para>
    </listitem>


    <listitem>
	<para>
	utilities:
	fmladdr
	fmlailas
	fmlconf
	fmldoc
	makefml
	fml
	</para>
    </listitem>


    <listitem>
	<para>
	fml4 emulation:
	if you replace fml.pl of fml4 and fml.pl of fml8,
	fml8 runs as fml4.
	</para>
    </listitem>


    <listitem>
	<para>
	After 2004 summer, 
	the queueing system is implemanted.
	Currently the delivery system is queuing based.
	So, &fml8; is a MTA in fact.
	</para>
    </listitem>


    <listitem>
	<para>
	<link linkend="module.io.adapter">
	Abstracted IO layer
	</link>
	to get member list in unified way from 
		a file,
		/etc/group,
		NIS,
		SQL.
	</para>
    </listitem>
    </itemizedlist>
</para>

</sect1>


<!-- ======================================================== -->
<sect1 id="overview.fml8.install">
	<title>
	Installation Overview
	</title>


<important>

<para>
Run GNU autoconf firstly, and "make install". It is defact standard in
the world of open sources. This procedure is different from &fml4;
installation steps. It may confuse you if you are customered with
&fml4; But &fml8; is more friendly for package systems of free unix
like systems.
</para>

<para>
The main differece between &fml4; and &fml8; in installation is
"run programs as root",
"use of configure",
and 
editing of configuration files.
</para>

</important>


<para>
Suppose we create a new ML named elena ML (elena@fml.org).
The brief flow of installation is as follows:
</para>


<orderedlist>
   <listitem>
	<para>
	<link linkend="download">
	Download &fml8; source and extract it on the disk.
	</link>
	</para>
   </listitem>

   <listitem>
	<para>
	<link linkend="install.fml.unix">
	Install it by user root.
	</link>
	Firstly, change user to "root" and create the user "fml" and
	the group "fml".
	Secondly, run
	<link linkend="install.fml.unix.configure">
	configure
	</link>
	and "make install".
<screen>
% su root
# groupadd fml
# useradd -m -g fml fml
# ./configure
# make install
</screen>
	</para>

	<para>
	By default, 4.4 BSD style sub-directories are created. 
	The path is configurable at
	<link linkend="install.fml.unix.configure">
	configure options.
	</link>
	</para>

	<para>
	For example,
	main programs called from MTA 
	such as distribute, command, et.al. are installed into
	under /usr/local/libexec/fml/.
	Instead, utility programs are installed to /usr/local/bin.
	These are wrappers to call real programs at /usr/local/libexec/fml/.
	</para>

	<para>
	Perl modules are installed into
	/usr/local/lib/fml/$fml_version/
	and message templates et.al. are installed into
	/usr/local/share/fml/$fml_version/.	 
	</para>

   </listitem>


   <listitem>
	<para>
	<link linkend="guide.newml">
	Change user to "fml" and create elena ML for test.
	</link>
<screen>
% su fml
% makefml newml elena
</screen>
You can use "fml" instead of makefml. 
Both are same except for the argument order.
<screen>
% su fml
% fml elena newml
</screen>
	</para>
   </listitem>


   <listitem>
	<para>
	Set up MTA which runs &fml8; programs.
	</para>
   </listitem>


   <listitem>
	<para>
	<link linkend="test">
	Test.
	</link>
	</para>
   </listitem>


   <listitem>
	<para>
	<link linkend="guide.config.cf">
	Customize your ML.
	</link>
	</para>
   </listitem>

</orderedlist>

<warning>
<para>
Please install by user root.
It is different from &fml4;.
</para>
</warning>

</sect1>


<!-- ============================================================= -->
<sect1 id="guide.newml">
	<title>
	Create An ML
	</title>

<para>
Create an ML by CUI (makefml).
To create elena@fml.org ML (fml.org is the default domain), 
run
<screen>
% su fml
% makefml newml elena
</screen>
. See the section
<link linkend="setup.newml">
<xref linkend="setup.newml">
</link>
for more details.
</para>

<para>
In the virtual domain case, specify the whole address as an argument. 
For example, to create an ML elena@nuinui.net, run the following command:
<screen>
(At the first time)
% su root
% makefml newdomain nuinui.net /some/where/nuinui.net
% su fml
% makefml newml elena@nuinui.net

(After the 2nd time)
% su fml
% makefml newml elena@nuinui.net
</screen>
</para>


<warning>
<para>
See
<link linkend="virtualdomain">
<xref linkend="virtualdomain">
</link>
for the virtual domain case detail.
</para>
</warning>

</sect1>


<!-- ============================================================= -->
<sect1 id="guide.subscribe">
	<title>
	Add A New User To ML
	</title>

<para>
In the case of the default domain (fml.org)
<screen>
% su fml
% makefml subscribe elena rudo@nuinui.net
</screen>
in the case of virtual domain (nuinui.net), 
specify the whole adress of ML name.
<screen>
% su fml
% makefml subscribe elena@nuinui.net fukachan@sapporo.iij.ad.jp
</screen>
</para>

</sect1>


<!-- ============================================================= -->
<sect1 id="guide.unsubscribe">
	<title>
	Remove The User
	</title>

<para>
In the case of the default domain (fml.org), 
<screen>
% su fml
% makefml unsubscribe elena rudo@nuinui.net
</screen>
in the case of virtual domain (nuinui.net), 
specify the whole adress of ML name.
<screen>
% su fml
% makefml unsubscribe elena@nuinui.net fukachan@sapporo.iij.ad.jp
</screen>
</para>

</sect1>


<!-- ============================================================= -->
<sect1 id="guide.config.cf">
	<title>
	Customize
	</title>

<warning>
<para>
"makefml config" is a CUI to customize ML by menu form.
BUT YET INCOMPLETE.
</para>

<para>
Edit configuration files anyway now.
</para>

</warning>


<sect2>
	<title>
	Common Configurations On This Host
	</title>

<para>
/usr/local/etc/fml/site_default_config.cf
affects all ML on this host 
irrespective of the default domain or virtual domains.
<footnote>
<para>
This corresponds to site_force.ph of &fml4;.
</para>
</footnote>
</para>

<para>
The format of site_default_config.cf is same as config.cf described
below.
</para>

<para>
See
<link linkend="list.variables.by.alphabeticalorder">
list of all variables
</link>
for the configurable variation.
</para>

</sect2>


<sect2>
	<title>
	elena ML's Configuration
	</title>

<para>
To customize elena ML, edit /var/spool/ml/elena/config.cf file. The
format is
<link linkend="internal.config.cf">
 a little modified postfix style. 
</link>
It is different from both &fml4;'s config.ph and cf.
Add hooks after =cut line if needed.
</para>

<para>
Add or modify the least variables. If unspecified, the default value
is used.  The default value depends fml version and is defined at
<screen>
/usr/local/etc/fml/defaults/${fml_version}/default_config.cf
</screen>
</para>

<para>
The library path depends fml version.
<link linkend="bootloader">
This technique
</link>
ensures the easy upgrade/downgrade procedure.
This is a feature of &fml8;.
</para>

</sect2>

</sect1>

<!-- TABLE_OF_RECIPES -->
&sect.overview.fml.recipes;

</chapter>
