<!--
   $FML: fml.sgml,v 1.10 2005/08/03 13:45:11 fukachan Exp $
-->


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


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


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

<para>
&fml4; の再実装にあたっての山場は越えたと思います。
あとは、こまごま、いろいろです。
</para>

<para>
    <itemizedlist>


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


    <listitem>
	<para>
	<link linkend="usage.onhost">
	makefml によるコマンド操作
	</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>
	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 夏以降: 配送キュー管理システムにより再送処理。
	事実上 MTA の役割をしています。
	</para>
    </listitem>


    <listitem>
	<para>
	<link linkend="module.io.adapter">
	抽象化 IO 層
	</link>
	メンバーファイルをファイル、/etc/group, NIS, MySQL
	から取り出すことができます。
	</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>

<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>
で構いません。
一方、バーチャルドメイン(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
は、このホストで動く fml すべてに影響を与えます。
<footnote>
<para>
これは &fml4; の 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">
フォーマットは postfix の設定ファイル
</link>
とかなり似ています(&fml4; の config.ph よりは cf にやや近いですが、フォー
マットが違うことに変わりはない)。
HOOK (perl script)を書く場合は、
(perl script ファイルのように) =cut より後に書いて下さい。
</para>

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

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

</sect2>

</sect1>

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

</chapter>
