<!-- -*- mode:text coding:euc-jp -*-
   $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>
