<!--
   $FML: fml.sgml,v 1.13 2008/08/19 07:11:02 fukachan Exp $
-->


<chapter id="overview.fml">
	<title>
	&fml8; の概要
	</title>


<para>
なお、&fml4; と &fml8; の相違点についての詳細は、
<link linkend="changes">
<xref linkend="changes">
</link>
を参照して下さい。
</para>


<!-- ======================================================== -->
<sect1 id="overview.fml8">
	<title>
	&fml8; で出来ること
	</title>

<para>
&fml4; の再実装にあたっての山場は越えたと思います。
メニュー関連項目以外は RC (Release Candidate) の気分です。
</para>

<para>
    <itemizedlist>


    <listitem>
	<para>
	設定ファイル形式が新しくなりました。
	今度は
	<link linkend="internal.config.cf">
	Postfix 風の設定ファイル
	</link>
	です。
	</para>
    </listitem>


    <listitem>
	<para>
	<link linkend="usage.onhost">
	シェル上でのコマンド(makefml なしいは fml)による操作
	</link>
	は &fml4; と同様です:
		ＭＬの作成/削除、
		メンバーの登録/削除/変更(chaddr)、
		リモート管理者の登録/削除、
		ログを見る、
		メンバーリストを見る、
		他。		
	</para>

	<para>
	CUI の使い方の相違点については
	<link linkend="changes.cui">
	『<xref linkend="changes.cui">』
	</link>
	を参照して下さい。
	なお、CUI による設定変更は、まだ予備的な段階ですが、動きます。
	</para>
    </listitem>


    <listitem>
	<para>
	GUI (CGI) による操作:
		ＭＬの作成/削除、
		メンバーの登録/削除/変更(chaddr)、
		リモート管理者の登録/削除、
		ログを見る、
		メンバーリストを見る。
		設定ファイルの編集機能が実装途中です。
	</para>
    </listitem>


    <listitem>
	<para>
	配送、
	ヘッダの書き換え、
	フィルタ( 4.0 の Envelope Filter と Content Filter に相当するもの )。
	</para>
    </listitem>

    <listitem>

	<para>
	<link linkend="usage.user">
	コマンドメール(一般ユーザ)
	</link>
	メンバーの登録/削除/変更(chaddr)、
	サマリを見る、
	過去の記事を取り寄せる。
	</para>
    </listitem>


    <listitem>
	<para>
	コマンドメール(リモート管理者):
		メンバーの登録/削除/変更(chaddr)、
		リモート管理者の登録/削除、
		ログを見る。
	</para>
    </listitem>


    <listitem>
	<para>
	<link linkend="error.internal">
	エラーメールの自動解析
	</link>
	、エラーになるアドレスの自動削除。
	</para>
    </listitem>


    <listitem>
	<para>
	SPAM メールの隔離 (2008/08/17 以降)
	</para>
    </listitem>


    <listitem>
	<para>
	IPv6 による配送。
	</para>
    </listitem>


    <listitem>
	<para>
	スレッド追跡システム(CUI と CGI を含む):
	一度、作ったのですが、最初のバージョンは削除され、
	2004/03 に総書き直しされました。
	</para>
    </listitem>


    <listitem>
	<para>
	記事の HTML 化(デフォルトで HTML 版も作る):
	デフォルトで作っています。別途、
	fmlhtmlify および makefml に HTML 化コマンドもあります。
	</para>
    </listitem>


    <listitem>
	<para>
	MTA が起動するメインのプログラム:
	distribute command error
	</para>
    </listitem>


    <listitem>
	<para>
	管理を支援するユーティリティ:
	fmladdr
	fmlailas
	fmlconf
	fmldoc
	makefml
	fml
	</para>
    </listitem>


    <listitem>
	<para>
	&fml4; エミュレーション: &fml4; の fml.pl と &fml8; の fml.pl 
	を入れ換えるだけで &fml8; に移行できるようにした。
	</para>

	<para>
	注意: ただし、代表的な機能だけで、
	全機能に対する互換性があるわけではありません。
	</para>
    </listitem>


    <listitem>
	<para>
	2004 夏以降: 配送キュー管理システムにより再送処理。
	事実上 &fml8; は MTA です。
	</para>
    </listitem>


    <listitem>
	<para>
	<link linkend="module.io.adapter">
	抽象化 IO 層
	</link>
	メンバーリストなどの取り扱いにおいて、
	ファイル、/etc/group、 NIS、MySQL、PostgreSQL、LDAP などを
	同列に扱います(設定ファイルに追加設定は必要)。
	</para>
    </listitem>
    </itemizedlist>
</para>

</sect1>


<!-- ======================================================== -->
<sect1 id="overview.fml8.install">
	<title>
	インストール作業の概略
	</title>


