<!-- -*- mode:text coding:euc-jp -*-
   $FML: case_studies.sgml,v 1.12 2008/08/18 02:23:59 fukachan Exp $
-->


<sect1 id="sect.casestudy.01">
	<title>
	ケーススタディ: オフィス (1)
	</title>

<para>
会社などでは、
共通の設定をオフィスの全メーリングリストに適用したい需要があります。
そういった想定でのカスタマイズ例です。
</para>

<para>
以下の設定を /usr/local/etc/fml/site_default_config.cf に書き、
全ＭＬに反映させてください。
このファイルに設定を書けば、
今あるＭＬも今後作るすべてのＭＬも同じ仕様になります。
</para>

<para>
ヘッダ関連では、まず「Subject: にタグをつけない」
<footnote>
<para>
なお、この設定はデフォルトの site_default_config.cf に仕込まれています。
つまり &fml8; のデフォルトです。
</para>
</footnote>
ことにしました。
<screen>
article_header_rewrite_rules	-=	rewrite_article_subject_tag
</screen>
この例は「ヘッダ書換えのルール」から「タグをつける」命令を抜く設定です。
</para>

<para>
そして「X-ML-Name: 部分の mlname にオフィス名をつける(prepend する)」
つまり mlname から office#mlname へ変更するようにします。
<screen>
outgoing_mail_header_x_ml_name          =       office#$ml_name
</screen>
</para>

<para>
仕事用ですから、記事は「誰でも投稿可能」としましょう。
<screen>
article_post_restrictions		=	permit_anyone
</screen>
この例では
root さんからのシステムメールなども許していることに注意してください
(root など特別なシステムアカウントからのメールを弾きたい場合は 
reject_system_accounts permit_anyone を追加してください)。
</para>

<para>
そして「社内用途のＭＬなのでフィルタの多くは不要」です。
正確には「フィルタを使うと問題だらけ」になります;)
<screen>
use_article_filter                     =        no
</screen>
として、全てのフィルタを切ってしまうのが良いでしょう。
個別にフィルタを抑制するには、次のように個別に no を設定してください。
<screen>
use_article_body_filter			=	no
use_article_non_mime_filter		=	no
use_article_mime_component_filter	=	no
use_article_text_plain_filter		=	no
</screen>
</para>

<para>
記事のスプールを考えます。
仕事のメールは数が多いので、
長期的な展望をふまえるなら、
数万通単位で記事を保存するという仮定が必要です。
よって、記事のスプールは subdir 形式としました。
<screen>
spool_type			=	subdir
</screen>
</para>

<para>
なお、コマンドメールは使えなくしておきます。
<screen>
use_command_mail_function	=	no
</screen>
コマンドメールそのものを禁止するには、
aliases から該当するエントリを省くことが確実ですが、
ＭＬを作成するたびに、
aliases から削除することはミス操作を誘い易いでしょう。
また、CGI 操作の場合、
CGI 操作者が aliases の細かな操作をするのは難しいです。
そこで、
まんがいち、
コマンドメールを受け取ったとしても、
「コマンドメール用のプログラムが起動して即座に終了する」
設定にしています。
</para>

</sect1>


<sect1 id="sect.casestudy.02">
	<title>
	ケーススタディ: オフィス (2)
	</title>

<para>
会社などでは、
共通の設定をオフィスの全メーリングリストに適用したい需要があります。
そういった想定でのカスタマイズ例です。
</para>

<para>
以下の設定を /usr/local/etc/fml/site_default_config.cf に書き、
全ＭＬに反映させてください。
このファイルに設定を書けば、
今あるＭＬも今後作るすべてのＭＬも同じ仕様になります。
</para>

<para>
まず「記事の subject にはＭＬ名を大文字にしたタグ」をつけます。
<screen>
article_subject_tag = (\U$ml_name\E %05d)
</screen>
たとえば 
support@example.co.jp ＭＬでは
<screen>
Subject: (SUPPORT 10000)
</screen>
とするわけです。
( や [ が多いですが、特殊文字は好きなものを使ってかまいません
(正規表現ですので、適当なエスケープは必要です)。
</para>

<para>
そして、過去記事を参照させるために、コマンドメールの使用を許します。
ただし、自ドメイン( 例: example.co.jp )からのリクエストに対してのみ、
コマンドメールの使用を許すこととします。
これは、HOOK で実現します。
<screen>
$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");
        }
};
</screen>  
</para>

<para>
追記:
ちなみに
IO::Adapter で PCRE が使えるので、
それを使う方が楽です。
</para>


</sect1>
