<!--
   $FML: fml_on_unix.sgml,v 1.6 2003/11/24 04:44:57 fukachan Exp $
-->

<chapter id="install.fml.unix">
	<title>
	UNIX 上での fml のインストール
	</title>


<sect1 id="install.fml.unix.prepare">
	<title>
	インストールの準備
	</title>


<para>
configure を実行する(後述)前に、
適宜、ユーザ fml とグループ fml を作ってください。
<screen>
% su root
# groupadd fml
# useradd -g fml -m fml
</screen>
</para>

</sect1>


<!-- ====================================================== -->
<sect1 id="install.fml.unix.configure">
	<title>
	configure を実行する
	</title>


<para>
configure (GNU autoconf) および make を実行して下さい。
なお configure の前に、適宜、ユーザ fml とグループ fml を作ってください。
<screen>
% su root
# groupadd fml
# useradd -g fml -m fml
# ./configure
# make install
</screen>
configure が適宜、script 群や .cf 群の変数を書き換えます。
</para>

<para>
make install を実行すると、configure が生成する etc/fml/install.cf を
元に、configure が生成した install.pl (perl script) がインストールを行
ないます。
</para>

<para>
ユーザ名や基本的なディレクトリ構成などは configure の引数で変更して下さい。
変更できる変数は以下のものです。configure --help で表示されます。
fml では各ディレクトリにさらに /fml といった suffix をつけます。
変更できるのは、その直前の prefix 部分までです。
<screen>
変数            configure のデフォルト値    fml の利用するディレクトリ
--------------------------------------------------------
prefix          /usr/local                  /usr/local
exec_prefix     /usr/local
bindir          ${exec_prefix}/bin          /usr/local/bin
sbindir         ${exec_prefix}/sbin         /usr/local/sbin
libexecdir      ${exec_prefix}/libexec      /usr/local/libexec/fml
datadir         ${prefix}/share             /usr/local/share/fml
sysconfdir      ${prefix}/etc               /usr/local/etc/fml
sharedstatedir  ${prefix}/com
localstatedir   ${prefix}/var
libdir          ${exec_prefix}/lib          /usr/local/lib/fml
includedir      ${prefix}/include
oldincludedir   /usr/include
infodir         ${prefix}/info
mandir          ${prefix}/man
</screen>
そして、これらの変数も configure の引数で上書きすることができます。
<screen>
fmlconfdir      $sysconfidr/fml             /usr/local/etc/fml        
mlspooldir      /var/spool/ml               /var/spool/ml
fml_owner       fml                         fml
fml_group       fml                         fml
default_domain  推測する                    推測する
</screen>
これらのオプションは
<screen>
configure --help 
</screen>
で表示されます。
<screen>
  --without-warning       run perl as perl without -w
  --with-fmlconfdir=DIR   use DIR instead of SYSCONFDIR/fml
  --with-mlspooldir=DIR   use DIR instead of /var/spool/ml
  --with-fml-owner=USER   use USER instead of fml
  --with-fml-group=GROUP  use GROUP instead of fml
  --with-default-domain=DOMAIN  use DOMAIN as the ML domain
</screen>

</para>


<sect2>
	<title>
	例: configure の実行
	</title>

<para>
例: NetBSD は /usr/pkg 以下だね 
<screen>
% ./configure --prefix=/usr/pkg
</screen>
</para>


<para>
例: FreeBSD は全部 /usr/local 以下でいい？
<screen>
% ./configure
</screen>
</para>

<para>
例:	main.cf の置き場所として
	/etc/fml を使うなら、こうする(Debian だとこうするべし？)。
