ケーススタディ: オフィス (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 が使えるので、 それを使う方が楽です。