fml8 チュートリアル (バージョン 7.99.1-20180910)
Prev | Chapter 20. コマンドの拡張 | Next

# レシピ’s

## コマンド一般

1. コマンドメールなどの返事は Reply-To: ではなく From: へ
2. help などのメッセージをアップグレードする
3. help メッセージの元ファイルをカスタマイズする。
4. confirmation メッセージをカスタマイズする
5. news というファイルを送り返すコマンドを作る
6. mget コマンドのファイルモードのデフォルトを変更したい
7. get コマンドを mget mp と同じ意味にする
8. command status report を抑制したい
9. コマンドメールの内容を監視したい

1. コマンドメールなどの返事は Reply-To: ではなく From: へ

コマンドメールの送信者(From:)へ返事を返すのがデフォルトの挙動です。

2. help などのメッセージをアップグレードする

fml8 をアップグレードすれば自動的にアップグレードされます。 fml4 と異なり fml8 では help コマンドのメッセージテンプレートは 次のようなパスに存在するからです。

    /usr/local/share/fml/$VERSION/message/euc-jp/user/help
    /usr/local/share/fml/$VERSION/message/us-ascii/user/help

ただしＭＬのホームディレクトリに help ファイルがある場合は それが help コマンドの返事に使われています。 よって help ファイルを自分で用意しているなら 自分で編集してください。

3. help メッセージの元ファイルをカスタマイズする。

fml8 では help コマンドのメッセージテンプレートは次のようなパスに存 在します。これを編集してしまうというのが第一案。ただし、これをするとバー ジョンアップをした際に変更点が無効になってしまいます。

    /usr/local/share/fml/$VERSION/message/euc-jp/user/help
    /usr/local/share/fml/$VERSION/message/us-ascii/user/help

ＭＬ独自の help メッセージは ＭＬホームディレクトリの下に「local/share/message/言語/」を作り、 その下におけば有効になります。

    [Example]

    /var/spool/ml/elena/local/share/message/euc-jp/user/help
    /var/spool/ml/elena/local/share/message/us-ascii/user/help

常にこのファイルが使われるので、 バージョンアップしても内容は変わりません。 それが欠点です。

なおＭＬのホームディレクトリに help ファイルがある場合は それが help コマンドの返事に使われています(優先されます)。 よって help ファイルを自分で用意しているなら 自分で編集してください。 この場合も、常にこのファイルが使われるので、 バージョンアップしても内容は変わりません。 逆に言えば、それが欠点です。

4. confirmation メッセージをカスタマイズする

help メッセージのカスタマイズと同様ですので、 くわしくは前レシピを参照して下さい。

    /usr/local/share/fml/$VERSION/message/euc-jp/command/confirm
    /usr/local/share/fml/$VERSION/message/us-ascii/command/confirm

5. news というファイルを送り返すコマンドを作る

このＭＬの最新情報が書き込まれている $ml_home_dir/news というファイルがあるとしましょう。 これをＭＬのメンバーなら誰でも取り寄せられるようにしたい。 そういった例を考えます。

一番簡単な作り方は help コマンドをぱくることです:) たとえば FML::Command::User::help モジュール( /usr/local/lib/fml/$VERSION/FML/Command/User/help.pm )をコピーして FML::Command::User::news ( /usr/local/lib/fml/site_local/FML/Command/User/news.pm ) モジュールをつくってください。 そして、news.pm の中の help という文字列を news に変えるだけです。

    [例]

    ... 略 ...

    sub process
    {
        my ($self, $curproc, $command_args) = @_;

        $self->send_user_xxx_message($curproc, $command_args, "news");
    }
    ... 略 ...

the Section called ケーススタディ: 独自の help コマンドを作る や the Section called コマンドの拡張: コマンドメールの場合 in Chapter 41 も参照してください。

6. mget コマンドのファイルモードのデフォルトを変更したい

いまのところできません。

じつのところ、get コマンドと mget コマンドは同じです。 そして、いまのところ get コマンドのファイルモードは変更できません。

7. get コマンドを mget mp と同じ意味にする

fml8 ではデフォルトで、その意味(MIME/Multipart モード)になっています。

正確には、get と mget は同じコマンドで、get コマンドのファイルモードは (いまのところ) MIME/Multipart しかありません。

8. command status report を抑制したい

いまのところ、 フィルタについては off/on できますが、 一般には出来ません。

9. コマンドメールの内容を監視したい

(1) ログを perl で加工する。

(2) コマンドメール自体のコピーを受けとる。 たとえば、コマンドメールを受けとる設定のところに管理者も追加しておくと いった具合です。

    elena-ctl: :include:/var/spool/ml/elena/include-ctl, elena-admin

## admin コマンド

1. admin コマンドでＭＬの再初期化をしたい
2. admin コマンドでＭＬのメンバーリストを一気に削除/登録
3. admin add 時に welcome を送る
4. admin add で登録できるメールアドレスの範囲を制限したい
5. 管理用のコマンドを忘れた

1. admin コマンドでＭＬの再初期化をしたい

そういう危ないことは出来ません。 makefml (CUI) を実行する権限のある人に頼んで下さい。

2. admin コマンドでＭＬのメンバーリストを一気に削除/登録

いまのところ、便利なコマンドは作ってないので、 「admin useradd アドレス」や「admin userdel アドレス」 を書き連ねる方法しかありません _o_

実装する気はあります。考え中です。

ようは「リスト.xls ファイルを、ぺしっとはるとかしたい」んですよね？

3. admin add 時に welcome を送る

未実装です。

4. admin add で登録できるメールアドレスの範囲を制限したい

メールアドレス自体の表現範囲は制限されています。 FML::Restriction::Base をみてください。

subscribe 可能な人を特定のドメインだけに限りたいといった機能は未実装です( いや HOOK を使えば出来ますけど)。

5. 管理用のコマンドを忘れた

特別な方法はないのですが、 あえていえば fml8 のドキュメントを読んで下さい :-)

http://www.fml.org/software/fml8/

Prev | Home | Next
コマンドの拡張 | Up | フィルタ

fml 8.0 (fml-devel) project homepage is www.fml.org/software/fml8/.
fml 4.0 project homepage is www.fml.org/software/fml4/.
about one floppy bsd routers, see www.bsdrouter.org/.
other free softwares are found at www.fml.org/software/.

author's homepage is www.fml.org/home/fukachan/.
Also, visit nuinui's world :) at www.nuinui.net.

For questions about FML, e-mail <fml-bugs@fml.org>.