<screen>
# ./configure --with-fmlconfdir=/etc/fml
loading cache ./config.cache
checking for perl... (cached) perl
checking for perl... (cached) /usr/local/bin/perl
checking whether optional useful commands are available or not
checking for cksum... (cached) /usr/bin/cksum
checking for md5... (cached) /usr/bin/md5
checking for ls... (cached) /bin/ls
checking for tar... (cached) /usr/bin/tar
checking for gzip... (cached) /usr/bin/gzip
checking for zcat... (cached) /usr/bin/zcat
checking for gunzip... (cached) /usr/bin/gunzip
checking for lha... (cached) /usr/pkg/bin/lha
checking for ish... no
checking for bzip2... (cached) /usr/bin/bzip2
checking for bunzip2... (cached) /usr/bin/bunzip2
checking for uuencode... (cached) /usr/bin/uuencode
checking for compress... (cached) /usr/bin/compress
checking for sendmail... (cached) /usr/sbin/sendmail
checking for newaliases... (cached) /usr/bin/newaliases
checking for postfix... (cached) /usr/sbin/postfix
checking for postalias... (cached) /usr/sbin/postalias
checking for postconf... (cached) /usr/sbin/postconf
checking for postmap... (cached) /usr/sbin/postmap
checking for nkf... (cached) /usr/pkg/bin/nkf
checking for kakasi... no
checking for namazu... no
checking for pgp... (cached) /usr/pkg/bin/pgp
checking for pgp5... no
checking for pgpe... no
checking for pgpk... no
checking for pgps... no
checking for pgpv... no
checking for gpg... no
checking for less... (cached) /usr/bin/less
checking for more... (cached) /usr/bin/more
checking for w3m... (cached) /usr/pkg/bin/w3m
updating cache ./config.cache
creating ./config.status
creating config.sh
creating fml/etc/main.cf
creating fml/etc/default_config.cf.ja
creating fml/etc/site_default_config.cf
creating fml/libexec/loader
creating fml/bin/fmlalias
creating fml/bin/fmlconf
creating fml/bin/fmldoc
creating fml/bin/fmlhtmlify
creating fml/bin/fmlsch
creating fml/bin/fmlthread
creating fml/bin/fmlspool
creating fml/bin/makefml
enabled perl -w

fml has been configure with the following options:

                 prefix: /usr/local
            exec_prefix: ${prefix}
                 bindir: ${exec_prefix}/bin
                sbindir: ${exec_prefix}/sbin
                lib_dir: ${exec_prefix}/lib
            libexec_dir: ${exec_prefix}/libexec
                 mandir: ${prefix}/man
                datadir: ${prefix}/share

      fml process owner: fml
      fml process group: fml
             fmlconfdir: /etc/fml
             mlspooldir: /var/spool/ml
         default domain: home.fml.org

Now you must run "make install".
</screen>
</para>

</sect2>

</sect1>


<!-- ====================================================== -->
<!--
   XXX-TODO 各ディレクトリの役割は別ファイルへ？
-->
<sect1>
	<title>
	補足: 各ディレクトリの役割
	</title>

<para>
それぞれのディレクトリの役割は次の通りです。
なお、デフォルトでは /usr/local 以下にインストールされます。
</para>

<para>
  <table>
    	<title>
	ディレクトリの構造
	</title>

    <tgroup cols=2>

      <thead>
        <row>
          <entry> ディレクトリ 		</entry>
          <entry> 説明			</entry>
        </row>
      </thead>

      <tbody>
        <row>
          <entry> /usr/local/etc/fml	</entry>
          <entry>
	基本設定ファイルを置く場所。
	&fml4; の /usr/local/fml/.fml や default_config.ph 相当を置く場所。
	/usr/local/etc/fml/main.cf では、
	バージョンやライブラリの場所(ディレクトリ)などを指定する。
          </entry>
        </row>

        <row>
          <entry> /usr/local/libexec/fml 		</entry>
          <entry>
	実行ファイル ( &fml4; の /usr/local/fml )
	  </entry>
        </row>

        <row>
          <entry>
		/usr/local/lib/fml
	  </entry>
          <entry>
	perl module 群を置く場所 ( &fml4; の /usr/local/fml )
	  </entry>
        </row>

        <row>
          <entry>
		/usr/local/share/fml
	  </entry>
          <entry>
	メッセージなどのテンプレートを置く( &fml4; の 
		/usr/local/fml/messages/ 相当)。
	この下に言語依存のサブディレクトリが作られます。
	  </entry>
        </row>

        <row>
          <entry>
		/var/spool/ml
	  </entry>
          <entry>
		デフォルトドメインのＭＬ群のトップディレクトリ。
		&fml4; と同じ目的に使われます。

		注意: /var/spool/ml のオーナは configure で指定した
		owner 変数(デフォルトはユーザ fml)に設定されます。

		なお、ドメインごとに別の prefix を用意して下さい。
		たとえば fml.org 用は /var/spool/ml で、
		nuinui.net 用には /var/spool/nuinui.net などのように。

		また、バーチャルドメインについて、くわしくは
		<link linkend="virtualdomain">
		<xref linkend="virtualdomain">
		</link>
		を参照して下さい。
	  </entry>
        </row>
      </tbody>

    </tgroup>
  </table>
</para>
</sect1>


<!-- ====================================================== -->
<sect1 id="install.fml.unix.makeinstall">
	<title>
	fml のインストール: make install
	</title>

<para>
configure を実行後、ユーザ root になり、make install を実行して下さい。 
<screen>
% su root
# make install
</screen>
</para>