<important>

<para>
インスール方法は GNU autoconf を使うデファクトスタンダード(configure 
そして make)なものとなっています。&fml4; にあまり似ていません。ですが、
OS 附属のパッケージシステムとの親和性は高くなりました。
</para>

<para>
&fml8; のインストールにおける主な注意点(&fml4;との相違点)は、
「root での作業」、
「configure の使用」、
「/usr/local/etc/fml/ 以下にあるファイルの編集」
です。
<footnote>
<para>
&fml8; の
/usr/local/etc/fml/
以下のファイル群は
&fml4; の
/usr/local/fml/.fml 以下のファイル群
および
/usr/local/etc/fml/site_default_config.ph
などに相当していますが、必ずしも一対一対応しているわけではありません。
</para>
</footnote>
</para>

</important>


<para>
さて、いつものように 
Unix 上で elena ＭＬ(elena@fml.org)を作成するケースを例にとりましょう。
インストールのおおまかな流れは次のようになります。
</para>


<orderedlist>
   <listitem>
	<para>
	<link linkend="download">
	ソースをダウンロードして、展開して下さい。
	</link>
	</para>
   </listitem>

   <listitem>
	<para>
	<link linkend="install.fml.unix">
	ユーザ root でインストールをします。
	</link>
	ユーザ root になったら、
	まずはユーザ fml とグループ fml を作成します。
	その後、
	<link linkend="install.fml.unix.configure">
	configure
	</link>
	および make install を実行して下さい。
<screen>
% su root
# groupadd fml
# useradd -m -g fml fml
# ./configure
# make install
</screen>
	</para>

	<para>
	デフォルトでは /usr/local ディレクトリ以下に
	4.4 BSD 風のサブディレクトリが作られます。
	ディレクトリパスは
	<link linkend="install.fml.unix.configure">
	configure のオプション
	</link>
	で変更可能です。
	</para>

	<para>
	デフォルトでは、インストーラはメインの MTA から呼ばれるプログラムを
	/usr/local/libexec/fml/ 以下へ、
	makefml や fmldoc など fml で始まるユーティリティプログラムを
	/usr/local/bin
	にインストールします。実は、これらは
	/usr/local/libexec/fml の下の実体を呼び出す単なる wrapper です。
	</para>
   </listitem>


   <listitem>
	<para>
	<link linkend="guide.newml">
	ユーザ fml で elena ＭＬを作る。
	</link>
<screen>
% su fml
% makefml newml elena
</screen>
もしくは fml コマンド(後述)を使って
<screen>
% su fml
% fml elena newml
</screen>
でも同じ意味です(注意: fml コマンドは &fml8; にしかありません)。
	</para>
   </listitem>


   <listitem>
	<para>
	MTA から &fml8; の配送プログラムなどを起動するために、
	MTA の設定をしてください。
	</para>
   </listitem>


   <listitem>
	<para>
	<link linkend="test">
	ＭＬ の動作テストをしてください。
	</link>
	</para>
   </listitem>


   <listitem>
	<para>
	<link linkend="guide.config.cf">
	ＭＬ のカスタマイズをしてください。
	</link>
	</para>
   </listitem>

</orderedlist>

<warning>
<para>
&fml4; と異なりユーザ root でインストール作業をすることに注意して下さい。
</para>
</warning>

</sect1>


<!-- ============================================================= -->
<sect1 id="guide.newml">
	<title>
	ＭＬを作る
	</title>

<para>
makefml コマンドを使ってＭＬを作成します。
デフォルト・ドメイン(例: fml.org)の場合、
makefml の使い方は &fml4; の時と同様です。
elena@fml.org ＭＬを作るには
<screen>
% su fml
% makefml newml elena
</screen>
とします。
詳しくは
<link linkend="setup.newml">
<xref linkend="setup.newml">
</link>
を参照してください。
</para>

<para>
一方、
<link linkend="virtualdomain">
バーチャルドメイン(nuinui.net)
</link>
の場合は、ＭＬのアドレスをすべて指定して下さい。
たとえば elena@nuinui.net を作る場合は、次のように実行します。
<screen>
初回
% su root
% makefml newdomain nuinui.net /some/where/nuinui.net
% su fml
% makefml newml elena@nuinui.net

二回目以降
% su fml
% makefml newml elena@nuinui.net
</screen>
</para>

<para>
最近では、一人で複数のドメインを持つことはありふれていますので、
全ＭＬをバーチャルドメインとして作成するほうが統一感のある運用方式になる
と思われます。
実際 fml.org 自身もそのような運用方式です。
</para>

