	fml インストールガイド (Unixの場合)
	--- fml Mailing List Server Package ---

				深町 賢一

[ガイド]

   感じを掴むためにはまずここを最初に参照して下さい。
	http://www.fml.org/fml/Japanese/basic_setup/

   さまざまなテーマごとに分類されたチュートリアルのページ
   細かい設定などはここを参照して下さい。
	http://www.fml.org/fml/Japanese/tutorial.html

   ホームページ
	http://www.fml.org/fml/

   動作テスト、代表的なトラブルの事例とその解決方法

    うまくいかない場合には、以下のチェックリストに沿って設定を確認し、
    www.fml.org のサーチエンジンで過去の事例を検索して下さい。
	http://www.fml.org/fml/CHECK_LIST/

    なお、過去数年間の代表的なトラブル事例は書籍「fml バイブル」（オラ
    イリージャパン刊）中に集約されています。
	http://www.fml.org/fml/treking_guide.ja.html

[用語]
   以下のドキュメント中ではメーリングリストを ML と略しています。
   % はシェルのプロンプトです。
   # は root のシェルのプロンプトです。

------------------------------------------------------------
1	簡単なインストールの流れ

2	ML サーバとは?

3	インストール
3.1	どのユーザで fml を走らせるのか？
3.2	OS の判定
3.3	運用ポリシー(特に管理者が複数人の場合について)
3.4	インストーラ(makefml)を走らせる
3.5	インストーラからの質問
3.6	/usr や /var を直接いじれない場合（例えばプロバイダ…）
3.7	設定の保存
3.8	CGIからmakefmlを呼び出す (4.0 new)

4	fml の扱い方の概要について

5	ML を作る
5.1	ML を作る時
5.2	ML を削除する時
5.3	まとめ送り
5.4	fmlserv (Listserv もしくは majordomo的インターフェイス)

6	ML へのユーザの登録・削除
6.1	ML へのユーザの登録・削除の場合の注意
6.2	ユーザを ML に加える場合
6.3	ユーザをMLから削除する場合

7	makefml のメニューで  ML の基本的な設定変更をする
7.1	TOP メニュー
7.2	メンバーの登録の仕方(手動/自動)とアクセス制御のポリシー
7.3	自動登録の方式の選択
7.4	コマンドとして使うアドレスの設定
7.5	リモート管理
7.6	ヘッダ関連の設定
7.7	その他の設定
7.8	セキュリティ関係

8	リモート管理するユーザの登録について
8.1	リモート管理の権限をもつユーザを ML に加える場合
8.2	リモート管理の権限をもつユーザを ML から削除する場合
8.3	リモート管理の権限をもつユーザのパスワードの設定・変更

9	設定ファイルの編集について
9.1	設定ファイル(cf と config.ph)についての注意 
9.2	cf ファイルと config.ph のフォーマット
9.3	makefml config-template; configの大元のファイルをメニューで編集
9.4	template (生成されるファイルの元) の直接編集

10	動作のテスト, デバッグについて

Appendix A	典型的なエラー

Appendix B	コマンド用のアドレスについての捕捉 

Appendix C	POP3 を利用してのML(sendmail等を経由して起動しないorできない場合)

Appendix D	HELPなどの取り寄せについてユーザに知らせる方法について

Appendix E	モデレータ

Appendix F	アップグレード時の注意 (fml 2.1 以前からの時)

Appendix G	セキュリティを強化する設定について
Appendix G.1	FML Advisories
------------------------------------------------------------


1	簡単なインストールの流れ

インストールの大まかな流れは次のようになります。詳しくは後述します。
バージョンの数字や作られるディレクトリについては適当に読み変えて下さい。
コマンドの動きは OS によって若干異なります。 OS のマニュアルを参照して
ください。

    ○ ソースを以下の URL からダウンロードする。
    % ftp ftp://ftp.fml.org/pub/fml/current/
    Connected to ftp.iij.ad.jp.
    220 ftp.iij.ad.jp FTP server ready.
    …略…
    ftp> get fml-3.0B-current-20000227.tar.gz
    …略…
    50% |*************************                         | 818 KB 00:40 ETA
    …略…
    226 Transfer complete.
    1656664 bytes received in 01:20 (20.02 KB/s)
    221 Goodbye.
    %
    
    ○ ソースを展開する。directoryができる。
    % gunzip fml-3.0B-current-20000227.tar.gz
    % tar xf fml-3.0B-current-20000227.tar
    
    ○ 作られたdirectoryに移る(名前はfml-バージョン-日付のようになる)。
    % cd fml-3.0B-current-20000227
    
    ○ インストール開始。インストールする場所等の質問に答える。
    % env RECOMMEND=yes perl makefml install
    …メッセージ省略…
    
    ○ fml自体のインストール自体は終了。
       この後 ML の作成/設定/メンバー登録等を行う。
    
    例: elena MLを作る。
    % /usr/local/fml/makefml newml elena
    …以下略…

2	ML サーバとは?

 ML サーバは本質的にフィルタリングをするものです。 ML 宛のメールが来た
ら配送プログラムから起動されいろいろな処理をした後、配送するべき(MLの)
メンバーリストを配送プログラムへ渡します。後は配送プログラムが配送を行
ないます。配送自体は ML サーバの役目ではありません。

[図]

あるホスト                                     ML サーバのマシン

 ML のメンバーからのメール
   |
   V                    fml を起動する
 MTA (e.g. sendmail)   ------------------>     
                                               fml <MLサーバ(ドライバ)>
 MTA (e.g. sendmail)   <-----------------      
 (配送プロセス)
   | | | 
   V V V
  ML のメンバ

配送プロセスは上図のように動きます。 ML サーバが普通のメールではなくあ
る命令( ML を辞める、過去の記事を読むなど)を含んだメールをうけた場合は、
それを実行して答えをリクエストした人へ配送します(コマンド)。

また上図からわかるとおり ML 宛のメールが来た時だけ ML サーバは起動され
ます。つまり"不定期"にです。 ML が盛り上がって一気に来る瞬間もあれば、
メールが流れない暇な時もあります。そのためメールの流量を気にする人はリ
アルタイムに ML の記事(メール)を読むより、例えば3時間に一度過去3時間の
メールをまとめて読む「まとめ送り」を好む人もいます。

まとめ送りの場合は"定期的に"まとめ送り(5.3)を実行するプログラ
ムが起動される必要があります。fmlは定期的に起動しなければならないプロ
グラム群はcronというオペレーティングシステムが提供する機能を使うことを
前提にしています。

3	インストール

以下の例では /usr/local/fml に実行ファイル /var/spool/ml の下に各 ML 
のディレクトリ(例: elena MLは/var/spool/ml/elena)などを作ることにします。

注意:	以下の例では /usr/local/fml と /var/spool/ml のオーナーは
	仮想ユーザ fml (後述)になります。意味がわからないなら、
	とりあえず以下のような呪文を実行してから make install して下さい
   例:
	% su
	ユーザ fml とグループ fml を作る (作り方はOSによって異なります)
	# groupadd fml
	# useradd -g fml fml

	ディレクトリを作っておきます。
	# mkdir /usr/local/fml /var/spool/ml
	# chown fml /usr/local/fml /var/spool/ml
	# chgrp fml /usr/local/fml /var/spool/ml

3.1	どのユーザで fml を走らせるのか？

ML の運用を特権ユーザでやるべきではありません。一般ユーザ(例えばML専用
のアカウントやあなたのアカウント等)でインストールおよび運用をして下さ
い。ML 用の特別な一般アカウント (e.g. fml 等) を作りその架空ユーザになっ
てインストール・設定を行うとよいでしょう。

「makefml install (FML 本体のインストール,後述) 自体は root で実行し、
他の人にはいじれないようにする」という運用ポリシーはありえます。しかし、
それ以外の操作、例えば makefml newml (MLの作成,後述)は一般ユーザで実行
して下さい。

3.2	OS の判定

makefml は自動的にOSを判定し必要なら調整を行ないます。もし使っているOS
が判定できなかったら -O オプションでタイプを強制できます。

	% makefml -O i386-unknown-OSTYPE install

OSによってはインストール情報が提供されていることもあります。チェックし
てみて下さい。例えば Debian Linux なら /usr/doc/fml/ の下というように

System V なマシンで"IPC はだめなので sendmail を exec するぜ"などの 
warning が出たら

	% makefml -O unknown-unknown-sysv install

を試してみる価値はあります(例: NEC EWS4800)。

3.3	運用ポリシー(特に管理者が複数人の場合について)

デフォルトでは fml は各MLの所有者にしかMLの記事などが見られないような
 permission でMLを作成します。あなたがインストールしようと思っている
マシンでMLを走らせる人(オーナー、所有者)は

	自分だけ?
	自分以外の人もMLを走らせる?

最初にその運用ポリシーを決めておいて下さい。自分一人しか使わないのであ
れば次のセクションへ進んで下さい。ここではML群の管理グループがある場合
について解説します。

fml はインストールの最初で『どういうポリシーで運用するか？』を聞くため
に次のような質問をします。

   Personal Use or ML-Admin-Group-Shared or fmlserv you use? 
   Personal, Group, Fmlserv (personal/group/fmlserv) [personal] 

