diff options
| author | fukachan <fukachan> | 2006-01-15 13:47:38 +0000 |
|---|---|---|
| committer | fukachan <fukachan> | 2006-01-15 13:47:38 +0000 |
| commit | bc66f3b372f993a8e9977af320642a49d6bb972c (patch) | |
| tree | f5a1c98cc7c2a2e98aa12a98897824bf0997bb60 /fml/doc | |
| parent | 66a672335f3f60accf93e1ff14e90eb668b50a99 (diff) | |
| parent | 1e6ac97d07c3075f91cf1f0f8cdd6ff6bd8cb57e (diff) | |
| download | fml8-bc66f3b372f993a8e9977af320642a49d6bb972c.tar.gz fml8-bc66f3b372f993a8e9977af320642a49d6bb972c.tar.bz2 fml8-bc66f3b372f993a8e9977af320642a49d6bb972c.zip | |
add several hook examples to implement filter where the topics are picked up from fml bible.
Diffstat (limited to 'fml/doc')
| -rw-r--r-- | fml/doc/ja/tutorial/customize/recipes.filter.sgml | 144 |
1 files changed, 143 insertions, 1 deletions
diff --git a/fml/doc/ja/tutorial/customize/recipes.filter.sgml b/fml/doc/ja/tutorial/customize/recipes.filter.sgml index 3f1c83a1..b2cf85b9 100644 --- a/fml/doc/ja/tutorial/customize/recipes.filter.sgml +++ b/fml/doc/ja/tutorial/customize/recipes.filter.sgml @@ -1,5 +1,5 @@ <!-- - $FML$ + $FML: recipes.filter.sgml,v 1.1 2005/10/29 04:20:00 fukachan Exp $ --> <qandaset> @@ -9,6 +9,79 @@ <question> <para> +フィルタシステムを使わない独自のフィルタを設定したい +</para> +</question> + +<answer> +<para> +&fml8; のフィルタシステムで利用可能なフィルタは +<screen> +/usr/local/etc/fml//defaults/$VERSION/default_config.cf.ja +</screen> +を読むと分かります。 +</para> + +<para> +この内蔵フィルタで実装されていない内容のフィルタは +article_post_verify_request_end_hook +article_filter_start_hook +article_filter_end_hook +article_post_run_start_hook +のいづれかの HOOK でおこなえばよいでしょう。 +<screen> +$article_filter_start_hook = q{ + my $header = $curproc->incoming_message_header(); + my $body = $curproc->incoming_message_body(); + + if (条件) { + $curproc->policy_reject_this_message(); + } +}; +</screen> +のように書けば良いでしょう。 +例については以下のレシピも参照して下さい。 +</para> + +</answer> + +</qandaentry> + + +<qandaentry> + +<question> +<para> +message/partial をフィルタしたい。 +</para> +</question> + +<answer> +<para> +mime component filter で「message/partial * reject」を設定して下さい。 +<screen> +[/usr/local/etc/fml/mime_component_filter] + +# allow only text/plain messages. +message/partial * reject +text/plain * permit +text/html * reject +multipart/* !text/plain reject +</screen> +</para> + +<para> +注意: このフィルタは全MLに反映されます。 +</para> +</answer> + +</qandaentry> + + +<qandaentry> + +<question> +<para> 危ない添付ファイルがついてきたメールは拒否する HOOK </para> </question> @@ -253,4 +326,73 @@ $distribute_verify_request_end_hook = q{ </qandaentry> +<qandaentry> + +<question> +<para> +SPAM 対策として、To: および Cc: に ML 名を必須としたい +</para> +</question> + +<answer> +<para> +HOOK で行なうなら次のようになります。 +<screen> +$article_filter_end_hook = q{ + my $header = $curproc->incoming_message_header(); + my $addr = $config->{ article_post_address }; + my $to = $header->get('To') || ''; + my $cc = $header->get('Cc') || ''; + my $to_cc = "$to, $cc"; + my $found = 0; + + use Mail::Address; + my (@addrlist) = Mail::Address->parse($to_cc); + for my $a (@addrlist) { + my $_addr = $a->address(); + if ($_addr =~ /^$addr$/i) { + $found = 1; + } + } + + if ($found) { + $curproc->log("article_post_address found in header"); + } + else { + $curproc->log("article_post_address not found in header"); + $curproc->policy_reject_this_message(); + } +}; +</screen> +</para> +</answer> + +</qandaentry> + + +<qandaentry> + +<question> +<para> +ML独自の Message-ID: をつけて矯正したい +</para> +</question> + +<answer> +<para> +未実装です。 +</para> + +<para> +&fml4; では「In-Reply-To: や References: をつけてくれない MUA があるた +めにスレッドがうまく扱えない」という問題を解決するために、ML独自の +Message-ID: をつけて矯正するという機能がありました。現代では、そういっ +た MUA も死に絶えたでしょうから &fml8; では考慮しないことにします。 +</para> + +</answer> + +</qandaentry> + + </qandaset> |