<warning>
<para>
バーチャルドメイン(nuinui.net)のＭＬを作る場合、最初の一回目には、
「そのドメインを使う」ための宣言(おまじない?)が必要です。
くわしくは
<link linkend="virtualdomain">
<xref linkend="virtualdomain">
</link>
を参照して下さい。
</para>
</warning>

</sect1>


<!-- ============================================================= -->
<sect1 id="guide.subscribe">
	<title>
	ＭＬのメンバーを登録する
	</title>

<para>
デフォルトのドメイン(例: fml.org)の場合は、
<screen>
% su fml
% makefml subscribe elena rudo@nuinui.net
</screen>
でＯＫです(elena だけでＯＫ、つまり @fml.org なしでもＯＫ)。
一方、バーチャルドメイン(nuinui.net)の場合は、
ＭＬのアドレスをすべて指定して下さい。
<screen>
% su fml
% makefml subscribe elena@nuinui.net fukachan@sapporo.iij.ad.jp
</screen>
</para>

</sect1>


<!-- ============================================================= -->
<sect1 id="guide.unsubscribe">
	<title>
	ＭＬのメンバーから削除する
	</title>

<para>
デフォルトのドメイン(例: fml.org)の場合は、
<screen>
% su fml
% makefml unsubscribe elena rudo@nuinui.net
</screen>
でかまいません。
一方、バーチャルドメイン(nuinui.net)の場合は、
アドレスをドメインまで含めてすべて指定して下さい。
<screen>
% su fml
% makefml unsubscribe elena@nuinui.net fukachan@sapporo.iij.ad.jp
</screen>
</para>

</sect1>


<!-- ============================================================= -->
<sect1 id="guide.config.cf">
	<title>
	ＭＬ設定のカスタマイズ
	</title>

<warning>
<para>
makefml config は実装途中で、まだイマイチです。ごめんなさい。
いまは、まだ config.cf ファイルを手動で編集して下さい。
</para>
</warning>


<sect2>
	<title>
	そのホスト共通の設定
	</title>

<para>
/usr/local/etc/fml/site_default_config.cf
は、このホストで動く &fml8; すべてに影響を与えます。
<footnote>
<para>
これは &fml4; の site_init.ph に相当するものです。
</para>

<para>
&fml4; では次のように設定ファイルを読み込んでいきます。
<screen>
InitConfig {
   SetDefaults { ... };
   LoadConfig {
      include default_config.ph;
      include site_init.ph;
      include config.ph;
      include site_force.ph;
      include sitedef.ph;
   }
}
</screen>
&fml8; では
<screen>
/usr/local/etc/fml/$fml_version/default_config.cf
/usr/local/etc/fml/site_default_config.cf
/usr/local/etc/fml/domains/$DOMAIN/default_config.cf
/var/spool/ml/elena/config.cf
</screen>
のようになっています。
site_force.ph がありませんが、困ってないので、今のところ作る予定なし。
</para>

</footnote>
</para>

<para>
site_default_config.cf のフォーマットは、config.cf (後述)と同様で、
指定できる変数も config.cf と同じです。
<link linkend="list.variables.by.alphabeticalorder">
全変数のリスト
</link>
も参照して下さい。
</para>

</sect2>


<sect2>
	<title>
	elena ＭＬの設定
	</title>

<para>
elena ＭＬの設定のカスタマイズは 
/var/spool/ml/elena/config.cf
を編集することで行ないます。
<link linkend="internal.config.cf">
config.cf のフォーマットは Postfix の設定ファイル
</link>
とかなり似ています
(&fml4; の config.ph よりは &fml4; の cf にやや近いですが、
フォーマットが違うことに変わりはない)。
</para>

<para>
&fml8; で HOOK (perl script)を書く場合は、
(perl script ファイルのように) 
/var/spool/ml/elena/config.cf 
ファイルの =cut 行以下に書いて下さい。
</para>

<para>
=cut 行より上には設定( 変数 = 値 )を書いて下さい。
適宜、必要な項目だけを追加して下さい。
指定しない場合はデフォルト値が使われます。
デフォルト値はインストールしたバージョンに依存しており、
<screen>
/usr/local/etc/fml/defaults/バージョン番号/default_config.cf
</screen>
というファイル中で定義されています。
これは perl のライブラリが /usr/local/lib/perl/5.00503/ のように
バージョン番号付のディレクトリに置かれるのと少し似ています。
</para>

<para>
また、ライブラリなどのインストール先も fml のバージョンごとに
別のディレクトリになっていることに注意して下さい。
<link linkend="bootloader">
この仕組み
</link>
のおかげでアップグレードしても元に戻すのが簡単です。
これは &fml8; の特徴です。
</para>

</sect2>

</sect1>

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

</chapter>