それぞれの項目の意味は次の通りです。いずれかを選択して下さい。
権限が適当に設定されます。現代では通常 personal です。

personal 	自分一人しか使わない( ML 群のオーナーは自分だけ)場合。
		自分のアカウントないし ML 専用のアカウント fml などを使います。
		すべてのファイルやディレクトリはそのアカウントだけで読
		み書き可能です。fmlserv を使うならそのアカウントで走らせます。

group		 "特定多数"のオーナー達がいる場合でfmlservは"使わない"場合。
		ある group に属する人達は自由に ML を作成できます。
		各 ML はその ML の所有者だけが読み書きできます。
		/var/spool/ml が group writable 以外は personal と変わ
		りません。

fmlserv  	"特定多数"のオーナー達がいる場合でfmlservも"使う"場合。
		ある group に属する人達は自由に ML を作成できます。
		/var/spool/ml だけでなく一部のファイルは group の
		人なら誰でも読み書きできるようになります。
		これは fmlserv のために必要な設定です。
		ただ、設定ファイルは各 ML のオーナーだけが変更できます。

○ ２、３の事例

自分一人しか ML をいじらないのであれば単に自分が読み書きできれば十分
(personal タイプ)ですが、逆に複数の人が複数の ML を作る場合

	1. それぞれのアカウントで自由に作成することができる
	2. 常に fml というアカウントで必要な操作を行う

という２つの運用ポリシーが考えられます。

1. 自分だけなら "personal" 

2.  ML をリモートで管理する人などが複数いたりしても newml をしたり直接
ファイルをいじるなどの面倒を見るのがあなた一人ならやはり"personal"を選
択して下さい。

3. 複数の人がいてそれぞれのアカウントで自由に ML を作りたいという場合
は group です。その場合にさらに fmlserv も使うというのであれば fmlserv 
を選択して下さい。

○ グループIDについて

グループのデフォルトは fml です。例えば、 /etc/group に

	fml:*:32765:オーナー1,オーナー2
	(例えば、fml:*:32765:fukachan,hikari,elena のようにです)

のようにオーナー達のアカウント名を,で区切って書きます。
＃この数字(32765)に深い意味はありません。

○ MTAに関する注意

現在のMTAでは security のために通常 group writable (グループに入ってい
れば書き込みができる権限)は認めないようになっています。group 設定を使
わないのが望ましいですが、どうしても必要なら group writable を認めるよ
うなMTAの設定変更が必要になります。例えば sendmail.cf をいじったり、
recompile が必要です。設定は各OSやMTAによって変わります。詳しくはMTA附
属のドキュメントを読んで下さい。例えば sendmail.cf なら
DontBlameSendmail などの呪文のあたりを参照するなどになります。

JPCERT/CC の技術メモの中に中村素典先生による非常に良い sendmail 解説があ
るので困ったらここを読みましょう。

	http://www.jpcert.or.jp/ed/

   O DontBlameSendmail=GroupWritableDirPathSafe
   O DontBlameSendmail=GroupWritableIncludeFileSafe

などが必要です。オプションについては上記ドキュメントなどを参照してくだ
さい。

3.4	インストーラ(makefml)を走らせる

配布されているパッケージ(fml.*.tar.gz など)を展開すると、tar.gz を除い
た名前のディレクトリが作成されます。そこに、fml が壱セット入っています。
このディレクトリに移動して、

	perl makefml install

というコマンドを実行して下さい。
そのマシンの上に fml システム一式をインストールします。

ドキュメントをインストールしたくない場合は

	env MKDOC=no perl makefml install

として下さい。最近の UNIX なら env コマンドは普通あるはずです(POSIX に
あるから)。
    補足1: perl のパス名は通常自動探索です。
    もし、perl のパス名の書換えをしたい場合は、
    環境変数を指定して下さい。
    例えば、/usr/local/bin/perl5 にしたい場合は、
    
       % env _PATH_PERL=/usr/local/bin/perl5 perl makefml install
    
    補足2: インストール時はロックをします。ロックなしでインストールなら
    
    	perl makefml -U install

3.5	インストーラからの質問

makefml はインストール時に、以下のような項目を聞いて来ます。

   Personal Use or ML-Admin-Group-Shared or fmlserv you use? 
   Personal, Group, Fmlserv (personal/group/fmlserv) [personal ]

   DOMAIN NAME               [fml.org] 
   FQDN                      [beth.fml.org] 
   EXEC FILES DIRECTORY      [/usr/local/fml] 
   TOP LEVEL ML DIRECTORY    [/var/spool/ml] 

   Language (Japanese or English) [Japanese] 

   TimeZone (TZ: e.g. +0900, -0300) [+0900] 

それぞれ次のような意味です。適当に入れて下さい。単にEnter?(CR) を押す
と [] の中の値が自動的に設定されます。

   Personal Use or ML-Admin-Group-Shared or fmlserv you use? 
   Personal, Group, Fmlserv (personal/group/fmlserv) [personal] 

注意: 
	FQDN と DOMAIN NAME の設定は、あなたのドメインの運用方法に依存
	しています。デフォルト値は最も多いスタイルであろうと推測されて
	いるケースで、『ドメインに一つのマスターメールサーバがある」よ
	うな場合です。

	あなたのドメインの運用方法がこの方式とは限らないので、
	はっきりしない場合は、ネットワーク管理者に相談して下さい。

(詳細は前節参照)

   *** ここで、group もしくは fmlserv を定義した場合には group ID
   *** の入力を促されます。
   *** あらかじめ決めておいた group を入れて下さい(前節参照)。

    Please define the group (in /etc/group) ML Operators use
    Group of Mailing List Operators (fml or GID ([\w\d]+)) [fml] 

   DOMAIN NAME               [fml.org] 

	ドメイン名。
	メーリングリストのアドレスの @ から後ろで使う部分。
	いろいろなアドレスはデフォルトではこの値を使っています。
	もしアドレスにマシン名まで含めたものを使いたいならここで
	fake ですが FQDN を入れてしまって構いません。
	virtual domain の場合も同様にここで virtual domain 名を入れます。

   FQDN                      [beth.fml.org] 

	Fully Qualified Domain Name(マシンのインターネット上での完全名)

   EXEC FILES DIRECTORY      [/usr/local/fml] 

	実行ファイル等の FML system をインストールする場所。
	例えば、この値の場合 

		/usr/local/fml/fml.pl  (main executable file)
		/usr/local/fml/doc/    (document directory)

	等の場所にインストールされる。

   TOP LEVEL ML DIRECTORY    [/var/spool/ml] 

	ML(複数)はこの階層の"下"に作られる。例えば

	   Elena  ML を作る場合は /var/spool/ml/elena 
	   Mirei  ML を作る場合は /var/spool/ml/mirei

	といった具合に複数の ML がこの場所の下に作られていく。
	ここは各 ML ごとの設定ファイルや記事を保存する場所です。

   LANGUAGE                  [Japanese] 
	"makefml newml" (後述)の際に ML 用に作られるドキュメントの言語
	設定。インストールするマシンが .jp の場合[]の中つまりデフォー
	ルトは日本語になります。"Japanese" か "English" が選べます。

	「マシンは jp ドメインではないが日本人向け ML なので
	  help を日本語にするために Japanese としておく場合」
	などの使いわけを想定しています。

   TimeZone (TZ: e.g. +0900, -0300) [+0900] 

	文字どおり TIME ZONE (一応頑張ります)。 ちなみに日本は +0900 です

3.6	/usr や /var を直接いじれない場合（例えばプロバイダ…）

例えばprovider や大学の一般ユーザで

   /home の下だけならいじってよい。   
   /etc/aliases 等はマシンの管理者にいじってもらう。

というケースがありえます。その場合は

	/home/fukachan/fml に実行ファイル
	/home/fukachan/ml  に ML 群の階層

を作るといった形になるでしょう。

3.7	設定の保存

    Config Saved in [/usr/local/fml/.fml] 

設定したディレクトリ等の情報はこの場所に格納されます。次回以降 newml
(後述)する時などはいつもこの値が使われます。
＃つまり上で選んだ EXEC FILES DIRECTORYで指定した場所の下の .fml です。

3.8	CGIからmakefmlを呼び出す (4.0 new)

インストールについてのメモはこちらを参照して下さい。

	http://www.fml.org/fml/INSTALL_CGI/

4	fml の扱い方の概要について

(MLの管理者の作業として) MLの設定のカスタマイズやユーザの登録/削除など
はfml の動いているホストに入り、設定ファイルやメンバーリストを変更する
ことで行ないます。これがもっとも安全な方法でしょう。

設定ファイルの変更は直接手で編集するか makefml (使い方は後述)というCUI
で行なえます。fml 4.0 では CGI 経由でも行なえます。

「メールでfmlにコマンドを送り込み、ユーザの登録/削除などを行う」こと
もできます。ドキュメント中では『リモート管理』と呼ばれています。リモー
ト管理はデフォルトの動作ではありません。明示的にこの動作を許すように
設定を変更しなければいけません。 => 7.5

