ケーススタディ: オフィス (1)
会社などでは、
共通の設定をオフィスの全メーリングリストに適用したい需要があります。
そういった想定でのカスタマイズ例です。
以下の設定を /usr/local/etc/fml/site_default_config.cf に書き、
全MLに反映させてください。
このファイルに設定を書けば、
今あるMLも今後作るすべてのMLも同じ仕様になります。
ヘッダ関連では、まず「Subject: にタグをつけない」
なお、この設定はデフォルトの site_default_config.cf に仕込まれています。
つまり &fml8; のデフォルトです。
ことにしました。
article_header_rewrite_rules -= rewrite_article_subject_tag
この例は「ヘッダ書換えのルール」から「タグをつける」命令を抜く設定です。
そして「X-ML-Name: 部分の mlname にオフィス名をつける(prepend する)」
つまり mlname から office#mlname へ変更するようにします。
outgoing_mail_header_x_ml_name = office#$ml_name
仕事用ですから、記事は「誰でも投稿可能」としましょう。
article_post_restrictions = permit_anyone
この例では
root さんからのシステムメールなども許していることに注意してください
(root など特別なシステムアカウントからのメールを弾きたい場合は
reject_system_accounts permit_anyone を追加してください)。
そして「社内用途のMLなのでフィルタの多くは不要」です。
正確には「フィルタを使うと問題だらけ」になります;)
use_article_filter = no
として、全てのフィルタを切ってしまうのが良いでしょう。
個別にフィルタを抑制するには、次のように個別に no を設定してください。
use_article_body_filter = no
use_article_non_mime_filter = no
use_article_mime_component_filter = no
use_article_text_plain_filter = no
記事のスプールを考えます。
仕事のメールは数が多いので、
長期的な展望をふまえるなら、
数万通単位で記事を保存するという仮定が必要です。
よって、記事のスプールは subdir 形式としました。
spool_type = subdir
なお、コマンドメールは使えなくしておきます。
use_command_mail_function = no
コマンドメールそのものを禁止するには、
aliases から該当するエントリを省くことが確実ですが、
MLを作成するたびに、
aliases から削除することはミス操作を誘い易いでしょう。
また、CGI 操作の場合、
CGI 操作者が aliases の細かな操作をするのは難しいです。
そこで、
まんがいち、
コマンドメールを受け取ったとしても、
「コマンドメール用のプログラムが起動して即座に終了する」
設定にしています。
ケーススタディ: オフィス (2)
会社などでは、
共通の設定をオフィスの全メーリングリストに適用したい需要があります。
そういった想定でのカスタマイズ例です。
以下の設定を /usr/local/etc/fml/site_default_config.cf に書き、
全MLに反映させてください。
このファイルに設定を書けば、
今あるMLも今後作るすべてのMLも同じ仕様になります。
まず「記事の subject にはML名を大文字にしたタグ」をつけます。
article_subject_tag = (\U$ml_name\E %05d)
たとえば
support@example.co.jp MLでは
Subject: (SUPPORT 10000)
とするわけです。
( や [ が多いですが、特殊文字は好きなものを使ってかまいません
(正規表現ですので、適当なエスケープは必要です)。
そして、過去記事を参照させるために、コマンドメールの使用を許します。
ただし、自ドメイン( 例: example.co.jp )からのリクエストに対してのみ、
コマンドメールの使用を許すこととします。
これは、HOOK で実現します。
$command_verify_request_end_hook = q{
my $cred = $curproc->credential();
my $from = $cred->sender();
unless ($from =~ /\@example\.co\.jp/i) {
$curproc->stop_this_process();
$curproc->logerror("deny command request from $from");
}
};
追記:
ちなみに
IO::Adapter で PCRE が使えるので、
それを使う方が楽です。