MAINTAINER を elena-admin 以外にしたい。
config.cf で maintainer 変数を設定して下さい。
maintainer = アドレス
[EXAMPLE]
maintainer = admin@example.co.jp
もちろん、
設定するアドレス( admin@example.co.jp )でメールを受けとれるように
MTA の設定をしてください。
なおメールサーバによっては、
メールの送信者が自ドメイン以外からの場合、
受信を拒否することがあるので注意して下さい。
単にエラーメールなどの受取先を変えたいだけなら、
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 インターフェイスで
「エラーメールを受けとる管理者リストを設定する」
といったケースを想定した機能です。
リモート管理者はMLのメンバーでなくても投稿したい。
なにもしなくても OK です。
&fml8; のデフォルトが次のように設定されているので、そのように動きます。
member_maps = $primary_member_map
$admin_member_maps
Subject: に応じて配送リストを変更したい
Subject のキーワードによって受信者を切替えることを考えます。
たとえば Subject に「資料請求」とあるメールであれば、
MLドライバが直接資料請求を担当する人たちへフォワードしてあげると効率がよい。
そういったケースです。
これを実現するためには、次のような HOOK が考えられます。
$distribute_run_start_hook = q{
my $config = $curproc->config();
my $header = $curproc->incoming_message_header();
my $subject = $header->get('subject') || '';
use Mail::Message::Subject;
my $sbj = new Mail::Message::Subject $subject;
$sbj->mime_header_decode();
my $buf = $sbj->as_external_form();
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)
には、
資料請求を担当する人たちのアドレスが書かれています。
昼と夜で配送リストを変更する
前のレシピも参照して下さい。
基本的なロジックは同じで、条件文が時間になるだけです。
$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);
}
};
/etc/group を反映したML
&fml8; の IO は IO::Adapter による抽象化をしています。
たとえば受信者を、
グループ fml に含まれるユーザ宛にするには、
次のようにするだけで十分です。
[config.cf]
recipient_maps = unix.group:fml
ただし、
簡単でよいかわりに、
他ドメインには送れないし、
そのサーバにアカウントかエイリアス設定がないと配送できないので注意して下さい。
送信者(投稿者)にはMLの記事は配送しない
この機能が必要なのは、
送信したメールの記録が残るメールリーダを使っている場合、
MLから戻ってくる記事は必要ないと思う人がいるからだそうです。
&fml8; では、いまのところ出来ません。未実装です。
特定の受信者だけ記事の内容を変更したい
&fml4; でも出来ませんが &fml8; でも出来ません。
そもそもMLは投稿された記事をMLのメンバーへ配送するものなので
一部の受信者だけ記事の内容を変更するのは難しいことです。