コマンドを送り込むことのできる人は(各 ML ごとに設定できる)パスワードを
知っている必要があります。認証をPGPで行うオプションもあります。 => 8

代表的な設定項目の変更はメニューで選択できます。=> 7

メンバーリストは手で書くか、makefml add/bye などを駆使して登録なりを行
ないます。=> 6

メニューにないような細かいパラメータの調整などは設定ファイルを編集する
必要があります。ファイルのフォーマットは => 9

一般ユーザの使うコマンドの詳細は help ファイルを見て下さい。
管理者用のコマンドは help-admin です。

カスタマイズ変数一覧は インストール先(/usr/local/fml)/cf/MANIFEST を見
て下さい。各変数の意味、実装上の理念、パラメータについての詳細等は
doc/Japanese/ のファイル群を適当なキーワードや変数名でサーチして見て下
さい。最新版の HTML 版ドキュメント全体へのサーチは 以下のURLで可能です。

	http://mikoto.sapporo.iij.ad.jp/cgi-bin/fml.ja/namazu.cgi

doc/Japanese/
	http://www.fml.org/fml/Japanese/tutorial.html

5	ML を作る

基本的な設定の変更やメンバー登録/削除などはコマンドで実行できます。
＃fml 2.1以前からのアップグレードの時は Appendix F も参照して下さい。

コマンドのシンタックスは次のようになります。

	makefml コマンド [引数]

5.1	ML を作る時

例: Elena ML を作る時は

	/usr/local/fml/makefml newml elena

を実行します。 ML のHOMEディレクトリ

	/var/spool/ml/elena

の下に include や aliases をはじめ、必要なサンプルが作成されます。
(sendmailの場合)見本の aliases ファイルを /etc/aliases に追加して 
newaliases したら終わりです。まとめ送りについては後述(5.3)。
＃その時 unsafe などのエラーがでたら？ → Appendix A

/var/spool/ml/elena がすでにある場合は上書きせず、エラーになるよ
うになっています。意図的に上書きするなら

	/usr/local/fml/makefml -F newml elena

を実行して下さい。

/var/spool/ml/etc/qmail/ には qmail 用の見本が作成されます。いくつかの
MTAについては別途解説のドキュメントがあります。そちらも見て下さい。

    sendmail	INSTALL_with_SENDMAIL (almost dummy :-)
    postfix		INSTALL_with_POSTFIX
    qmail		INSTALL_with_QMAIL
    exim		INSTALL_with_EXIM

最近のMTAは不正中継を防止するのがデフォルトだったりするので、配送する
ためには設定を変更する必要が必要なことが多々あります。詳細については
各MTAのマニュアルやFAQを読んで設定して下さい。

別の mirei MLを作りたい時は makefml newml mirei を実行するだけです。
/var/spool/ml/mirei の下に mirei MLの見本が作成されます。以下同様です。

作成される設定の見本は以下のようなものです。既にそれぞれの ML 用にカス
タマイズされています。

[ファイル]
	aliases		/etc/aliases にはりつける見本（出力されたものと同じ）
	include		include file 投稿するアドレスのためのもの
	include-ctl	include file コマンド用のアドレスのためのもの
	include-mead 	mead (エラーを解析してエラーを起こすアドレスを削
			除するプログラム)を使う時(デフォルトは使わない)

	cf		config.ph の元 (See 9)
	config.ph	メーリングリストの設定ファイル
			(config.ph については 9)

	guide		ガイド
	help		 ML やコマンドの使い方
	help-admin	リモート管理のためのコマンドの一覧
	objective	 ML の目的について
	welcome		自動登録時に返す「ようこそ…」の文面
	confirm		自動登録(confirmationモード)で使う文面
	crontab		vixie cron 用の定義ファイルの見本
	deny		メンバー以外からの投稿に拒否の旨を伝える

	fmlwrapper.c	C Wrapper
	fmlwrapper.h	fmlwrapper.c のヘッダファイル

5.2	ML を削除する時

	rm -fr /var/spool/ml/MLの名前

でファイル群を消し、そして /etc/aliases から該当する ML の部分を削って 
newaliases をかけます。

5.3	まとめ送り

まとめ送りはcronを利用します。NetBSD のような Vixie Cron がOS附属の
場合、elena ML の /var/spool/ml/elena/crontab が見本なので

	% crontab /var/spool/ml/elena/crontab 

とすればまとめ送りを設定できます。

	/var/spool/ml/etc/crontab/ユーザの名前

というファイルには各 ML オーナーが管理している ML 全部のまとめ送り項
目が入った見本です。これは ML を増やすたびに新しいまとめ送りの設定が
自動的に付け加えられます。cron の設定をいっきに更新するには makefml
newml で作成後、

	% crontab /var/spool/ml/etc/crontab/ユーザの名前

として下さい。USERNAME.master については後述。MLの数が増えてきたら

	% crontab /var/spool/ml/etc/crontab/ユーザの名前.master

とするのがよいでしょう(下の記述 => ”MLが多くなってきたら?”)。

Vixie Cron でない OS についてはマニュアルで cron を調べるとか 
doc/Japanese/ を見て下さい。

＊＊＊ MLが多くなってきたら? (ISPのシェルアカウントなどでは初めからこ
＊＊＊ のケースでしょう)
=
***** When a lot of ML run in ONE MACHINE? (must be always yes on ISP
***** accounts)?

(どんなプログラムにも当てはまる)当然のことですが、複数の人が複数の ML 
でまとめ送りをしている場合、全員が cron で毎時0分に msend を走らせる
とシステムの負荷が瞬間最大風速的に上がります。cron はいわれた通り走る
だけでチューニングはしてくれません。システム管理者が2、3分ずつずらして
走らせるなどの運用的なシステムチューニングに気を配ることが重要です。

makefml が作成する /var/spool/ml/etc/crontab/USERNAME.master は

   0 * * * * /usr/local/fml/bin/msend_master.sh -E /usr/local/fml -M /var/spool/ml

のような見本を作ります。msend_master.sh は /var/spool/ml (-M オプショ
ンで変更できる)の下にあるML全部に対してまとめ送り作業を順番に実行す
るためのスクリプトです。複数の ML のまとめ送りが一斉に走らないように
するために有効です。

別の例(crontab の設定で逃げる):

   0 * * * * /usr/local/fml/msend.pl /var/spool/ml/elena -q
   2 * * * * /usr/local/fml/msend.pl /var/spool/ml/mirei -q
   4 * * * * /usr/local/fml/msend.pl /var/spool/ml/anna  -q

5.4	fmlserv (Listserv もしくは majordomo的インターフェイス)

fmlserv は listserv スタイルのインターフェイスです。elena-ctl 宛に
『help』というコマンドを送るのではなく fmlserv に『help elena』を送る
ようなコマンド体系が使えるようになります。

fmlserv を作る時はpersonal/group/fmlservのタイプに関わらず

	/usr/local/fml/makefml fmlserv

を実行して下さい。各タイプにより permission は適宜変更されます。そして
設定見本が

	/var/spool/ml/fmlserv

に作られます。 ML を作る時と同様に aliases を設定して下さい。

コマンドは単にコマンドの書き方に ML 名が加わっているだけです。

	コマンド   ML  [fml標準のコマンドのオプションと引数]

というコマンド形式になります。単に一枚皮が被さっているだけなのでコマン
ドの動作はシンタックスを除いて、全く同じです。また各 ML の config.ph 
に従って実行されるので、各 ML のコマンド用のアドレスに送った時と同じ動
きをします。(config.ph のかきかたについては => 9)

○ 複数の ML オーナーがいる場合の注意

fmlserv は各 ML の記事が読めたりログファイルの読み書きができる必要があ
ります。複数人で fmlserv を使う場合に推奨できる方法はそのマシンに特別
のアカウント(たとえば fml という特別なアカウント)を作成し、fmlserv も
各 ML もそのユーザ(fml)の所有にして personal 扱いで作成する方法だとお
もいます。 ML の設定をいじる時はいちいち su fml (switch user) するわけ
です。もし複数の人が自分のアカウントで ML をいじりたいなら group
writable であるような設定が必要なことに注意して下さい。最初に fmlserv 
タイプを選択したらそのような設定で作成されます。

6	ML へのユーザの登録・削除

6.1	ML へのユーザの登録・削除の場合の注意

以下 ML へのユーザの登録・削除等について述べますが、もし ML サーバを作
るマシンと同じマシンから ML へメールを出すとすると、設定によっては

	From: username@domain 

ではなく 

	From: username 

のようなメールが ML サーバへ送られます。そのためにメンバーではないと判
定されたり「自動登録できない」などのエラーが発生します。それを避けるた
めにはとりあえず username とusername@domain の両方を登録して下さい。
常に @domain がつくべきですが、それはMTA/MUAの設定の問題です。

6.2	ユーザを ML に加える場合

Elena MLに fukachan@baycity.asia を加える。

   /usr/local/fml/makefml adduser elena fukachan@baycity.asia
   /usr/local/fml/makefml add elena fukachan@baycity.asia

6.3	ユーザをMLから削除する場合

Elena MLから fukachan@baycity.asia を消す。

   /usr/local/fml/makefml byeuser elena fukachan@baycity.asia
   /usr/local/fml/makefml bye elena fukachan@baycity.asia

