From a258175aff5d5beb65a28dc29776cf16d4c2ad70 Mon Sep 17 00:00:00 2001 From: fukachan Date: Sun, 28 Jul 2002 06:26:55 +0000 Subject: improve usage around makefml --- fml/doc/ja/tutorial/book.sgml | 9 +- fml/doc/ja/tutorial/customize/chapter.header.sgml | 15 + .../ja/tutorial/customize/chapter.ml_style.sgml | 13 + fml/doc/ja/tutorial/customize/chapter.sgml | 13 - fml/doc/ja/tutorial/include/chapters.ent | 27 +- fml/doc/ja/tutorial/module/IO::Adapter.sgml | 212 +++++++++++--- fml/doc/ja/tutorial/usage/command.sgml | 12 +- fml/doc/ja/tutorial/usage/customize.sgml | 13 - fml/doc/ja/tutorial/usage/fmlconf.sgml | 4 +- fml/doc/ja/tutorial/usage/fmldoc.sgml | 4 +- fml/doc/ja/tutorial/usage/fmlhtmlify.sgml | 4 +- fml/doc/ja/tutorial/usage/fmlthread.sgml | 4 +- fml/doc/ja/tutorial/usage/makefml.sgml | 310 +++++++++++++++------ fml/doc/ja/tutorial/usage/onhost.sgml | 22 +- 14 files changed, 489 insertions(+), 173 deletions(-) create mode 100644 fml/doc/ja/tutorial/customize/chapter.header.sgml create mode 100644 fml/doc/ja/tutorial/customize/chapter.ml_style.sgml delete mode 100644 fml/doc/ja/tutorial/customize/chapter.sgml delete mode 100644 fml/doc/ja/tutorial/usage/customize.sgml (limited to 'fml/doc/ja/tutorial') diff --git a/fml/doc/ja/tutorial/book.sgml b/fml/doc/ja/tutorial/book.sgml index dd3b2fb4..9b497437 100644 --- a/fml/doc/ja/tutorial/book.sgml +++ b/fml/doc/ja/tutorial/book.sgml @@ -2,7 +2,7 @@ This is an sgml using DocBook dtd. Use sgmltools version 2.0.x or above to generate various output formats. -$FML: book.sgml,v 1.40 2002/07/23 07:19:46 fukachan Exp $ +$FML: book.sgml,v 1.41 2002/07/23 09:33:25 fukachan Exp $ --> + &chapter.customize.mlstyle; + &chapter.customize.header; &chapter.threadtrack.usage; @@ -129,7 +132,7 @@ $FML: book.sgml,v 1.40 2002/07/23 07:19:46 fukachan Exp $ &chapter.delivery; &chapter.message; - &chapter.replybyfml; + &chapter.command; diff --git a/fml/doc/ja/tutorial/customize/chapter.header.sgml b/fml/doc/ja/tutorial/customize/chapter.header.sgml new file mode 100644 index 00000000..92056cc5 --- /dev/null +++ b/fml/doc/ja/tutorial/customize/chapter.header.sgml @@ -0,0 +1,15 @@ + + + + + ヘッダの書き換え + + + +ヘッダ情報は Mail::Header クラスのオブジェクトに収納されています。 +Mail::Header で操作可能なことは何でもできます。 + + + diff --git a/fml/doc/ja/tutorial/customize/chapter.ml_style.sgml b/fml/doc/ja/tutorial/customize/chapter.ml_style.sgml new file mode 100644 index 00000000..8d10670b --- /dev/null +++ b/fml/doc/ja/tutorial/customize/chapter.ml_style.sgml @@ -0,0 +1,13 @@ + + + + カスタマイズの事例 + + + + +§.usage.procmail; + + diff --git a/fml/doc/ja/tutorial/customize/chapter.sgml b/fml/doc/ja/tutorial/customize/chapter.sgml deleted file mode 100644 index a5084533..00000000 --- a/fml/doc/ja/tutorial/customize/chapter.sgml +++ /dev/null @@ -1,13 +0,0 @@ - - - - カスタマイズの事例 - - - - -§.usage.procmail; - - diff --git a/fml/doc/ja/tutorial/include/chapters.ent b/fml/doc/ja/tutorial/include/chapters.ent index 1282fa31..89f0caad 100644 --- a/fml/doc/ja/tutorial/include/chapters.ent +++ b/fml/doc/ja/tutorial/include/chapters.ent @@ -1,5 +1,5 @@ @@ -48,18 +48,19 @@ - - - - - - - - - - - - + + + + + + + + + + + + + diff --git a/fml/doc/ja/tutorial/module/IO::Adapter.sgml b/fml/doc/ja/tutorial/module/IO::Adapter.sgml index f2233c93..5824190d 100644 --- a/fml/doc/ja/tutorial/module/IO::Adapter.sgml +++ b/fml/doc/ja/tutorial/module/IO::Adapter.sgml @@ -1,33 +1,34 @@ - IO::Adapter + IO へのアダプター層 (IO::Adapter クラス) - + + - IO へのアダプター層 (IO::Adapter) + IO::Adapter の概要 -&fmldevel; でのメンバーリストの読み書きは -IO::Adapter という抽象クラスを通じて、 -アドレスの登録/削除を行なうようになっています。 - - - -例えば次のように使っています。 +&fmldevel; でのメンバーリストの読み書き、 +例えばアドレスの登録/削除、は +IO::Adapter という抽象クラスを通じて行ないます。 +例えば次のように使います。 use IO::Adapter; -$obj = new IO::Adapter ($map, $map_params); +$obj = new IO::Adapter $map, $map_params; $obj->open || croak("cannot open $map"); -while ($x = $obj->getline) { ... } +while ($x = $obj->get_next_key()) { ... } $obj->close; -ここで $map は次のようなものが使えます。 + + + +$map は次のようなものが使えます。 file:/var/spool/ml/elena/actives unix.group:root @@ -42,33 +43,172 @@ ldap:id (未 file: は通常のファイルです。 unix.group:root は /etc/group の root のエントリにあるユーザのリストを、 nis.group:root は NIS の root のエントリにあるユーザのリストです。 - - - mysql:id は MySQL へのアクセスです。 mysql:id で指定されたパラメータを用います。 このパラメータは new() を実行する際に別途与える必要があります。 + + + + + + + + メソッド + + + +IO::Adapter の提供する公式なメソッドは次の通りです。 + +new() +open() +close() + +get_next_key() + +add(KEY) +delete(KEY) + +getpos() +setpos(NUM) +eof() + +touch() + +find(REGEXP, $args) + +です。 +KEY はデータベースのプライマリキーで、 +通常メールアドレスです。 +REGEXP は正規表現ですが、たいていはメールアドレスです。 + + + +多くのマップを同じように扱うために、 +メソッドは極力最小限にものに限定する必要があります。 + + + +最低限のメソッド群の定義は実際に実装してみる実験を通じて選ばれました。 +そして、むしろファイルより SQL との IO を想定しつつ、選びました。 +そのため、&fml4; のファイルを前提にした様々な処理にくらべ、 +やや不自由に思えるでしょうが、そうしないとうまく抽象化ができません。 + + + + + + + + file マップ + + + +『file:ファイル名』もしくは単なる『ファイル名』は +ごく普通のテキストファイルへの IO を抽象化したものです。 + + + + + + + + unixgroup マップ + + + +/etc/group を抽象化します。 +当然 READ ONLY です。 + + + +/etc/group の + +wheel:*:0:root,rudo,kenken + +は IO::Adapter では unixgroup:wheel としてアクセスできます。 + +$obj = new IO::Adapter "unixgroup:wheel"; + +というオブジェクトに対し get_next_key() すると +グループのメンバーが順に返されます。 +つまり 3 行のファイルを読みだすものとして、 + +root +rudo +kenken + +のようなファイルとみなされます。 + + + + + + + + NIS マップ + + + +/etc/group とほぼ同様ですが、ソースが +NIS/YP から group にあたるものを引っ張ってくるところだけが異なります。 + + + + + + + + MySQL マップ + + + +&fmldevel; の設定では .cf の中にSQL の設定を書いておきたいと思います。 +つまり一つの cf ファイルにいろいろ書けるようにしておきたい。 + + + +そこで、[mysql:members] (から終りまで、もしくは次の =head 文まで)の +ブロックで、マップのタイプと識別子を表現しています。 + +config.cf の例 + +member_maps = mysql:members + +recipient_maps = mysql:recipients + +[mysql:members] + +sql_server = localhost +sql_user = fml +sql_password = uja +sql_database = fml +sql_table = ml + +sql_find = select * from ... + + ... + + + + +IO::Adapter は + +new IO::Adapter "mysql:members", $config; + +のように呼び出します。 +この $config は次のようなハッシュ・リファレンスになっていることが +期待されています。 -my $map = 'mysql:toymodel'; -my $map_params = { - $map => { - sql_server => 'localhost', - user => 'fukachan', - user_password => 'uja', - database => 'fml', - table => 'ml', - params => { - ml_name => 'elena', - file => 'members', - }, - }, -}; - -my $obj = new IO::Adapter ($map, $map_params); -$obj->open(); -$obj->add( 'rudo@nuinui.net' ); -$obj->close(); +$config => { + [mysql:members] => { + sql_sever => localhost + ... + } +} +FML::Config は .cf から上のようなハッシュを構成します。 +よって IO::Adapter の new() の際には、 +FML::Config のオブジェクトを引数で渡せば OK です。 diff --git a/fml/doc/ja/tutorial/usage/command.sgml b/fml/doc/ja/tutorial/usage/command.sgml index 21d25da8..8d2ab602 100644 --- a/fml/doc/ja/tutorial/usage/command.sgml +++ b/fml/doc/ja/tutorial/usage/command.sgml @@ -1,5 +1,5 @@ @@ -13,6 +13,16 @@ fml 寄せるなどの処理です。 + + +fml の基本的な使い方は makefml での操作です。 +ユーザが使えるコマンド/ユーザに提供されているコマンド操作は +その操作のごく一部です。 +それは makefml のコマンドの一部を使えなくし、 +適宜 confirmation を付け加えたものといえます。 + + + diff --git a/fml/doc/ja/tutorial/usage/customize.sgml b/fml/doc/ja/tutorial/usage/customize.sgml deleted file mode 100644 index 81cfc738..00000000 --- a/fml/doc/ja/tutorial/usage/customize.sgml +++ /dev/null @@ -1,13 +0,0 @@ -<!-- - $FML: customize.sgml,v 1.1 2002/07/05 04:01:37 fukachan Exp $ ---> -<chapter id="cuctomize"> - <title> - カスタマイズの事例 - - - - -§.usage.procmail; - - diff --git a/fml/doc/ja/tutorial/usage/fmlconf.sgml b/fml/doc/ja/tutorial/usage/fmlconf.sgml index ac9739ed..c8f7e318 100644 --- a/fml/doc/ja/tutorial/usage/fmlconf.sgml +++ b/fml/doc/ja/tutorial/usage/fmlconf.sgml @@ -1,10 +1,10 @@ - 設定を表示する (fmlconf) + 設定を表示する (fmlconf コマンド) diff --git a/fml/doc/ja/tutorial/usage/fmldoc.sgml b/fml/doc/ja/tutorial/usage/fmldoc.sgml index ef488294..a072b11f 100644 --- a/fml/doc/ja/tutorial/usage/fmldoc.sgml +++ b/fml/doc/ja/tutorial/usage/fmldoc.sgml @@ -1,10 +1,10 @@ - モジュールのドキュメントを表示する (fmldoc) + モジュールのドキュメントを表示する (fmldoc コマンド) diff --git a/fml/doc/ja/tutorial/usage/fmlhtmlify.sgml b/fml/doc/ja/tutorial/usage/fmlhtmlify.sgml index 1962fb50..1d0cb6c1 100644 --- a/fml/doc/ja/tutorial/usage/fmlhtmlify.sgml +++ b/fml/doc/ja/tutorial/usage/fmlhtmlify.sgml @@ -1,10 +1,10 @@ - 記事を HTML 化する (fmlhtmlify) + 記事を HTML 化する (fmlhtmlify コマンド) diff --git a/fml/doc/ja/tutorial/usage/fmlthread.sgml b/fml/doc/ja/tutorial/usage/fmlthread.sgml index ed5ab6fc..cd975917 100644 --- a/fml/doc/ja/tutorial/usage/fmlthread.sgml +++ b/fml/doc/ja/tutorial/usage/fmlthread.sgml @@ -1,10 +1,10 @@ - スレッドを表示する (fmlthread) + スレッドを表示する (fmlthread コマンド) diff --git a/fml/doc/ja/tutorial/usage/makefml.sgml b/fml/doc/ja/tutorial/usage/makefml.sgml index f90ceea4..e7072e0d 100644 --- a/fml/doc/ja/tutorial/usage/makefml.sgml +++ b/fml/doc/ja/tutorial/usage/makefml.sgml @@ -1,98 +1,246 @@ - + + - makefml を使って、ユーザの登録/削除他(あらゆる:) + MLの作成 -makefml の基本的な使い方は &fml4; の makefml と同様です。 -というより、できるだけ互換性を保つように構築する予定です。 + +% su fml +% makefml newml ML名 + +ML名は @ 抜きの場合デフォルトのドメイン、 +アドレスを完全に指定すればバーチャルドメインまで含めて +makefml がよろしくがんばります。 +例えば + +% makefml newml elena +% makefml newml elena@fml.org + -現状 makefml に命令を与えると admin コマンドと同じ動作をするようになっ -ています。 -つまり特権的な動作ということです。 -例えば、メンバーの登録に confirmation は必要ありません。 +くわしくは + + + +を参照して下さい。 - -現在使えるコマンドは以下のものです。 - - - - メンバーの登録 - ( - subscribe - add - ) - - - - - - メンバーの削除 - ( - bye - remove - resign - signoff - unsubscribe - ) - - - - - - アドレスの変更 - ( - chaddr - ) - - - - - - リモート管理者の登録 - ( - addadmin - addpriv - ) - - - - - - リモート管理者の削除 - ( - byeadmin - byepriv - ) - - - - - - MLの作成 - ( - newml - ) - - - - - + + + + + MLの削除 - ( - rmml - ) - </para> - </listitem> + + + + +% su fml +% makefml rmml ML名 + +ML名は @ 抜きの場合デフォルトのドメイン、 +アドレスを完全に指定すればバーチャルドメインまで含めて +makefml がよろしくがんばります。 +例えば + +% makefml rmml elena +% makefml rmml elena@fml.org + + + + +できるだけ newml の反対の動作をします。 +ホームディレクトリを消すとか +MTA の alias の該当エントリを消すといったことなども +できそうなことは全て頑張ります。 + + + + + + + + MLメンバーの登録と削除 + + + +一般のMLメンバーの登録は useradd 削除は userdel です。 + +% su fml +% makefml useradd ML名 メールアドレス +% makefml userdel ML名 メールアドレス + +ML名は @ 抜きの場合デフォルトのドメイン、 +アドレスを完全に指定すればバーチャルドメインまで含めて +makefml がよろしくがんばります。 +例えば + +% su fml +% makefml useradd elena rudo@nuinui.net +% makefml userdel elena rudo@nuinui.net +% makefml useradd elena@fml.org rudo@nuinui.net +% makefml userdel elena@fml.org rudo@nuinui.net + + + + +なお、便利なように +useradd コマンドは + +useradd +adduser +subscribe +add + +どれを使っても同じです。 +また、userdel は + +userdel +deluser +bye +remove +resign +signoff +unsubscribe + +でも同様です。 + + + + - + + + + MLメンバーのアドレス変更 + + + + + +% su fml +% makefml useradd ML名 古いメールアドレス 新しいメールアドレス + +ML名は @ 抜きの場合デフォルトのドメイン、 +アドレスを完全に指定すればバーチャルドメインまで含めて +makefml がよろしくがんばります。 +例えば + +% su fml +% makefml chaddr elena rudo@nuinui.net teddy@nuinui.net +% makefml chaddr elena@fml.org rudo@nuinui.net teddy@nuinui.net + + + + + + + + + + + リモート管理者の登録と削除 + + + +一般のMLメンバーの登録は addadmin 削除は deladmin です。 + +% su fml +% makefml addadmin ML名 メールアドレス +% makefml deladmin ML名 メールアドレス + +ML名は @ 抜きの場合デフォルトのドメイン、 +アドレスを完全に指定すればバーチャルドメインまで含めて +makefml がよろしくがんばります。 +例えば + +% su fml +% makefml addadmin elena rudo@nuinui.net +% makefml deladmin elena rudo@nuinui.net +% makefml addadmin elena@fml.org rudo@nuinui.net +% makefml deladmin elena@fml.org rudo@nuinui.net + + + + +なお、便利なように +addadmin コマンドは + +addadmin +addpriv + +どれを使っても同じです。 +また、deladmin は + +byeadmin +byepriv + +でも同様です。 + + + + + + + + + + モデレータの登録と削除 + + + +一般のMLメンバーの登録は addmoderator 削除は delmoderator です。 + +% su fml +% makefml addmoderator ML名 メールアドレス +% makefml delmoderator ML名 メールアドレス + +ML名は @ 抜きの場合デフォルトのドメイン、 +アドレスを完全に指定すればバーチャルドメインまで含めて +makefml がよろしくがんばります。 +例えば + +% su fml +% makefml addmoderator elena rudo@nuinui.net +% makefml delmoderator elena rudo@nuinui.net +% makefml addmoderator elena@fml.org rudo@nuinui.net +% makefml delmoderator elena@fml.org rudo@nuinui.net + + + + + + + + + ログを見る + + + + +% makefml log elena +% makefml log elena@fml.org + + + + + + + + + メンバーリスト見る + + + + +% makefml list elena + diff --git a/fml/doc/ja/tutorial/usage/onhost.sgml b/fml/doc/ja/tutorial/usage/onhost.sgml index 89d30e09..78854623 100644 --- a/fml/doc/ja/tutorial/usage/onhost.sgml +++ b/fml/doc/ja/tutorial/usage/onhost.sgml @@ -1,24 +1,34 @@ - ML管理者にできること (MLサーバのホスト上で makefml を使う) + MLサーバのホスト上でコマンドを使ってできること + (MLの一番偉い管理者にできること) + +makefml の基本的な使い方は &fml4; の makefml と同様です。 +というより、できるだけ互換性を保つように構築する予定です。 + + - ホスト上でできること + ホスト上でできること、その権限について -MLサーバのホストに入ることができる(例: slogin してシェルが取れる) -人は、通常MLにとって最強の人を意味します。 +現状 makefml に命令を与えると admin コマンドと同じ動作をするようになっ +ています。 +つまり特権的な動作ということです。 +例えば、メンバーの登録に confirmation は必要ありません。 +MLサーバのホストに入ることができる(例: slogin してシェルが取れる) +人は、通常MLにとって最強の人を意味します。 ファイルを直接編集することで、どんなことでもできるわけですから、 無敵です。 @@ -31,6 +41,8 @@ そのため、通常は makefml ( /usr/local/bin/makefml )を 使うことで、fml を操作して下さい。 +というのが fml の操作ポリシーです。 +もちろんファイルを編集しても構いませんが。 -- cgit v1.2.1