fml の設定方法

makefml コマンド

fml の設定はほとんど makefml コマンドでできます.makefml コマンドをオプションなしで実行したらヘルプが表示されます.ほとんどこれを見ただけで実作業ができると思います.

************************************************************
makefml Usage:

             makefml command
             makefml command <ML>  options
             makefml <ML>::command options

   makefml command arguments         what
   ---------------------------------------------------------

   makefml info                      show this message
   makefml install                   Install the fml system
   makefml newml ML                  make a new Mailing List <ML>
   makefml destructml ML             destruct Mailing List <ML>
   makefml add ML addr               add <addr> to <ML>
   makefml bye ML addr               remove <addr> from <ML>
   makefml add2actives ML addr       add <addr> to only actives
   makefml add2members ML addr       add <addr> to only members
   makefml on  ML addr               on  <addr>
   makefml off ML addr               off <addr>
   makefml chaddr ML old new         change address <old> => <new>
   makefml digest ML addr [opt]      set up digest(matome) for address <addr>
   makefml matome ML addr [opt]      set up digest(matome) for address <addr>
   makefml byeadmin ML addr          remove the administrator of <ML>
   makefml addadmin ML addr          add <addr> as an admin to <ML>
   makefml passwd ML addr            to change the administrator passwd
   makefml help                      help message
   makefml test ML                   test
   makefml pgp ML args               e.g. admin-auth.pgp2 ML -ka pubkey
   makefml dist-auth.pgp ML args     (abbr. da.pgp) pgp = pgp2 pgp[5kesv] gpg
   makefml dist-encrypt.pgp ML args  (abbr. de.pgp) pgp = pgp2 pgp[5kesv] gpg
   makefml admin-auth.pgp ML args    (abbr. aa.pgp) pgp = pgp2 pgp[5kesv] gpg
   makefml admin-encrypt.pgp ML args (abbr. ae.pgp) pgp = pgp2 pgp[5kesv] gppg
   makefml mead                      set up mead (error mail analyzer)
   makefml fmlserv                   set up fmlserv (listserv-like server)
   makefml lock ML [time]            lock <ML> for <time> (default 3600) sec.
   makefml edit-template             edit template file under locked state
   makefml config-template           configure template cf file
   makefml create-doc-template ML    create document templates e.g. help, guide
   makefml update-config ML          make config.ph (cf -> config_ph)
   makefml recollect-aliases         remake $ML_DIR/etc/aliases
   makefml htpasswd ML               htpasswd wrapper for ml
   makefml mladmin.cgi ML            set up ml-admin/$ml/*.cgi
   makefml tail ML [opt]             syntax sugar of log
   makefml log ML [opt]              show log: [-i] [-NUMBER] [all] [-pPATTERN]
   makefml command ML addr ...       e.g. "command ML <addr> mget last:3 mp"
   makefml edit ML                   edit <ML>'s file under lock (default config.ph)
   makefml config ML                 [menu] to configure <ML> fundamental
   makefml showconf                  show environment, version, ..

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

HOW TO INSTALL:
"perl makefml install" to install fml
"perl makefml -W cgi install" to enable cgi for fml
"perl makefml config <ML>" to go to the menu screen

makefml コマンド実行時の注意事項

makefml を実行するときのユーザ権限に注意してください。root でやろうとすると警告が出ます。必ずユーザ権限 fml で作業してください。

(hoge)% su
(root)# su fml
(fml)% makefml .....

新しいメーリングリストの作成

メーリングリスト(以下 ML)を新規作成するには、newml オプションを使います。

% makefml newml (新しいML名)

最後に、以下のようなメッセージが出ると思います。 makefml は aliases ファイルまでは手を加えないので、自分で aliases ファイルを更新する必要があります。メッセージを見習って更新してください。

   The next step: update your MTA configuration. For example
        % su root
        # cat $ML_DIR/$ml/aliases >> /etc/aliases
        # newaliases

   FYI: See templates in '$ML_DIR/$ml/'

メンバーの追加、削除

メンバーの追加は add オプション、削除は bye オプションを使います。

% makefml add ML addr
% makefml bye ML addr

種々の設定

ML に関する細かい設定は config オプションを使います.

% makefml config ML

例えば、ML に投稿できるメンバーを設定したい場合は、「1. POLICY OF ACCESS (WHO CAN POST AND USE COMMANDS)」の「1. PERMIT_POST_FROM」を変更することで可能です。 members_only なら、メンバーのみ、anyone なら誰でも投稿可能ということになります。

メールの番号付けの設定をしたい場合は、「5. HEADER CONFIGURATIONS」の「1. SUBJECT_TAG_TYPE」や「2. SUBJECT_TAG_FIGURE」を設定します。

他にもいろいろできますが、ここでは紹介しきれないのでこの辺にしておきます。 いろいろメニューをたどってみてください。

手作業で fml を設定する

makefml コマンドは大変便利ですが、小回りがききません。 設定ファイルを直接書き換える方法について説明します。

設定ファイルの場所

各 ML の設定ファイルは、通常は /va/spool/ml/ML の下に置かれます(ただし、ML は ML 名)。 このディレクトリにあるファイルをいろいろと修正するわけです。

actives と members

ML のディレクトリには actives と members のファイルがあります。

まず actives ファイルについて説明します。ML に送られてきたメールは actives に書き込まれたアドレスに転送されます。よって、あるアドレスを ML に追加したい場合、actives ファイルにそのアドレスを追加すればよいわけです。

次に members ファイルですが、これは先ほど述べた PERMIT_POST_FROM を members_only にして送信者制限を行っている場合、 members ファイルに登録されていないアドレスから ML に送信した場合、拒否されます。 つまり、送信者制限を行っている場合は、ML にアドレスを追加するのは actives だけでは不十分で、members ファイルにもそのアドレスを追加しなければなりません。 (送信だけできればよくて受信はしたくないという特殊な場合は members だけに追加すればよいわけですが、、、)

makefml コマンドで「add ML addr」を実行した場合は、actives と members の両方のファイルにアドレスが追加されます。 makefml コマンドには add2actives と add2members のオプションがありますが、それぞれ actives のみ、members のみにアドレスを追加するという意味になります。

config.ph と cf

ML の 環境設定などは config.ph ファイルによって行われます。 もうひとつの cf ファイルは makefml コマンドが一時的に利用するファイルです。「makefml config」を実行すると,cf ファイルが書き換えられて、 その cf ファイルの内容にしたがって config.ph が書き換えられることになります。

makefml コマンドを全く使わないという人は config.ph を直接編集してかまいません。ただし,config.ph を修正後に makefml コマンドを実行すると、その修正内容は cf の設定で上書きされてしまうので、注意が必要です。

makefml コマンドを使い続けたいという人は、cf ファイルの方を修正します(こちらの方がおすすめです)。 ただし、cf ファイルだけを修正しても、config.ph の方に反映されません。 config.ph に cf の内容を反映したい場合は「make config.ph」を実行します。

% vi cf
% make config.ph

FQDN と DOMAINNAME

cf ファイル中に FQDN (ドメイン名込みの完全なマシン名)と DOMAINNAME の2つの設定項目があります。 ML で送られてくるアドレス(To:)の @ 以降を FQDN ではない文字列に設定したいときは、DOMAINNAME を変更すればよいでしょう。 cf ファイル修正後は「make config.ph」を忘れないようにしましょう。

メールで ML の各設定をしたい場合

メンバーを追加したり削除したりする機会が増えてくると、「いちいちメールサーバにログインして設定を行うのがめんどくさい。メールを送るだけで設定をしたい!でもユーザ任せにするのはいやだ!」という欲求が出てくると思います。そういうときは遠隔管理機能を使います。

初期設定

遠隔管理機能を有効にするには、「makefml config ML」を実行して、 「4. REMOTE ADMINISTRATION」の「1. REMOTE ADMINISTRATION」を yes に設定します。 「2. REMOTE_ADMINISTRATION_AUTH_TYPE」は crypt でかまいません。

次に、管理者のアドレスを登録します。もちろん、管理者は複数人登録可能です。

% makefml addadmin ML addr

次に、パスワードの設定です。パスワードはアドレスごとに設定可能です。

% makefml passwd ML addr

これで一通り設定は完了です。

遠隔管理の基本

遠隔管理用のメールアドレスは、ML のアドレスの後ろに「-ctl」を付けたものになります。例えば、「hoge@somedomain.com」という ML があったとすれば、管理用のアドレスは「hoge-ctl@somedomain.com」になります。管理用のアドレスにいろいろと命令を送信することで各種設定が可能となります。

管理用のアドレスに送信する場合、メールヘッダの「From:」はあらかじめ「makefml addadmin」によって登録したアドレスでなければなりません。

また、遠隔管理の際はパスワード認証が必要です。そのために、メール本文の一行目は「admin pass (パスワード)」のようにパスワードを設定する必要があります。 ただし、ここでのパスワードは、あらかじめ「makefml passwd」で設定しておいたパスワードです。

ここまで踏まえた上で、実際の例を見ることにしましょう。 管理したい ML アドレスが hoge@somedomain.com 、 管理者のアドレスが foo@otherdomain.com 、 パスワードが「hanabi」だったとします。 その場合、遠隔管理コマンドのヘルプを見たい場合には以下のようなメールを送信します。

From: foo@otherdomain.com
To: hoge@somedomain.com
Subject:

admin pass hanabi
admin help

うまくいけば、パスワード認証が成功したという内容のメールと、遠隔管理コマンドのヘルプが返信されてくるはずです。 なお、上の例では Subject が空ですが、何を入力してもかまいません(無視されます)。

ML へのアドレスの追加、削除

遠隔管理で ML に アドレスを追加したい場合は、「admin add address」、 削除したい場合は「admin bye address」を使います(ただし address の部分には追加あるいは削除したいアドレスを入れる)。 例えば、kkk@hoge.com を追加し、sss@foo.com を削除したい場合は以下のようにします。

From: foo@otherdomain.com
To: hoge@somedomain.com
Subject:

admin pass hanabi
admin add kkk@hoge.com
admin bye sss@foo.com

もちろん,複数アドレスを同時に登録・削除することも可能です。

ML のメンバーを取得する

ML のメンバーを知りたい場合は、「admin get filename」コマンドを利用します。 このコマンドはもともと、 ML のディレクトリにあるファイルの内容を取得したいときに使うコマンドです。 例えば、actives に登録されているアドレスを取得したい場合は「admin get actives」を、 members に登録されているアドレスを取得したい場合は,「admin get members」を使います。

ML の管理者を追加する

あまり機会がないかもしれませんが、管理者の追加や削除も可能です。 例えば、bar@otherdomain.com を管理者として追加し、パスワードを「manifest」 に設定したい場合は,以下のようにします。

From: foo@otherdomain.com
To: hoge@somedomain.com
Subject:

admin pass hanabi
admin addadmin bar@otherdomain.com
admin initpass bar@otherdomain.com manifest

addadmin が管理者追加命令で、initpass がパスワード変更命令となります。

遠隔管理コマンド一覧

遠隔管理コマンドは他にもいろいろあります。リストを載せておきます。

   admin pass パスワード
   admin password パスワード
   admin passwd 新しいパスワード
   admin initpass アドレス パスワード
   admin help
   admin log
   admin add address
   admin off address
   admin on address
   admin bye address
   admin chaddr old-addr new-addr
   admin change old-addr new-addr
   admin change-address old-addr new-addr
   admin matome address 引数 
   admin skip address
   admin addadmin address
   admin addpriv  address
   admin byeadmin address
   admin byepriv  address
   admin dir
   admin ls options
   admin remove filename
   admin get filename
   admin resend filename address
   admin put filename
   admin rename filename1 filename2
   admin newinfo
   admin newguide
   admin unlink-article ID
   admin remove-article ID
   admin pgp options

admin help

「admin help」を実行して帰ってくるメールの内容を示しておきます.

		管理者コマンドのヘルプ

________________________________
------------------------------------------------------------
1	Overview
1.1	コマンドについて

2	コマンドリスト
2.1	パスワード関係
2.2	ヘルプ
2.3	ログファイル
2.4	メンバーリストの変更
2.5	管理者メンバーリストの変更
2.6	ファイル操作
2.7	PGP (Pretty Good Privacy)
2.8	特殊なもの
------------------------------------------------------------

________________________________

1	Overview

歴史的に # をコマンドの前につけても構いませんが;-)、デフォールト設定で
は必要ありません。e.g. #unsubscribe, #help

1.1	コマンドについて

"admin コマンド" == "approve パスワード コマンド" 
と同じです。パスワードは平文で書いてください。

approve 形式は各行にパスワードを書く必要がありますが、
admin 形式の方では最初にだけパスワードの認証が必要なだけです。

なおPGPモードでパスワードを書く必要はありません。よってPGPの場合 admin
pass 行は必要ないし、approve コマンドは無意味です(無意味にパスワード打
ち間違えによるエラーで混乱する可能性もあります)。

コマンドの例:
	admin pass パスワード

は次の行と同じです。

	approve パスワード ls

2	コマンドリスト

2.1	パスワード関係

admin pass パスワード
admin password パスワード
	もしパスワードを必要とする設定なら必ず先頭にこれがないといけま
	せん。キーワードはpasswdにしようかと思ったけど、
	そうすると、コマンドラインとごっちゃになるからftpからとって
	きてpassというキーワードを使います。

admin passwd 新しいパスワード
	パスワードの変更
	shell% passwd ってやつとおなじっす(複数回は要求されませんが)。

admin initpass アドレス パスワード
	アドレスに対するパスワードを"パスワード"で初期化する
	初期化は変更と違い特別扱いです。bin/passwd -i とおなじです。

2.2	ヘルプ

admin help
	管理者コマンドヘルプを取り寄せる(このファイル)

2.3	ログファイル

admin log
	ログの最近の100行を取り寄せる

admin log -N
	ログの最近の N行を取り寄せる。例 admin log -40 (最近の40行)

admin log all
	ログファイル全体を取り寄せる。とても大きいかも知れないので注意。

2.4	メンバーリストの変更

admin add address
	address の人をMLに登録する

admin off address
	address の人をML一時おやすみにする
	(actives file にのみ作用する)

admin on address
	address の人のML一時おやすみを解除
	(actives file にのみ作用する)

admin bye address
	address の人をMLメンバーから削除

admin chaddr old-addr new-addr
admin change old-addr new-addr
admin change-address old-addr new-addr
	old-addrを削除して、new-addrを登録する

admin matome address 引数 
	address の人を まとめおくりに
	引数は 6 6u 6i 等

admin skip address
	この address を配送はしないけど投稿はできるようにする

2.5	管理者メンバーリストの変更

admin addadmin address
admin addpriv  address
	address の人を管理者メンバーとして登録

admin byeadmin address
admin byepriv  address
	address の人を管理者メンバーから削除

2.6	ファイル操作

admin dir
	MLのある場所の階層全部のリスト(ls -lR)
	注意: $DIR 下全部なのででっかいかもしれない

admin ls options
	MLのある場所のリスト(ls)

	admin ls -l
	admin ls -l spool
	のようにオプション(一行に書く限りいくつあってもいい)も使える

admin get filename
	MLのある場所の filename というファイルをとってくる

admin resend filename address
	MLのある場所の filename というファイルを address へ送る。

admin forward
	admin forward 行より後ろをMLへフォワードする
	本来モデレータモードで使うためのもの
	でもこのコマンドをTYPOして…という危険はありうるので注意

admin newinfo
admin newguide
	この命令に続くメール本文の残り部分を新しい GUIDE ファイルとして
	入れ換える

*** 注意 *** [#l5cf9e0d]
ファイルを削除、上書きをするコマンドは security 上の問題があります。上
書きするファイルは @REMOTE_RECONFIGURABLE_FILES という配列に入っている
ファイル群です。必要ならこの配列に付け加えてください。

admin put filename
	MLのある場所の filename というファイルを置く。
	もし filename というファイルがある場合は、
	古い filename は filename.bak に変えておく

admin remove filename
	MLのある場所の filename というファイルを削除

admin rename filename1 filename2
	MLのある場所の filename1 というファイルを filename2 という名
	前にする。

ただし rename は filename1 filename2 とも @REMOTE_RECONFIGURABLE_FILES 
のファイルでないといけないため使い道はあまりないだろう。

admin unlink-article ID
admin remove-article ID
	記事番号 ID の記事を削除して、ファイルの中身は "removed by an
	administrator" というフレーズに置き換えられる。html 形式のファ
	イルも作ることになっていればそれも置き換える。なおexpireを考慮
	して時刻は置き換えるファイルのものと同じに設定し直している。
	注意: 間違った記事を消しても取消はできない。

2.7	PGP (Pretty Good Privacy)

admin pgp -ka 
	メールのこの行以降の部分を pubric key としてMLサーバの 
	pub-ring に加える

admin pgp -kv
	現在の key-ring を見る 

*せっかくPGP使うんだから、リモート管理の認証モードはPGPが望ましいでしょ
*うね

2.8	特殊なもの

admin はつかないけど…

set debug		
	デバッグモードをオン

set addr_check_max LEVEL
	アドレスのチェックを LEVEL(数字)へ。つまり
	$ADDR_CHECK_MAX = LEVEL へ

set exact
	アドレスのチェックをExact へ
	実は $ADDR_CHECK_MAX = 9; です:-)

AUTHOR: Ken'ichi Fukamachi