7	makefml のメニューで  ML の基本的な設定変更をする

メニュー形式で基本的な設定の変更ができます。

   /usr/local/fml/makefml config ML名

例:   /usr/local/fml/makefml config elena

適当に答えて設定してみて下さい。makefml の終了時に cf と config.ph が
新しい設定で再生成されます。ここでは設定の概要について説明します。
(cf や config.ph については 9)

ちなみに3.0B#3以降では日本語表示が可能になりました。デフォルトでは英
語です。これはCGI化の副産物です:)

とりあえず環境変数MAKEFML_LANGで指定するとその文字コードで表示をします。
日本語訳がまだない部分は英語のままです。"jis" or "sjis" or "euc" から
選んで下さい。でもeucで表示させるのが一番無難です。

使っているshellの設定にしこんでおくには例えばこんな感じの設定を付け加
えておきます。

設定例: bourne shell系(sh, bash, ..)

~/.profile ~/.bash_profile (?)

  MAKEFML_LANG=euc; export MAKEFML_LANG

csh系(csh, tcsh, ... ): 

~/.cshrc ~/.tcshrc
  setenv MAKEFML_LANG euc

7.1	TOP メニュー

日本語表示は可能ですが、とりあえず英語版の説明ですすめます。
日本語表示メニューの方はなんとなくいいたいことが分かるでしょう:)

   === TOP MENU ===

   Mailing List Addresses
        FOR POST          elena@baycity.asia
        FOR COMMAND       elena-ctl@baycity.asia
   _______________________

   0    END		
   1    POLICY OF ACCESS (WHO CAN POST AND USE COMMANDS)

        [POST]
          PERMIT_POST_FROM                 moderator
          WHEN POST FROM NOT MEMBER        reject

        [COMMAND]                          
          PERMIT_COMMAND_FROM              members_only
          WHEN COMMAND FROM NOT MEMBER     reject

   2    REGISTRATION METHOD TYPE

        AUTO_REGISTRATION_TYPE             confirmation
        UNSUBSCRIBE_AUTH_TYPE              address

   3    SETTINGS AROUND COMMANDS
              address for command          elena-ctl@baycity.asia

   4    ML REMOTE ADMINISTRATION              
                     PERMIT ?              NO
                     AUTH_TYPE             crypt

   5    HEADER_CONFIG
        SUBJECT_TAG_TYPE                   
        REWRITE_TO                         To: is original (pass through)

   6    OPTION                             

   7    SECURITY & FILTERING                
   ************************************************************

   Which section? (0-7) [0] 

これがTOPメニューです。数字は選択(0 の END はその階層を抜けること)、
y/n と聞かれる場合は y(yes) か n(no) を入れて下さい。数字を選択し打込
むと下の階層に進み、同様の画面が出ます。

単語の意味は次のようなものです(なお、以下の日本語部分はここでの説明用
のもので、実際の画面には表示されません)。

○ サマリー

   Mailing List Addresses 
        FOR POST           ML への投稿用のアドレス
        FOR COMMAND       コマンド用のアドレス	

○ アクセス制御	(=> Section 7.2)

   1    POLICY OF ACCESS (WHO CAN POST AND USE COMMANDS)

FML 2.1 以降では投稿とコマンドそれぞれについて以下の項目が設定できます。

	・誰からの投稿を許すか？
		だれでもOK			anyone
		登録されているメンバーだけ	members_only
		モデレータだけ			moderator

	・もし登録されているメンバー以外から来た場合にはどうするか？
		拒否				reject
		自動登録			auto_subscribe
		無視(管理者へ報告だけする)	ignore

デフォルトはいずれも

	メンバーのみ(members_only) 投稿/コマンドの使用 が可能
	もしメンバー以外から来たら拒否(reject)

です。自動登録は"投稿がメンバーだけ"(members_only)のままauto_subscribe 
に設定して下さい。『もしメンバー以外からメールが来たら自動登録処理ルー
チン』へいって登録処理が行なわれます。

＊ 手動での登録の場合

デフォルトです。subscribe というリクエストには確認のメールがユーザに
送られます(自動登録の confirmation と同じ(後述))。参加の意志確認がとれ
たら管理者に「参加希望者がいる」旨が連絡されます。管理者はその後手動で
登録するなり、管理者コマンドを使うなりします。リモートで管理者コマンド
を使うには明示的にその機能を有効にする必要があります。
=> 7.5

＊ 自動登録の例(コマンド用のアドレスへメールを送ると自動登録モード):
   [COMMAND]

   3    PERMIT_COMMAND_FROM                members_only
   4    WHEN_COMMAND_FROM_NOT_MEMBER       auto_subscribe

つまり 2.1 以降では「投稿用のアドレスは拒否、コマンド用のアドレスで自
動登録」のような非対称な設定も「両方のアドレスで自動登録」のような設定
も可能です。

○ 自動登録の方式について (=> Section 7.3)

   2    REGISTRATION METHOD TYPE

        AUTO_REGISTRATION_TYPE             confirmation
        UNSUBSCRIBE_AUTH_TYPE              address

上述のアクセス制御で auto_subscribe を選んだ場合に自動登録の仕方を選ぶ
ことができます。デフォルト(confirmation)は 「確認」を求めるやり方です。

○ コマンド用のアドレスの方針 (=> Section 7.4)

   3    SETTINGS AROUND COMMANDS
              address for command          elena-ctl@baycity.asia

デフォルトでは listname に対し listname-ctl を使います。また、
	listname でコマンドも受け付けるようにする
	コマンドは fmlserv を使う
等の設定変更ができます(fmlservを使うにはfmlservの設定が別途必要です)。

○ リモート管理 (=> Section 7.5)

   4    ML REMOTE ADMINISTRATION              
                     PERMIT ?              NO
                     AUTH_TYPE             crypt

リモートで ML の設定を変更を可能にするか？(デフォルトは"できない")

                    AUTH_TYPE              crypt

リモート管理の場合の認証方式の設定。デフォルトはパスワード認証。

○ ヘッダの設定 (=> Section 7.6)

   例: Subject: につけるタグ(デフォルトはつけない) (後述)

   5    HEADER_CONFIG
        SUBJECT_TAG_TYPE                   
        REWRITE_TO                         To: is original (pass through)

○ その他のオプション (=> Section 7.7)
スプールの自動HTML化などのいくつかのオプショナル設定

   6    OPTION                             

○ セキュリティ向上のための特殊な機能を使う場合 (=> Section 7.8 Appendix G).

   7    SECURITY & FILTERING                

7.2	メンバーの登録の仕方(手動/自動)とアクセス制御のポリシー

  MENU => POLICY OF ACCESS (WHO CAN POST AND USE COMMANDS)

   WHO CAN POST AND COMMAND

   0    END             

   [POST]

   1    PERMIT_POST_FROM                   members_only
   2    WHEN_POST_FROM_NOT_MEMBER          reject

   [COMMAND]

   3    PERMIT_COMMAND_FROM                members_only
   4    WHEN_COMMAND_FROM_NOT_MEMBER       reject
   ************************************************************

      policy (0-4) [0] 

FML 2.1 以降では投稿とコマンドそれぞれについて以下の

	・誰からの投稿を許すか？
		だれでもOK			anyone
		登録されているメンバーだけ	members_only
		モデレータだけ			moderator

	・もし、登録されているメンバー以外から来た場合にはどうするか？
		拒否				reject
		自動登録			auto_subscribe
		無視(管理者へ報告だけする)	ignore

を設定できます。自動登録は"投稿がメンバーだけ"(members_only)の場合に

	もしメンバー以外から来たら自動登録 → auto_subscribe へ変更

することで行ないます。
注意: auto_regist は fml 3.0 でも使えますが、公式にはobsoleteです。
      fml 2.xの時代の互換性のために残っています。
	http://www.fml.org/fml/UPGRADE-3.0/index.html

自動登録の例(コマンド用のアドレスへメールを送ると自動登録モード):

   3    PERMIT_COMMAND_FROM                members_only
   4    WHEN_COMMAND_FROM_NOT_MEMBER       auto_subscribe

画面のそれぞれの行は

   1    PERMIT_POST_FROM               誰が投稿して良いのか？
   2    WHEN_POST_FROM_NOT_MEMBER      メンバー以外からメールが来た時？
   3    PERMIT_COMMAND_FROM            誰がコマンドを使えるのか？
   4    WHEN_COMMAND_FROM_NOT_MEMBER   メンバー以外からコマンド要請が来た時？

という意味です。例えば 1 を選択すると

   ************************************************************
   ADDRESSES FOR POST                  elena@baycity.asia
   PERMIT_POST_FROM                   members_only

   0    END
   1    members_only
   2    anyone
   3    moderator
   ************************************************************

         Permit post from  (0-3) [0] 

という画面に移ります。ここで1〜3を選択して下さい。以下同様です。

