5 .\"if n .pl +(135i-\n(.pu)
6 .Id $Id: procmailsc.5,v 1.1 2003/06/16 17:06:43 motoki Exp $
7 .\"*******************************************************************
9 .\" This file was generated with po4a. Translate the source file.
11 .\"*******************************************************************
13 .\" Japanese Version Tue Sep 09 02:25:00 JST 2003
14 .\" by MATSUDA Yoh-ichi (yoh@flcl.org)
15 .\" References: http://www.jaist.ac.jp/~fjt/procmail.html
17 .\"if n .pl +(135i-\n(.pu)
18 .TH PROCMAILSC 5 \*(Dt BuGless
60 procmailsc \- procmail の重みつきスコアリング手法
62 [\fB*\fP] \fBw^x 条件文\fP
65 レシピには伝統的な真偽条件を指定できるが、 それに加えてマッチする \-\- あるいはマッチしない \-\- 条件に対して、
66 重みつきスコアリング手法を採り入れることもできる。 レシピに重みつきスコアリング手法を使う場合、
67 あるレシピがマッチするということは、その最終スコアは必ず正の値である。
69 その条件に `weight' (重み) (\fBw\fP) 及び `exponent' (指数) (\fBx\fP) を置く
70 ことで、スコアが適用される。 条件(の同一行)に
74 を前置すればスコアリング手法を適用できる。 但し、 \fBw\fP 及び \fBx\fP は \-2147483647.0 〜 2147483647.0
78 最初に正規表現を見つけると、スコアに \fIw\fP を加算する。二番目を見つけると、 \fIw*x\fP を加算する。三番目を見つけると、 \fIw*x*x\fP
79 を加算する。四番目を見つけると、 \fIw*x*x*x\fP を加算する。以下同様。
85 w * Sum x = w * \-\-\-\-\-\-\-
88 これは上記の条件において \fBn\fP 回マッチする際のスコアの合計を表す。
93 最初のマッチのみがスコア w に影響する。後続のマッチは無視される。
96 全てのマッチはスコア w に等しく影響する。スコアはマッチする度毎にその数に 比例して線形的に増加する。
99 全てのマッチはそれ以前のスコアに対してより少なく影響する。 スコアはある値に向けて漸近線状に変化する (後述の \fB備考\fP の章を参照のこと。)
102 全てのマッチはそれ以前のスコアに対してより多く影響する。 スコアは指数的に増加する。
105 奇数あるいは偶数番目のマッチを与えるのに便利である。
107 正規表現が否定された場合(例: マッチしなかった場合)、 \fBn\fP は明らかに 0 あるいは 1となる。
109 プログラムが正常終了の結果として終了コード EXIT_SUCCESS (=0) を返す 場合、スコアの合計は \fBw\fP となる。
110 上記以外の(実行失敗を示す)終了コードを返す場合、スコアの合計は \fBx\fP となる。
112 プログラムの終了コードが否定される場合、終了コードはあたかもマッチした 数であったかの如く見倣される。 そして、スコアの合計は通常の正規表現が
113 \fBn=`exitcode'\fP 回数マッチしたものとして処理される。
115 現在のメールの長さが \fBM\fP である場合:
119 という条件式は以下のような式でスコアに加算する:
130 という条件式は以下のような式でスコアに加算する:
138 両者共、 L=M であればスコアに w を加算する。 しかしながら前者の場合は大きいメールが有利であり、後者の場合は 小さいメールが有利である。 x
139 の値によって関数の勾配を微調整することができるが、 典型的には x=1 である。
141 レシピの全ての条件の最終的な合計スコアを問い合わせるには、環境変数 \fB$=\fP を用いる。 この変数は procmail
142 がレシピ内の全ての条件をパースした後はいつでも参照可能である。 (例えレシピが実行されなかったとしても。)
144 以下のレシピは本文が150行以上のメールを全て捨てる。 最初の条件は空の正規表現を含む。
145 すなわち、この条件は全てにマッチし、予めスコアに負の値のオフセットを与える為に使われる。
146 2番目の条件はメール中の全ての行にマッチし、1行毎に+1ポイントずつ加算することで、直前に設定していた負のオフセット値を消費する。
147 最後の条件では、メールが150行以上である場合のみにスコアが正の値になる。
149 :0 Bh * \-150^0 * 1^1 ^.*$ /dev/null
151 あなたがいつも真っ先に読む優先度の高いフォルダがあると仮定しよう。 次のレシピは重要度の高いメールを抜き出して特別なフォルダに放り込む。
152 最初の条件は定型的なものであり、スコアには何ら作用しないが、今回のケースにおいてはこの条件が満たされていなければならない。【訳注:
153 Precedence: 行は各種メイリングリストや vacation
154 等の自動応答ソフト等、人手を介さない配送ソフトがメールを配送する際に付加したり、配送すべきか否かを判断するヘッダである。】
155 これ以外の条件は以下のような状況を記述する: John と Claire はいつも何らかの重要な発言をする。 会議は大概重要である。
156 彼らに対する返答はやや優先する。 Elvis に関するメール (これはあくまでも単なる一例に過ぎないのであしからず :\-) は優先する
157 (更に言えば、そのメールはもっと優先するが、 Elvis に割り当てられる特別なスコアは、彼がどれほど頻繁に言及しても、最大 4000 である)。
158 沢山の引用行は忌み嫌われ、顔マークは評価される (これらのスコアは最大 3500 に達する)。
159 彼ら3人は通常は興味深いメールを送信しないし、短いメールを好むはずだ (例えば、 2000バイトの長いメールはスコアを \-100 、
160 4000バイトの長いメールはスコアを \-800 減じる。)。 ご覧の通り、重要でない誰かがメールを送信すると、まだ優先度の高いフォルダに
161 格納される機会がある。 例えば、会議に関するメールや、少なくとも2つの顔マークを含んでいる場合である。
163 :0 HB * !^Precedence:.*(junk|bulk) * 2000^0 ^From:.*(john@home|claire@work)
164 * 2000^0 ^Subject:.*meeting * 300^0 ^Subject:.*Re: * 1000^.75 elvis|presley
165 * \-100^1 ^> * 350^.9 :\-\e) * \-500^0 ^From:.*(boss|jane|henry)@work *
166 \-100^3 > 2000 priority_folder
168 仮にあなたがメイリングリストに加入して、そして良質のメールだけを 読みたければ、以下のレシピが目的に適うはずだ。
169 先ず、当該メールがメイリングリストからのものであることを確認する。 次に、評価に値する意見を述べる重要人物からのメールであるか、あるいは
170 確実に全ての内容を知りたい表題に関するものであるかをチェックする。 もしそうならば、当該メールを前述のフォルダへファイリングする。
171 さもなくば、引用行と原文行の比率が最大 1:2 であるかチェックする。 もしこの比率を越えるものであれば、当該メールを捨てる。
172 これらのテストを通過した全てのメールはファイリングする。
175 ^From mailinglist\-request@some.where
178 * ^(From:.*(paula|bill)|Subject:.*skiing)
190 更なる実例は \fBprocmailex\fP(5) を参照されたい。
192 重みの順番による検索スピードを高速化させるために、 procmail の内部 egrep エンジンは常に最左の \fI最短\fP のマッチを探す。
193 ただし、変数 \fBMATCH\fP への割り当てを【訳注: \e/によって】行っている最中は、最左の \fI最長\fP のマッチを探す。
194 例えば、それ自身による最左の \fI最短\fP のマッチに用いる正規表現は:
197 は常に同じ点でゼロ長さの文字列にマッチする。
200 は常に(勿論、改行を除く)任意の1文字にマッチする。
204 \fBprocmail\fP(1), \fBprocmailrc\fP(5), \fBprocmailex\fP(5), \fBsh\fP(1), \fBcsh\fP(1),
205 \fBegrep\fP(1), \fBgrep\fP(1),
209 もし、長さ条件において、指定した \fBx\fP がオーバフローを起こした場合、 procmail は数学ライブラリの関数 \fBpow\fP(3)
212 `工学'フォーマットの浮動小数点数値 (例: 12e5) は認められない。
214 `正の極大値' (2147483647) に到達すると、直ちにそれ以降の \fI重み付けされた\fP 条件は単純に読み飛ばされる。
216 `負の極大値' (\-2147483647) に到達すると、直ちにそれ以降の 条件は `マッチしないもの' として見倣され、レシピは早々に終了する。
218 もし、正規表現重み付け公式 \fB0<x<1\fP において、この条件におけるスコア加算の総和は漸近的に変化する:
232 Stephen R. van den Berg
238 <guenther@sendmail.com>
240 .\".if n .pl -(\n(.tu-1i)