<warning>
<para>
configure はユーザ root で実行する必要はありませんが、
make install はユーザ root で実行して下さい。
間違えないように、configure も root で実行するほうがいいかもね。
<screen>
% su root
# ./configure
# make install
</screen>
</para>
</warning>

</sect1>


<sect1 id="install.fml.unix.edit.main.cf">
	<title>
	main.cf を編集する
	</title>

<para>
必要なら /usr/local/etc/fml/main.cf を編集して下さい。

configure が、あなたの環境に合わせて main.cf を書換えしているはずなの
でconfigure のオプション指定が正しければ、編集の必要は、まずないです。
</para>

<para>
mani.cf は大枠の最も基本的な設定です。より細かな設定、たとえばサイト共
通の fml の動作指定などは site_default_config.cf の役割です。各ＭＬ固
有の設定は、各ＭＬのホームディレクトリにあるconfig.cfファイルです。
</para>

<!-- main.cf の見本 -->
&sect.main.cf;

</sect1>


<sect1 id="install.fml.unix.edit.site.default.config.cf">
	<title>
	site_default_config.cf を編集する (オプショナル)
	</title>

<para>
そのホスト共通の設定ファイルがあります。
/usr/local/etc/fml/site_default_config.cf 
<footnote>
<para>
これは &fml4; の site_force.ph に相当するものです。
</para>
</footnote>
です。必要に応じて編集してください。
</para>

<para>
もちろん、この設定より各ＭＬの設定(例: /var/spool/ml/elena/config.cf)
が優先されます。
</para>

<para>
デフォルトでは&fml4;兼、見本として:)
subject のタグをつけない設定とフィルタ関連の設定だけが入っています。
<screen>
# $FML: fml_on_unix.sgml,v 1.6 2003/11/24 04:44:57 fukachan Exp $
#
#               site default_config.cf EXAMPLE
#
# fml-devel loads .cf files in this order for elena ML.
#      1. ${prefix}/etc/fml/defaults/$VERSION/default_config.cf
#      2. ${prefix}/etc/fml/site_default_config.cf
#      3. ${prefix}/etc/fml/domains/$DOMAIN/default_config.cf
#      4. /tmp/dir/elena/config.cf
#
# This file overrides the default "default_config.cf" configurations
# in the following way.
#

# We want to disable the subject tag in articles by default.
article_header_rewrite_rules	-=	rewrite_article_subject_tag

# mime based comonent filter
use_mime_component_filter	=	yes


# [site specific options]
#   Example:
#	key  = value
#	key += value
#	key -= value


=cut

#
# you can write hooks here after.
#   Example:
#	$distribute_run_start_hook = q{ ... };
</screen>
</para>

</sect1>


<sect1>
	<title>
	フィルタをどうするか？
	</title>

<para>
デフォルトではすべてのフィルタが有効です。
&fml4; の推奨設定に相当しています。
</para>

<para>
まぁフィルタのかけすぎという見解もあるかもしれませんが、
デフォルトは厳しい方にしてあります。
</para>

<para>
フィルタがかかっているのはよいのですが、mime component filter のデフォ
ルトをどうすれば良いのかは基準が曖昧です。デフォルトではＭＬへの投稿が
許されるのは text/plain のメールのみとしてあります。これで text/html 
な惚けメールも、添付ファイルで送られてくるウィルスもデフォルトでは通り
ません。
</para>

<para>
(すべてのＭＬで)
 mime component filter を無効にするには
site_default_config.cf で
<screen>
use_mime_component_filter	=	no
</screen>
としてください。
</para>

<para>
mime component filter を有効にしたいが、
ルールをカスタマイズしたいという場合は
site_default_config.cf は
<screen>
use_mime_component_filter	=	yes
</screen>
のままにして、
/usr/local/etc/fml/mime_component_filter 
をカスタマイズしてください。
</para>

</sect1>


<sect1 id="install.virtual">
	<title>
	バーチャルドメインの場合
	</title>

<para>
そのドメインでのＭＬを作る前に、newdomain コマンドで 
ml_home_prefix_maps に利用したいドメインと ml_home_prefix の対応関係を
定義してください。
newdomain コマンドについては
<link linkend="setup.newml">
「ＭＬの作成」
</link>
の節で後述します。
</para>

<warning>
<para>
/usr/local/etc/fml/main.cf の編集は必要ありません。
</para>

<para>
site_default_config.cf はドメインに関わらず適用されることに注意してく
ださい。バーチャルドメインにも適用されます。
</para>
</warning>

</sect1>


<!-- メールサーバの設定 -->
&sect.install.postfix;
&sect.install.qmail;


</chapter>