○ ポストできる人は制限したいが、配送される人は自動登録したい場合

    $REJECT_COMMAND_HANDLER には特殊な auto_asymmetric_regist という値があ
    ります。これは配送と認証のリストを非対称に使う時に使います。ただし 
    listname-ctl (e.g. elena-ctl) を使うことを前提としています。
    これは情報を一方的に送りつけるタイプのMLを作る際に便利でしょう。
    しかし投稿についてはFrom認証でしかないので、さらにセキュリティレベルを
    上げるためにはモデレータやPGPの使用を考えるべきかもしれません。

	elena/actives	MLの配送のリスト(自動登録に使う)
	elena/members	MLの認証に使うリスト(手動登録)
			(MLに投稿できる人のリスト)

○ 注意: $REJECT_ADDR について

    どの場合(anyone, members_only, moderator)でも$REJECT_ADDR という変数が
    優先されそこで定義されているアカウントからのメールは拒否されます。
    $REJECT_ADDR は root や MAILER-DAEMON などのシステム用のアカウントや明
    らかに一般ユーザでないアドレスのリストです。
    
    個人アドレスでないため誰が書いているのか不明なものは拒否したい
    という場合やシステムからのアドレスはエラーメールかも知れないた
    めループなどを未然に防ぐという点で有用です(e.g. SMTP 情報を見
    ないしょうもないMTAが世の中にあるために、MLへ mailer-daemon か
    らエラーが返るなどがありうる)。必要ないなら $REJECT_ADDR の値
    をなしに変更して下さい(メニューのセキュリティ)。それ以上の細か
    い設定変更は直接いじることになります。

7.3	自動登録の方式の選択

MENU => REGISTRATION METHOD TYPE => AUTO_REGISTRATION_TYPE

上述のアクセス制御で auto_subscribe を選んだ場合に自動登録モードになり
ます。自動登録の手続きのやりかたを選択できます。

   ************************************************************
   AUTO_REGISTRATION_TYPE       confirm

   0    END
   1    confirmation
   2    body
   3    subject
   4    no-keyword
   ************************************************************

それぞれのキーワードは以下のような意味です。

	confirmation	subscribe request に対し一度確認を求めるメールを
			送り確認メールをもらって初めて登録する。
			subscribe attack 阻止のため推奨します

	body		本文に subscribe と書いてあるメールなら登録
			そうでないなら登録を拒否

	subject		Subject: subscribe と書いてあるメールなら登録
			そうでないなら登録を拒否

 	no-keyword	メンバーでないなら登録

基本的に登録用のアドレスはメールの From: 行からとります。body や 
subject の場合は subscribe aoi@chan.panic のような指定の仕方もできます
がセキュリティ的に推奨できないので confirm タイプが望ましいです。
＃なお subscribe などのキーワードをいじる場合は直接cfを edit してくだ
＃さい(=> Chapter 8, 9)。

同様に"confirmation"が可能なオプションには以下のものがあります。

MENU => REGISTRATION METHOD TYPE => UNSUBSCRIBE_AUTH_TYPE

抜ける時のコマンドでもconfirmationをかけるか？(default "NO")

MENU => REGISTRATION METHOD TYPE => CHADDR_AUTH_TYPE	        

chaddr コマンドでもconfirmationをかけるか？(default "NO")

7.4	コマンドとして使うアドレスの設定

   3    COMMAND ADDRESS 
              address for command          elena-ctl@baycity.asia

デフォルトのアドレスは

	elena		投稿先
	elena-ctl	コマンド用
	elena-admin	管理者宛でプログラムではなく人間が読むアドレス

に設定されます。それぞれの環境と趣味によって

	アドレスを配送専用とコマンド専用とはっきりわける主義 (default)

	与えられるアドレスが少ないので ML 本体で配送もコマンド実行も可
	能だと便利だという場合

	配送専用のアドレスと、コマンドは一つのアドレスですべて受け付け
	る listserv type のサーバが好み (fmlserv)

	そもそもコマンド機能は要らない

のような要求がありえるでしょう。

下の階層メニューでそのようなポリシーの変更を行ないます。

   ************************************************************
   0    END
   1    CONTROL_ADDRESS                 elena-ctl@baycity.asia
   2    MAIL_LIST_ACCEPT_COMMAND        NOT USE
   ************************************************************

○ CONTROL_ADDRESS

   ************************************************************
   COMMAND ADDRESS                      elena-ctl@baycity.asia

   For command, which address you use?
   (here DOMAINNAME = baycity.asia);

   0    END
   1    elena-ctl@$DOMAINNAME
   2    elena@$DOMAINNAME
   3    fmlserv@$DOMAINNAME
   4    NOT USE

   In default, we use "listname-ctl" format address for command only.
   If you choice "listname" for commands, 
   your mailing list address receive both posting and commands.
   "fmlserv" is the listserv/majordomo style interface of fml.
   ************************************************************

      which type (0-4) [0] 

   のような画面です。この設定は ML の記事のメールヘッダや ML サーバへ
   送ったコマンドへのREPLYに付加される情報に利用されます。

   注意: つまり sendmail 等のMTAへの設定は別途必要です。

   ・ elena-ctl@$DOMAINNAME タイプ

	デフォルトではエレナさん ML (elena@baycity.asia)に対し、
	elena-ctl@baycity.asia がコマンド専用に設定されています。

   ・ elena@$DOMAINNAME タイプ (backward compatible)

	もし、コマンドのアドレスに elena を設定するつまり投稿用のアド
	レスとコマンド用のアドレスが同じ場合は # command 形のコマンド
	をメール本文に書いて、送るとサーバはコマンドとして理解するとい
	う動きをします。

   ・ fmlserv@$DOMAINNAME タイプ

	fmlserv (上述)は listserv style のコマンド用サーバ(fmlserv) を
	使う用意がある場合に設定します。＃ fmlserv の設定は別途必要です(前述)

   ・ 4番目の NOT USE は「 ML でコマンドを使わない」つまり「配送専用」
	の場合に指定して下さい。使わない(unavailable)時はコマンドのア
	ドレスを表示する部分が全部

   COMMAND ADDRESS                      *** Command Unavailable ***

	のようになります。

○ MAIL_LIST_ACCEPT_COMMAND (default: NO)

    elena と elena-ctl と両方のアドレスがあって、なおかつ elena でもコマン
    ドを受けたい(つまり両方とも "# command" コマンドトラップを起こせる)場
    合はYES。
    
    なお、デフォルトでは # は不必要なのでドキュメント(helpなど)は # 抜き
    のものが生成されます。この変更や、MAIL_LIST == CONTROL_ADDRESS への設
    定の変更を行うとドキュメントを再生成するか？と尋ねられます。
    make doc-template でもドキュメント再生成はできます。

7.5	リモート管理

セキュリティ上デフォルトではリモート管理はできないようにしています。
なおリモート用のコマンドについては help-admin を見て下さい。

   ************************************************************
   REMOTE ADMINISTRATION
   Do you maintain the ML in remote?        no

   0   END
   1   REMOTE ADMINISTRATION              NO
   2   REMOTE_ADMINISTRATION_AUTH_TYPE    crypt
   3   ADMIN_ADD_SEND_WELCOME_FILE        NO
   ************************************************************

      which (0-3) [0] 

○ REMOTE_ADMINISTRATION (default: NO)

リモートで管理できるようにするには yes 

○ REMOTE_ADMINISTRATION_AUTH_TYPE (default: crypt)

認証タイプを設定します。デフォルトは crypt(パスワード認証)。認証の画
面は次のようなものです。

   ************************************************************
   REMOTE_ADMINISTRATION_AUTH_TYPE          crypt

   0    END
   1    pgp
   2    crypt
   3    md5
   4    address
   ************************************************************

それぞれのキーワードは以下のようなものです。

	pgp		PGPベースの認証方式

	crypt		パスワード認証(パスワードを crypt して保存)
				＋
			From: のアドレスが管理者メンバーリストにある

	md5		パスワード認証(パスワードを MD5 して保存)
				＋
			From: のアドレスが管理者メンバーリストにある

	address		From: のアドレスが管理者メンバーリストにある

○ ADMIN_ADD_SEND_WELCOME_FILE (default: no)

    admin add でユーザを登録した時にそのユーザに自動的に WELCOME ファイル
    を送るか？

7.6	ヘッダ関連の設定

例えば「To: をどうするか？」「Subject: につけるタグ e.g. [Elena:00100] 
は？」「ヘッダに出てくるすべてのフィールドを素通しにするのか？」などの設
定メニューです。

   ************************************************************
   0  	END

   * Subject: TAG
   1  	SUBJECT_TAG_TYPE                   
   2  	SUBJECT_TAG_FIGURE                 6

   * To:
   3  	REWRITE_TO                         To: is original (pass through)

   * Date:
   4  	DATE_TYPE                          original-date

   5  	PASS_ALL_FIELDS                    YES
   6  	PASS_RECEIVED_THROUGH              YES

   ************************************************************

○ SUBJECT TAG TYPE (default: 未定義)

    Subjectでの ML 名前と記事番号の設定について例えば、Subject:
    [Elena:00010] のようにするのか？何もつけないのか? (推奨は何もつけない。
    読むインターフェイスの自由度を制限するし、元々サーバではなくクライアン
    トの仕事です)
    
    この下の階層には Subject: [Elena:00100] のようなどのタイプのフォーマッ
    トを選ぶかの画面が来るので選んで下さい。

          Subject: (Elena:00100)
          Subject: [Elena:00100]    (hml 1.6 compat)
          Subject: (Elena 00100)
          Subject: [Elena 00100]
          Subject: (Elena,00100)
          Subject: [Elena,00100]
          Subject: (Elena)
          Subject: [Elena]
          Subject: (00100)
          Subject: [00100]

