fml8 チュートリアル (バージョン 7.99.1-20180910)
Prev | Chapter 17. カスタマイズの事例 | Next

# レシピ’s [配送関連]

1. MAINTAINER を elena-admin 以外にしたい。
2. リモート管理者はＭＬのメンバーでなくても投稿したい。
3. Subject: に応じて配送リストを変更したい
4. 昼と夜で配送リストを変更する
5. /etc/group を反映したＭＬ
6. 送信者(投稿者)にはＭＬの記事は配送しない
7. 特定の受信者だけ記事の内容を変更したい

1. MAINTAINER を elena-admin 以外にしたい。

config.cf で maintainer 変数を設定して下さい。

    maintainer = アドレス

    [EXAMPLE]

    maintainer = admin@example.co.jp

設定するアドレス( admin@example.co.jp )でメールを受けとれるように しておいてください。

なおメールサーバによってはメールの送信者が自ドメイン以外からの場合、 受信を拒否することがあるので注意して下さい。

単にエラーメールなどの受取先を変えたいだけなら、 maintainer ( elena ML なら elena-admin@fml.org ) のフォワード先を変更する方が簡単です。 その設定は /etc/mail/aliases を変更するか、 $maintainer_recipient_maps で行なえます。

前者は MTA がフォワード先を変更していますが、 後者では一度 elena-admin 宛のメールを fml8 が受け、 fml8 が $maintainer_recipient_maps にしたがって再配送を行ないます。

”エラーメール”を fml8 が再配送するという意味で若干不安のある実装で すが、エラーメールを受けとる管理者リストを MTA ではなく fml8 側で管 理するために必要なので実装されています。これは、たとえば WWW インター フェイスでエラーメールを受けとる管理者リストを設定するといったケースを 想定した機能です。

2. リモート管理者はＭＬのメンバーでなくても投稿したい。

なにもしなくても OK です。 fml8 のデフォルトが次のように設定されているので、そのように動きます。

    member_maps             =       $primary_member_map
                                    $admin_member_maps

3. Subject: に応じて配送リストを変更したい

Subject のキーワードによって受信者を切替えることを考えます。

たとえば Subject に「資料請求」とあるメールであれば、ＭＬドライバが直 接資料請求を担当する人たちへフォワードしてあげると効率がよい。 そういうケースです。

これを実現するためには、次のような HOOK が考えられます。

    $distribute_run_start_hook = q{
    	my $config  = $curproc->config();
    	my $header  = $curproc->incoming_message_header();
    	my $subject = $header->get('subject') || '';

    	use Mail::Message::String;
    	my $sbj = new Mail::Message::String $subject;
    	$sbj->charcode_convert_to_internal_code();
    	$buf = $sbj->as_str();

    	my $map = '';
    	# 注意: このファイルは EUC-JP で書いて下さい
    	if ($buf =~ /資料請求/i) {
    	    # 資料請求をうけたら info@example.co.jp 相当のメンバーへ送信
    	    $map = '$ml_home_dir/recipients.info';
    	}
    	else {
    	    # デフォルト
    	    $map = '$ml_home_dir/recipients';
    	}

    	if ($map) {
    	    $config->set("recipient_maps", $map);
    	}
    };

ここで $ml_home_dir/recipients.info (/var/spool/ml/elena/recipients.info) には資料請求を担当する人たちのアドレスが書かれています。

4. 昼と夜で配送リストを変更する

前のレシピも参照して下さい。 基本的なロジックは同じで、条件文が時間になるだけです。

    $distribute_run_start_hook = q{
    	my $config  = $curproc->config();

    	my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) =
    	       localtime(time);

    	my $map = '';
    	if ($hour > 9 && $hour <= 17) {
    	    # 昼の部の人たち
    	    $map = '$ml_home_dir/recipients.daytime';
    	}
    	else {
    	    # 夜の部の人たち
    	    $map = '$ml_home_dir/recipients.night';
    	}

    	if ($map) {
    	    $config->set("recipient_maps", $map);
    	}
    };

5. /etc/group を反映したＭＬ

fml8 の IO は IO::Adapter による抽象化をしています。たとえば受信者を グループ fml に含まれるユーザ宛にするには次のようにするだけで十分です。

    [config.cf]

    recipient_maps = unix.group:fml

ただし、他ドメインには送れないし、そのサーバにアカウントかエイリアス設 定がないと配送できないので注意して下さい。

6. 送信者(投稿者)にはＭＬの記事は配送しない

この機能が必要なのは、送信したメールの記録が残るメールリーダを使ってい る場合、ＭＬから戻ってくる記事は必要ないと思う人がいるからだそうです。

fml8 では、いまのところ出来ません。未実装です。

7. 特定の受信者だけ記事の内容を変更したい

fml4 でも出来ませんが fml8 でも出来ません。

そもそもＭＬは投稿された記事をＭＬのメンバーへ配送するものなので 一部の受信者だけ記事の内容を変更するのは難しいことです。

Prev | Home | Next
レシピ’s [登録関連] | 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>.