NONE TITLE 3.html
Keywords: NONE TITLE,fml, flexible mailing list manager, not listserv style but fmlserv emulates listserv or majordomo style

[PREVIOUS CHAPTER] [______TOC_______]

3 事例集

    3.1	ヘルプメッセージを消す

    sub DUMMY {};
    $PROC_GEN_INFO = 'DUMMY';

    これは、以下のメッセージを消す呪文です。
    fml-current (2000/07/26 以降)には DUMMY という関数があるので
    $PROC_GEN_INFO = 'DUMMY';
    だけで十分です。

    --elena@fml.org, Be Seeing You!

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

           Help: <mailto:elena-ctl@fml.org?body=help>
    Unsubscribe: <mailto:elena-ctl@fml.org?body=unsubscribe>

    If you have any questions or problems,
       please contact elena-admin@fml.org
           or
       send e-mail with the body "help"(without quotes) to
          elena-ctl@fml.org
          (here is the automatic reply, so more preferable)

    e.g. on a Unix Machine
    (shell prompt)% echo "help" |Mail elena-ctl@fml.org

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

    3.2	例: fmlでの confirm のメールの本文をハックする (ひとつのＭＬだけ)

    fml-support: 07974, 07975
    「FMLから確認のメールの内容を、一つのメーリングリストだけ変えたい」

    日本語で返事を返すテンプレートが /usr/local/fml/messages/ にあります。

    	% cp -pr /usr/local/fml/messages /var/spool/ml/elena

    してください。confirmation 関係は

    	/var/spool/ml/elena/messages/Japanese/confirm

    というテンプレートがあります。
    このファイルの一番上のテンプレートを変更してみて下さい。

    confirm.auto_regist.preamble:
    	こちらは<_ARG0_>メーリングリスト(ＭＬ)のfmlです。
    	これはＭＬに登録する意志の確認をするメールです。
    	このＭＬに登録していいなら
    	...

    という部分があります、そこを編集してみてください。
    /var/spool/ml/elena/messages が /usr/local/fml/messages に優先されます。

    NOTE: 現在の実装(2000/05: 3.0-current も 3.0-stable も)ではこのように
    して下さい。しかし、これでは upgrade した時にそのＭＬだけ upgrade され
    なくなってしまいます。もうちょっと検索の仕方を工夫する余地があります。
    将来の version ではもうちょっと賢くならないかと検討しています。

    3.3	例: fmlでのwelcomeメールの本文をハックする (全ＭＬ共通)

    ◯ $DIR/welcome ファイルをいじる

    ◯ 一番先頭の

       メーリングリストへの投稿は	<foo@bar.jp>
       コマンドは			<foo-ctl@bar.jp>
       管理者宛のメールは		<foo-admin@bar.jp>

    のような部分をいじりたい場合は

    /usr/local/fml/messages/Japanese/amctl というファイルの

    amctl.added.caution:
    	注意: このメールにリプライするとメーリングリスト宛になります。
    	メーリングリストへの投稿は	<_ARG1_>
    	コマンドは			<_ARG2_>
    	管理者宛のメールは		<_ARG0_>
    	へ送って下さい。

    という部分をいじってください。

    [KNOWN_BUGS]

    XXX ただこのファイルはインストール時に上書きされてしまうので
    XXX /var/spool/ml/etc/fml/messages/Japanese/amctl などという場所へコピー
    XXX してそのファイルを好きなようにいじるべきです。しかし今度は fml を
    XXX updateしたときに新しい /usr/local/fml/messages/Japanese/amctl の内
    XXX 容が最新版を反映してくれません。現在のコードを修正してだめなら
    XXX /usr/local/fml のほうもさがすように修正するべきでしょう。

    3.4	welcomeというファイルの内容の前についてしまう部分を削除/編集

    [3.0pl113 以降]

    この部分はあるテンプレートファイルを変換して生成しています。

    /usr/local/fml/messages/Japanese/amctl というファイルに

    amctl.added.caution:
            注意: このメールにリプライするとメーリングリスト宛になります。
            メーリングリストへの投稿は      <_ARG1_>
            コマンドは                      <_ARG2_>
            管理者宛のメールは              <_ARG0_>
            へ送って下さい。

    という定義があります。この文章の部分を編集/消してみることでカスタマイ
    ズできます。

    [3.0pl112 まで]

    それでも英語のwarningがでてしまいます。

    A2: 注意書きを後ろに持っていくのはwelcome というファイルを編集しましょう

    3.5	メールの最後に付加情報をつける設定

    注意: 基本的にコマンドの話です。

    	$PREAMBLE_MAILBODY	（前）
    	$TRAILER_MAILBODY	（後）
    	を本文の前後に必ず付けます。

    つまり、
    	e.g. HELP コマンドにたいして、

    	$PREAMBLE_MAILBODY	（前）
    	HELPファイル本文
    	$TRAILER_MAILBODY	（後）

    のようになります。昔のやり方は

       $SMTP_OPEN_HOOK = q# $e{'Body'} .= $PREAMBLE_BODY.$e{'Body'}; #;
       ＃注：普通のＭＬのメールに $PREAMBLE_BODY がついて配送

    ですが今は汎用性のためSMTPライブラリ中で処理されます。

    これと同様にすれば、本文にメールカウントを埋め込むことも可能になります。
    注意： 配送されるメール本体につける方法。これは倫理的な問題があるので
    変数などで容易にできるように実装されていません。
    If you rewrite the distribution mail, please use a hook BY YOUR OWN
    RESPONSIBILITY AND RISK.

    Example: 注意:このHOOKが走る関数中では %e == %Envelope

       $SMTP_OPEN_HOOK = q# $e{'Body'} .= "Mail Count: $ID\n\n".$e{'Body'}; #;

    例： メール本文にヘルプを常につけたす

       $SMTP_OPEN_HOOK = q%

    	$e{'Body'} .=
           "\nTo need help, please send 'help' to elena-ctl\@fml.org.";

       %;

    3.6	command status report をしなくさせる

    command status をおくりかえしている部分を disable するには
    ＃コマンドの普通の受け答え（？）の類をやみにほうむるには

        &DEFINE_MODE('disablenotify');

    と config.ph に書くとこの関数がダミーの状態で呼ばれるけど何もしないよ
    うになります。ただし新規登録の時の welcome 部分は例外処理してるからこ
    れじゃだめなんですけどね

    3.7	welcomeというファイルの内容の前についてしまう部分を削除/編集

    [3.0pl113 以降]

    この部分はあるテンプレートファイルを変換して生成しています。

    /usr/local/fml/messages/Japanese/amctl というファイルに

    amctl.added.caution:
            注意: このメールにリプライするとメーリングリスト宛になります。
            メーリングリストへの投稿は      <_ARG1_>
            コマンドは                      <_ARG2_>
            管理者宛のメールは              <_ARG0_>
            へ送って下さい。

    という定義があります。この文章の部分を編集/消してみることでカスタマイ
    ズできます。

    [3.0pl112 まで]

    それでも英語のwarningがでてしまいます。

    A2: 注意書きを後ろに持っていくのはwelcome というファイルを編集しましょう

    3.8	本文へ注意をつけたす (2000/06/05 以降の fml-current の場合)

    $START_HOOK = q#
    	my ($s) = &GET_BUFFER_FROM_FILE("$DIR/info");
    	&ENVELOPE_APPEND('Body', &STR2JIS($s));
    #;

    ここで $DIR/info は /var/spool/ml/elena/info に展開される。

    /var/spool/ml/elena/info というファイルを作りこの中に
    ◯◯◯ ＭＬの抜け方は ……… です。
    などと書いておきます。

    過去のリリース、fml-stable および 2000/06 以前の current では
    %Envelope を直接いじってください。

    CAUTION: メール本文をいじることと慣習法と倫理(私見)
    常識的にはメールも郵政省の郵便も本質的に同じはずです、輸送形態が非常に
    異なるのは事実ですが。なんらかの理由で普通の配送時のメール本文になにか
    付けて配送したい時、つまりールの中を勝手にいじって配送するとする場合、
    それは「人の郵便を勝手に開けて、人の手紙に手を加えるようなもので、倫理
    的に許されるのか？」疑問です。いってみればヘッダ情報は封筒の表のような
    ものです。付加情報をつけたり、転送先を書いたり情報の削除・追加をします。
    でも封筒の中身を開けて「この封筒の中身は13000番めの文通封書です」と本
    文に付けたしてからまた封を閉じることを郵便局の人間がやったら人々はその
    行為を許すでしょうか?

    その他の問題:

    1. degital signature

    	メールの degital signature があったら、勝手に文章を付け足すこ
    	とはそれを無意味にしてしまいます。いったいどこにつけるのが正し
    	いのか？

    2. MIME

    	MIME blocks の終った後につけても、多くのメールソフトでは
    	それは見えないでしょう。
    	もっともＭＬのメールが全部 MIME multipart ということは
    	ないでしょうから、それなりに付け足すヘルプは見てもらえるだろう
    	ということでOKなのかもしれません。

    3.9	本文へ注意をつけたす (2000/06/05 以前の場合)

    これと同様にすれば、本文にメールカウントを埋め込むことも可能になります。
    注意： 配送されるメール本体につける方法。これは倫理的な問題があるので
    変数などで容易にできるように実装されていません。

    注意: このHOOKが走る関数中では %e == %Envelope

    例： メール本文にヘルプを常につけたす

    $SMTP_OPEN_HOOK = q%
       my($help_message) = "\n---\nHELP: please send 'help' to $CONTROL_ADDRESS";
       $e{'Body'} .= $help_message;
    %;