○ SUBJECT_TAG_FIGURE (default: nothing, which implies 5)

   Subject: [Elena 00100] の 00100 の部分の0でパディングする桁数。

○ REWRITE_TO (default: 0, not rewrite and pass the original To:)

   *  To: elena@baycity.asia, NON-MAIL-LIST-ADDRESS

	To: $MAIL_LIST の形で始っていない時は「$MAIL_LIST, それ以外のアドレス」
	に書きかえる(2.1 Release default)

   * To: elena@baycity.asia

	常に To: $MAIL_LIST (大昔）

   * pass through the original To: 

	original  の To: のまま
	(fml 2.2のデフォルト、正確には2.1A以降のデフォルト)

○ DATE_TYPE (default: original-date)

	Date: は素通し？ Date: は fmlが起動した時間で、originalのDate:は
	X-Posted:, X-Original-Date: などに設定するか？など

○ PASS_ALL_FIELDS (default: yes)

    ヘッダの中身を全部通すなら yes (default: yes)。ただしその場合でも 
    $SKIP_FIELDS (Received: と Return-Receipt-To) のフィールドは削られる。
    ＃ loop や hop count expire を防ぐために (次のメニュー項目も見よ)
    
    例えば意味不明の X-なんとかを全部除くなら no。残るフィールドは 
    @HdrFieldsOrder で定義されているもの。

○ PASS_RECEIVED_THROUGH (default: no)	

   Received: を通すなら yes

[参考] これ以上細かいヘッダフィールドのカスタマイズのためには次のよう
な関数が用意されています。使い方は doc/Japanese/header_write 
doc/html/Japanese/header_rewrite/ の中をサーチして下さい。

	&ADD_FIELD
	&DELETE_FIELD 
	&COPY_FIELD 
	&MOVE_FIELD 
	&DEFINE_FIELD_FORCED 
	&DEFINE_FIELD_ORIGINAL
	&DEFINE_FIELD_OF_REPORT_MAIL 
	&DEFINE_FIELD_PAT_TO_REJECT

7.7	その他の設定

   ************************************************************
   0    END		
   1    HTML_GENERATION               NO
   2    SPOOLING                      YES
   3    FLOCK                         YES
   4    SMTP
   5    USE_MEMBER_NAME               NO
   6    LANGUAGE
   7    VARIABLE_OFF_ON               off/on toggle variables
   ************************************************************

○ HTML_GENERATION

   ************************************************************
   0    END		
   1    AUTO_HTML_GEN		
   2    HTML_THREAD_REF_TYPE   	prefer-in-reply-to
   3    HTML_STYLESHEET_BASENAME	
   4    HTML_INDEX_UNIT		
   5    HTML_INDENT_STYLE		
   ************************************************************

    MIME変換した記事を作るなら AUTO_HTML_GEN を yes 。その場合MLの記事を
    HTMLに変換して /var/spool/ml/ML名/htdocs/ の下に html 化された階層を作
    る。デフォルトではその日ごとに別の階層にまとめて
    	   index.html  (記事を新しい順にならべたもの)
    	   thread.html (スレッド化された記事)
    の階層構造を作る。HTML_THREAD_REF_TYPE はスレッドを作る際 In-Reply-To: 
    と References: 両方をつかうか？それとも In-Reply-To: だけを根拠にする
    か？(どっちを選んでもだめなものはだめ。MUA次第)。

○ SPOOLING (default: yes)

   スプールに記事を貯めるか？しないか？デフォルトは yes

○ FLOCK (default: yes)

   lock algorithm に flock を使うか？それとも別のアルゴリズムか？

○ SMTP

   USE_OUTGOING_ADDRESS (default: NO)
	fml.pl => list-outgoing => expand

   USE_VERP (default: NO)
	Variable Envelope Return-Paths

○ USE_MEMBER_NAME

○ LANGUAGE

   MESSAGE_LANGUAGE (default: Japanese or English determined in installation)
	Message Language Extension

エラーなどを何語で返すか？デフォルトはインストール時の言語選択と一緒。

◯    7    VARIABLE_OFF_ON               off/on toggle variables

off / on する ( 1 or 0 を定義する) だけの変数(toggle な変数)なら全部メ
ニューで off / on できるようにしてみました。ちなみに toggle 変数の一覧
なので他の階層と重複があったりしますが、そういうものです。

注意: 画面が縦に長いとなにかと面倒なので、アルファベット順で、前半後半
      に分かれています。便宜上前半は A (^A .. ^K) 後半は L (^L .. ^Z)と
      いう別れ道の階層を一回はさみます。

例: リモート管理 REMOTE_ADMINISTRATION を 1 にする。次の２つはどっちで
    も一緒です。

    メインメニュ → OPTION → VARIABLE_OFF_ON → L → REMOTE_ADMINISTRATION → 1
    メインメニュ → リモート管理 → REMOTE_ADMINISTRATION → 1 

7.8	セキュリティ関係
See also: Appendix G 

○ 様々なセキュリティオプションを一気に設定する
   これは make secure を走らせることと一緒です。 => Appendix G

   MENU => SECURITY => MORE_SECURE => "y"

○ メールの中身のフィルタリングについて
    "本文がないメール"や"unsubscribe だけ"のメールを ML に流さない。
    MIME/Multipart の場合は最初のブロックの中身を評価の対象にします。

○ USE_DISTRIBUTE_FILTER (default: NO)
   フィルタをするか？するなら yes (yes 推奨)

○ FILTER_ATTRIBUTE

 * FILTER_ATTR_REJECT_COMMAND (default: no)
   投稿用の ML に #help などが来たら拒否 (yes (拒否)を推奨)

 * FILTER_ATTR_REJECT_2BYTES_COMMAND (default: no)

  ＵＮＳＵＢＳＣＲＩＢＥ とかだけのメールを弾く。
  しかし弾き過ぎることがある(例: 最初の段落が『ＵＪＡ です。』というメー
  ルはコマンドと引数なのか区別できない)。

 * FILTER_ATTRIBUTE => FILTER_NOTIFY_REJECTION (default: no)
   拒否した旨をその送り主に伝える

 * FILTER_ATTRIBUTE => FILTER_ATTR_REJECT_MS_GUID (default: no)

   M$関係のマクロ入りに見えるファイルを弾く(e.g Melissa virus)。
   一般には弾き過ぎることになる。
   (が普通のファイルにはマクロなんて使わないだろうに)

○ USE_MTI (トラフィックモニタ; default No)

    使うなら yes 。 ML のトラフィックを監視し一気にメールが来たらメール爆
    弾とみなすなどを行う。ものすごーく手の込んだものは reject できないか
    もしれない;_;。yes を一応推奨

○ MAX_MAIL_SIZE (default: 未定義 == 無制限) 

    メールサイズの最大値(デフォルトでは無制限)。貼付ファイルを許すか否か
    でサイズ制限は決まるだろう。ちなみに fml.org では500K bytes にしている。

○ NOTIFY_MAIL_SIZE_OVERFLOW (default: yes) 

    MAX_MAIL_SIZE (最大値)を越えるメールが来たら拒否の旨を送り主に伝える。
    伝えないとエラーだと思って再送する人が多く、システムに負荷がかかるため。
    message/partial は合計のサイズを推定します。

○ ANNOUNCE_MAIL_SIZE_OVERFLOW (default: no) 

拒否した旨をメーリングリストに流す。恥曝し？

○ ADDR_CHECK_MAX (default: 3)

    アドレスのチェックの厳しさ。3 はドメイン3レベル、つまり beth.fml.org 
    という3階層までチェックするので beth.fml.org と jo.fml.org は別のアド
    レスだが、beth.lw.fml.org と jo.lw.fml.org は同じドメインとみなす。

○ MAXNUM_COMMAND_INPUT (default: 無制限)

   一つのメールに書けるコマンドの数の最大値

○ REJECT_ADDR (無視するシステムアカウント名のリスト)
   see => 7.2

○ USE_LOG_MAIL (default: NO)

    var/Mail/ の下に最近Ｎ通のメールの先頭2Kバイト程度を保存するヘッダ情報
    を保存してデバッグなどに用いるとよい。

○ USE_ENCRYPTED_DISTRIBUTION (default: no)

PGP encrypted ML. Need pgp configuration. 

8	リモート管理するユーザの登録について

8.1	リモート管理の権限をもつユーザを ML に加える場合

   /usr/local/fml/makefml addadmin elena fukachan@baycity.asia

Elena  ML のリモート管理者に fukachan@baycity.asia を加える。

8.2	リモート管理の権限をもつユーザを ML から削除する場合

   /usr/local/fml/makefml byeadmin elena fukachan@baycity.asia

Elena  ML のリモート管理者から fukachan@baycity.asia を外す。

8.3	リモート管理の権限をもつユーザのパスワードの設定・変更

   /usr/local/fml/makefml passwd elena 

	---Changing Passwd of Admin  in elena mailing list
	Who: 
	Password: 

とかになるのでアドレス(Who)とパスワード(Passwd)を入れて下さい。

9	設定ファイルの編集について

各 ML のHOMEディレクトリには cf と config.ph という２つのファイルがあ
ります。config.ph がその ML の動作を制御するもっとも大事なファイルです。 
cf というファイルは主にメニュープログラムが処理しやすくするために存在
します。

一般に初心者はメニューで設定を行い cf や config.ph を直接いじらない。
慣れてきたら config.ph を直接EDITする人が多いようです。config.ph を直
接EDITするようになったら cf ファイルは消しても構いません。

9.1	設定ファイル(cf と config.ph)についての注意 

fml.pl がメーリングリスト本体です。このプログラムにメールを入れるとメー
リングリストとして作動します。fml のほとんどすべてのプログラムの動作は 
config.ph という設定ファイルの内容で挙動が変わります。

makefml config (=> Chapter 7)は cf というファイルを
編集するメニュー形式のインターフェイスです。makefml はこの cf というファ
イルから config.ph を毎回作っています。例: elena MLの場合

	/var/spool/ml/elena/cf -> /var/spool/ml/elena/config.ph

メニューの画面で設定できない(より進んだ/凝った)設定をする場合
大きくわけて二通りの運用方針があります。

	1. 常に cf ファイルを編集し、その cf から config.ph を作る。
	   MLのHOMEで make config.ph というコマンドをうつと
	   cf -> config.ph はつくられます。
	   makefml config も使用できます。		

	* 2000/05/09 以降の fml-current には同じことをする 
	  % makefml update-config.ph ML
	  というコマンドが用意されています。でもこれなら
	  MLのHOME以外からの実行も、 make がないOSでもOKです。

	2. 今後は cf も makefml も使わず config.ph を手で編集する。

cf ファイルは config.ph のマスターですが config.ph を直接編集しても
構いません。むしろ望ましいです。しかし config.ph を手でいじって、
そのあと makefml config を使うとせっかくの設定が上書きされて消されて
しまいます。この場合 makefml は警告を出して一回止まりこのまま進んで
いいかどうか尋ねてきます。

9.2	cf ファイルと config.ph のフォーマット

○ config.ph 
書き方は perl の構文そのものです。

○ cf ファイル
『変数名 値』をスペースかタブで区切って書く UNIX 伝統のスタイルです。 
行の # 以降はコメントです。cf で定義されていないものはデフォルト値が
使われます。つまり cf にはデフォルトと異なる差分だけを保守するのに便
利です。

＃/usr/local/fml/cf/MANIFEST に変数の一覧とデフォルト値があります。

cf の『変数名 変数の値』行は config.ph の『$変数名 = "変数の値";』行に
変換されます。つまり『変数名は perl の変数名から $ をとったもの』です。

例: cf で	

	MAIL_LIST                	elena@$DOMAINNAME
	PERMIT_POST_FROM         	members_only
	REJECT_POST_HANDLER      	reject

は config.ph の

	$MAIL_LIST                     = "elena\@$DOMAINNAME";
	$PERMIT_POST_FROM              = "members_only";
	$REJECT_POST_HANDLER           = "reject";

に変換されます。cf に現れない変数は config.ph にデフォルト値を持って
生成されます。config.phに設定される変数一覧は cf/MANIFEST にあります。
デフォルト及び変数一覧はこのcf/MANIFEST(例: /usr/local/fml/cf/MANIFEST)
というファイルを読んで下さい。

cf ファイルではLOCAL_CONFIG というキーワードから後は生の perl 構文が書
けます。ローカルハックはこの部分に記述しておくと便利。この部分は cf ->
config.ph を再生成した時に config.ph の最後につけ足されます。

9.3	makefml config-template; configの大元のファイルをメニューで編集

newml 時に $DIR/cf は $EXEC_DIR/etc/makefml/cf というファイルから生成
されています。同じような設定の ML を複数作るのであればあらかじめ
$EXEC_DIR/etc/makefml/cf というファイルを編集しておいた方が後々楽がで
きます。もちろん手動で設定変更しても構いません(ロックも不必要)。

	makefml config-template 

は特定の ML ではなくこのファイル($EXEC_DIR/etc/makefml/cf) に対して
"makefml config" 同様のメニュー編集機能を提供します。_ML_ などのテンプ
レートで使われている生の記号が出てきますが、その辺は触らないようにして
下さい。例えば自動登録をデフォルトにしてしまうなどに用いることができ
ます。

9.4	template (生成されるファイルの元) の直接編集

テンプレートを直接編集する場合です。cf だけでなく help ファイルなどの
テンプレートの編集にも使えます。

cf はメニューでのテンプレート変更ができますが、もっと複雑な変更がした
い場合は直接編集する必要があります。テンプレートにあらかじめ必要な設定
を仕込んでおけば ML 作成時に必要な作業を減らすことができます。このファ
イルを直接いじってもよいし、

	makefml edit-template cf

で cf の template をいじってもよいです。あまり違いはありませんが 
makefml 経由だとファイルがどこにあるか？を探す手間がないだけです。
makefml はエディタを起動し cf ファイルの template をいじれるようにしま
す。この時環境変数 EDITOR の Editor が使用されます。同様に

	makefml edit-template help.jp (Japanese help file template)
	makefml edit-template help.en (English help file template)

とすると作成される help ファイル(日本語)の template を edit することが
できます。

10	動作のテスト, デバッグについて

1. OSのメールのログを調べる。(例: /var/log/maillog)
   see Appendix A.
2. fml のログを調べる。$DIR/log (ML's HOME ログファイル)
3. fml からMTAへちゃんと渡せているかのログを調べる。
   ($DIR/var/log/_smtplog)
4. "makefml test ML" で fml 自体が動いているかを調べる。
   このテストでのfmlはMTAとは完全に無関係に動く。
   よてfmlが正常に動くならMTAの設定の問題ということになる。

	makefml test ML

と打つとデバッグモードでの動作テストができます。画面に debug 情報が一
杯出るので emacs の shell mode なり /usr/bin/script などでログをとるな
りして見て下さい。makefml test ML を起動すると配送のテストかコマンドの
テストか？選択をしろといわれます。

	test of command? (y/n) [n] 

	y	コマンドのテスト
	n	配送のテスト (デフォルト)

どちらかを選んで下さい。この後メール本文の入力を求められるので入れて下
さい。本文入力の終わりは . (ピリオド)だけの行の入力です。

Example:

	* Enter mailbody, end with "." on a line by itself
	help
	.

	... この後はデバッグの山〜 ...

Appendix A	典型的なエラー

原因を探るためにはパッケージ附属の CHECK_LIST.jp や
http://www.fml.org/fml/CHECK_LIST/ にリストアップされている項目をチェッ
クします。

トラブル事例集
http://www.fml.org/fml/Japanese/troubleshoot/

例えばエラーメールの中に含まれる適当な文字列を見つけます。そして、 

	doc/Japanese/* に対して grep する

	エディタでその文字をサーチする

	http://www.fml.org/fml/ でドキュメントのサーチをしてみる。
	＃最新版のドキュメントにはそのエラーについて言及されてるかも

などをするのがまず第一歩です。
例: エラーメールに unsafe とか permission denied とかでてきた
	% grep -i unsafe doc/Japanese/*

○ perlのエラー
    %perl makefml install
      Can't locate getopts.pl in @INC at makefml line 104.

perlが正しくインストールされていません。perlをインストールしなおして
下さい。

○ MTAのエラー

例えばMTAのエラーの場合の典型例は以下のようなものがあります。
MTA(sendmail など)から返ってきたメールのエラーメッセージの代表例:

	エラー		原因
	--------------------------------------------------------
	unsafe	 	ファイルやdirectoryのpermissionがおかしい
			どこかが group writable
	loop		/etc/aliases の設定がおかしい 
			newaliases してない
	user unknown	そんなユーザはいない
			/etc/aliases に設定をしていない
			newaliases してない

	sh: fml.pl not available
			smrsh を使ってたりしますか？
			(最近のRedhatでこのsmrshからみのトラブルが多いです)
			sendmail.cfをどうやって作ったかを確認

○	:include: がうまく動かない場合 (/etc/aliases)

可能性としては

	○ include ファイルの場所がセキュリティ的に問題があるためエラー
	   例えば 
		・ NFS ごし
		・ include ファイルのある場所までのどこかの permission が危ない
		   例えば /usr, /usr/local, /usr/local/fml のように順次下って
		   group writable か否かを調べる。chmod 755 をしまくる

	○ include 形式をそもそもサポートしていない
	   -> C Wrapper が必要かも知れない

などが考えられます。include ファイルの置き場所は可能な限り permission 
を落としたローカル(NFSではない)場所(そこまでの階層すべての permission に
配慮する)に include ファイルを置いてみて下さい。例えば /usr/local が 
local disk の上にあるとして /usr/local/include/ の下に置いておくなどです。
＃注意: そもそも NFS ごしに setuid しようというのが間違い

C Wrapper については

	/var/spool/ml/ML名/fmlwrapper.c 

というのが各 ML 用に作られているので compile して設定する必要がありま
す。compile そのものはその場所で make fml で実行されますが、setuid は
よ〜く注意して設定しないといけないので doc/Japanese/* の "fmlwrapper.c 
の呼び方"あたりを参考に root の人とよく相談しながら設定して下さい。
＃注: 2.2 では cc のオプションに -DPOSIX がデフォルトでついています。

FYI: OSによってはインストール情報が提供されていることもあります。チェッ
クしてみて下さい。
例:	Debian Linux	/usr/doc/fml/ の下

Appendix B	コマンド用のアドレスについての捕捉 

#7.4 で述べられている通りに

	$COMMAND_ADDRESS = $MAIL_LIST;

とすれば elena@baycity.asia でコマンドを受け付けます。この場合は配送メー
ルの X-ML-Info: というフィールドやコマンドのREPLYもすべて 
elena@baycity.asia 宛になるように設定されます。場合によっては helpファ
イルは手動で書きなおして下さい。

# command というシンタックスのコマンドをelena@baycity.asia と
elena-ctl@baycity.asia どっちでも受け付けるようにするためには、config.ph で

	$MAIL_LIST_ACCEPT_COMMAND = 1;

とする必要があります。
＃ 意味的には Backward Compatible というカテゴリですが、
＃ $COMPAT_なんとか にすると何の compatible の話か見えにくくなるので
＃ こういう変数名になってます。
＃ 以前の version ではヘッダで「elena-ctl へ」とか書いてるのに実は 
＃ elena でも受け付けてたという仕様上の問題を再現するためのオプションです。
＃ いわば option TCP_COMPAT_42 みたいなもんですかね。

Appendix C	POP3 を利用してのML(sendmail等を経由して起動しないorできない場合)

sendmail が走っていなくても POP でメールを引っ張って実行する裏技もあり
そういうtrickyな話題については doc/Japanese/ を見て下さい(^^;)

なお MetaInfo Sendmail 2.x 以外のMTAを使う場合の NT 上ではこの裏技を使
います:)

Appendix D	HELPなどの取り寄せについてユーザに知らせる方法について

ヘッダにはデフォルトで X-ML-Info に書いてあります。当然 ML に入った
時にはそういったことについてメールを書く or 自動的に送られるでしょう。

それでもどうしてもだめだとあきらめて、最後の手段「本文に情報をつけてし
まふ」という倫理的に問題ありまくりの方法もとれなくはありません。詳しく
は doc/Japanese/ (http://www.fml.org/fml/Jaapnese/) をみると「メールの
最後に付加情報をつける設定」

Appendix E	モデレータ

モデレータモードの時は

	1  ML 宛に来たメールは配送されず
	2 一旦モデレータへフォワードされます
	3 モデレータは内容を査読後承認するなら
	  あるキーワードを ML サーバへ送ることで
	   ML 全体へ配送されます。	

このモードにするには config.ph で

$PERMIT_POST_FROM              = "moderator";

とします。makefml config の設定画面では

   [POST]

   1    PERMIT_POST_FROM                   moderators

のようになります。コマンドについても

   [COMMAND]

   3    PERMIT_COMMAND_FROM                moderators

設定はできますがいちいち承認を出すコマンドというのは意味がないでしょう。
この設定でコマンドを送るとモデレータにフォワードされて終るだけです。

○ 承認の仕方

$MODERATOR_FORWARD_TYPE という変数があります。デフォルトは２です。デフォー
ルトについて説明します。２以外は doc/Japanese/how_to_subscribe (WWW な
らhttp://www.fml.org/fml/Japanese/how_to_subscribe/) を見て下さい。

次のようなメールがモデレータに来ます。

   Moderated $MAIL_LIST (elena@baycity.asia) receives a submit from

      fukachan@baycity.asia.

   Please check it. If you certify the following article, 
   please send to elena-ctl@baycity.asia
   the following line (only this line!)

   moderator certified 199711032027.709982

   ------- Forwarded Message

   メール本文

   ------- End of Forwarded Message

メールは ML サーバも保存しています。メール本文の内容を承認したなら、

moderator certified 199711032027.709982

の行だけをコマンド用のアドレスに送って下さい。そうすると ML サーバは自
分が保存しておいたそのメールを配送します。

モデレータか否かはこの特別な文字列(# moderator certified 数字)を知って
いるか否かです。この数字は毎回違うもので、ある意味で暗合レベルの非常
に低い one time password だとみなすこともできます。

このメールが送られてくる人は誰でもモデレータになれます。デフォルトは
 $MAINTAINER ですが、複数の人をモデレータにするなら moderators 
というファイルを作り、actives や members のように１行１アドレス書いて
いって下さい。

Appendix F	アップグレード時の注意 (fml 2.1 以前からの時)

例えば (ドメイン baycity.asia で)

	makefml newml elena

で elena MLを作ったとします。デフォルト構成は

	elena@baycity.asia	 ML への投稿用のアドレス
	elena-ctl@baycity.asia	 ML のコマンドを送るアドレス

を使うように setup されます。ヘルプファイル等の見本もこの選定の元に生
成されます。ちなみに管理者のアドレスは

	elena-admin@baycity.asia	 ML の管理者宛のアドレス
					(エラーメールなどが送られてくる)

です。

○ コンパティビリティについて

elena@baycity.asia でコマンド "# command" を受け付けるようにはなってい
ません。『$COMMAND_ADDRESS = $MAIL_LIST;』と設定することで 
elena@baycity.asia がコマンド "# command" をコマンドとして理解するよう
になります。設定は makefml config でもできます。詳細は 7.4 を参照。
elena と elena-ctl 両方がコマンドとして使える場合については Appendix B 参照。

Appendix G	セキュリティを強化する設定について

◯ デフォルトの cf をお薦めの設定にすることができます。
   インストール時に、次の用に make を実行して下さい。

   % env RECOMMEND=yes perl makefml install

○ 既存の cf をより安全な設定にするには
   ML の HOME で 

	% make secure 

   を実行して下さい。cf を書きかえ、config.ph を再生成します。
   その際に付け加えられる変更点は次のようなものです
   (注:以下の例ではコメントが省略されています)。

    $INCOMING_MAIL_SIZE_LIMIT	= 512000;
    $USE_LOG_MAIL			= 1;
    $USE_DISTRIBUTE_FILTER		= 1;
    $FILTER_ATTR_REJECT_COMMAND	= 1;
    $USE_MTI			= 1;
    
    &DENY_PROCEDURE('member');  # _this_line_is_added_by_makefml_
    &DENY_PROCEDURE('active');  # _this_line_is_added_by_makefml_
    &DENY_PROCEDURE('members'); # _this_line_is_added_by_makefml_
    &DENY_PROCEDURE('actives'); # _this_line_is_added_by_makefml_
    &DENY_PROCEDURE('status');  # _this_line_is_added_by_makefml_
    &DENY_PROCEDURE('stat');    # _this_line_is_added_by_makefml_

   ＊＊＊ 以下、各論です ＊＊＊

○ メンバーファイルを取り寄せるコマンドなどを使えないようにするには
config.ph の最後 (cf の最後)に付け加えてください。

&DENY_PROCEDURE('member');  # _this_line_is_added_by_makefml_
&DENY_PROCEDURE('active');  # _this_line_is_added_by_makefml_
&DENY_PROCEDURE('members'); # _this_line_is_added_by_makefml_
&DENY_PROCEDURE('actives'); # _this_line_is_added_by_makefml_
&DENY_PROCEDURE('status');  # _this_line_is_added_by_makefml_
&DENY_PROCEDURE('stat');    # _this_line_is_added_by_makefml_

補足: 上記は 4.0 風です。3.0 風の

 @DenyProcedure = ('member', 'active', 'members', 'actives', 'status', 'stat');

という書き方でも同じ効果があります。どちらでも自分が分かりやすいと思う
方を使って下さい。

○ セキュリティ関連のオプションを有効にする。
   関連する代表的なオプションは次の通りです。 

	$INCOMING_MAIL_SIZE_LIMIT メールサイズの上限
	$USE_DISTRIBUTE_FILTER    フィルタリング
	$USE_MTI                  トラフィックモニタ
	$UNSUBSCRIBE_AUTH_TYPE    登録のときと同様に抜ける時の確認要求
	$USE_LOG_MAIL             fmlが受けたメール(記事,コマンド両方)の記録 

* PGP による暗合化 ML : 配送を暗合化する

* フィルタリングの補足: 貼付ファイルを禁止する例

$DISTRIBUTE_FILTER_HOOK = q#
    if ($e{'Body'} =~ /Content-Disposition:\s*attachment/i) {
	return 'THIS ML NOT PERMIT ATTACHMENT';
    }
#;

Appendix G.1	FML Advisories

現在のfml-currentにはFML Advisoriesというドキュメント群があります。旬
の特定のテーマについてまとめたものです。セキュリティ関係が主なテーマで
すが、それ以外のテーマもあります。
例: happy99, Melissa

	http://www.fml.org/fml/advisories/

$Id: INSTALL.wix,v 1.119.2.2 2001/07/01 03:37:32 fukachan Exp $
