summaryrefslogtreecommitdiffstats
path: root/upstream/fedora-rawhide/man5/procmailsc.5
diff options
context:
space:
mode:
Diffstat (limited to 'upstream/fedora-rawhide/man5/procmailsc.5')
-rw-r--r--upstream/fedora-rawhide/man5/procmailsc.5324
1 files changed, 324 insertions, 0 deletions
diff --git a/upstream/fedora-rawhide/man5/procmailsc.5 b/upstream/fedora-rawhide/man5/procmailsc.5
new file mode 100644
index 00000000..b3127609
--- /dev/null
+++ b/upstream/fedora-rawhide/man5/procmailsc.5
@@ -0,0 +1,324 @@
+.\"if n .pl +(135i-\n(.pu)
+.de Id
+.ds Rv \\$3
+.ds Dt \\$4
+..
+.Id $Id$
+.TH PROCMAILSC 5 \*(Dt BuGless
+.rn SH Sh
+.de SH
+.br
+.ne 11
+.Sh "\\$1"
+..
+.rn SS Ss
+.de SS
+.br
+.ne 10
+.Ss "\\$1"
+..
+.rn TP Tp
+.de TP
+.br
+.ne 9
+.Tp \\$1
+..
+.rn RS Rs
+.de RS
+.na
+.nf
+.Rs
+..
+.rn RE Re
+.de RE
+.Re
+.fi
+.ad
+..
+.de Sx
+.PP
+.ne \\$1
+.RS
+..
+.de Ex
+.RE
+.PP
+..
+.na
+.SH NAME
+procmailsc \- procmail weighted scoring technique
+.SH SYNOPSIS
+.RB [ * ]
+.B "w^x condition"
+.ad
+.SH DESCRIPTION
+In addition to the traditional true or false conditions you can specify
+on a recipe, you can use a weighted scoring technique to decide if
+a certain recipe matches or not. When weighted scoring is used in a
+recipe, then the final score for that recipe must be positive for it
+to match.
+
+A certain condition can contribute to the score if you allocate it
+a `weight'
+.RB ( w )
+and an `exponent'
+.RB ( x ).
+You do this by preceding the condition (on the same line) with:
+.RS
+.B w^x
+.RE
+Whereas both
+.B w
+and
+.B x
+are real numbers between -2147483647.0 and 2147483647.0 inclusive.
+
+.SH "Weighted regular expression conditions"
+The first time the regular expression is found, it will add
+.I w
+to the score. The second time it is found,
+.I w*x
+will be added. The third time it is found,
+.I w*x*x
+will be added. The fourth time
+.I w*x*x*x
+will be added. And so forth.
+
+This can be described by the following concise formula:
+.Sx 4
+ n
+ n k\-1 x \- 1
+w * Sum x = w * \-\-\-\-\-\-\-
+ k=1 x \- 1
+.Ex
+It represents the total added score for this condition if
+.B n
+matches are found.
+
+Note that the following case distinctions can be made:
+.TP 8
+x=0
+Only the first match will contribute w to the score. Any subsequent
+matches are ignored.
+.TP
+x=1
+Every match will contribute the same w to the score. The score grows
+linearly with the number of matches found.
+.TP
+0<x<1
+Every match will contribute less to the score than the previous one.
+The score will asymptotically approach a certain value (see the
+.B NOTES
+section below).
+.TP
+1<x
+Every match will contribute more to the score than the previous one.
+The score will grow exponentially.
+.TP
+x<0
+Can be utilised to favour odd or even number of matches.
+.PP
+If the regular expression is negated (i.e., matches if it isn't found),
+then
+.B n
+obviously can either be zero or one.
+.SH "Weighted program conditions"
+If the program returns an exitcode of EXIT_SUCCESS (=0), then the total
+added score will be
+.BR w .
+If it returns any other exitcode (indicating failure), the total added
+score will be
+.BR x .
+.PP
+If the exitcode of the program is negated, then, the exitcode will
+be considered as if it were a virtual number of matches. Calculation
+of the added score then proceeds as if it had been a normal regular
+expression with
+.B n=`exitcode'
+matches.
+.SH "Weighted length conditions"
+If the length of the actual mail is
+.B M
+then:
+.Sx 1
+* w^x > L
+.Ex
+will generate an additional score of:
+.Sx 4
+ x
+ / M \e
+w * | \-\-\- |
+ \e L /
+.Ex
+And:
+.Sx 1
+* w^x < L
+.Ex
+will generate an additional score of:
+.Sx 4
+ x
+ / L \e
+w * | \-\-\- |
+ \e M /
+.Ex
+.PP
+In both cases, if L=M, this will add w to the score. In the former case
+however, larger mails will be favoured, in the latter case, smaller
+mails will be favoured. Although x can be varied to fine-tune the
+steepness of the function, typical usage sets x=1.
+.SH MISCELLANEOUS
+You can query the final score of all the conditions on a recipe from the
+environment variable
+.BR $= .
+This variable is set
+.I every
+time just after procmail has parsed all conditions on a recipe (even if the
+recipe is not being executed).
+.SH EXAMPLES
+The following recipe will ditch all mails having more than 150 lines in the
+body.
+The first condition contains an empty regular expression which, because
+it always matches, is used to give our score a negative offset.
+The second condition then matches every line in the mail, and consumes
+up the previous negative offset we gave (one point per line). In the end,
+the score will only be positive if the mail contained more than 150 lines.
+.Sx 5
+:0 Bh
+* \-150^0
+* 1^1 ^.*$
+/dev/null
+.Ex
+Suppose you have a priority folder which you always read first. The next
+recipe picks out the priority mail and files them in this special folder.
+The first condition is a regular one, i.e., it doesn't contribute to the
+score, but simply has to be satisfied. The other conditions describe things
+like: john and claire usually have something important to say, meetings
+are usually important, replies are favoured a bit, mails about Elvis
+(this is merely an example :\-) are favoured (the more he is mentioned, the
+more the mail is favoured, but the maximum extra score due to Elvis will
+be 4000, no matter how often he is mentioned), lots of quoted lines are
+disliked, smileys are appreciated (the score for those will reach a maximum
+of 3500), those three people usually don't send
+interesting mails, the mails should preferably be small (e.g., 2000 bytes long
+mails will score \-100, 4000 bytes long mails do \-800).
+As you see, if some of the uninteresting people send mail, then the mail
+still has a chance of landing in the priority folder, e.g., if it is about
+a meeting, or if it contains at least two smileys.
+.Sx 11
+:0 HB
+* !^Precedence:.*(junk|bulk)
+* 2000^0 ^From:.*(john@home|claire@work)
+* 2000^0 ^Subject:.*meeting
+* 300^0 ^Subject:.*Re:
+* 1000^.75 elvis|presley
+* \-100^1 ^>
+* 350^.9 :\-\e)
+* \-500^0 ^From:.*(boss|jane|henry)@work
+* \-100^3 > 2000
+priority_folder
+.Ex
+If you are subscribed to a mailinglist, and just would like to read
+the quality mails, then the following recipes could do the trick.
+First we make sure that the mail is coming from the mailinglist.
+Then we check if it is from certain persons of whom we value
+the opinion, or about a subject we absolutely want to know everything
+about. If it is, file it. Otherwise, check if the ratio of quoted lines
+to original lines is at most 1:2. If it exceeds that, ditch the mail.
+Everything that survived the previous test, is filed.
+.Sx 15
+:0
+^From mailinglist-request@some.where
+{
+ :0:
+ * ^(From:.*(paula|bill)|Subject:.*skiing)
+ mailinglist
+
+ :0 Bh
+ * 20^1 ^>
+ * \-10^1 ^[^>]
+ /dev/null
+
+ :0:
+ mailinglist
+}
+.Ex
+For further examples you should look in the
+.BR procmailex (5)
+man page.
+.SH CAVEATS
+Because this speeds up the search by an order of magnitude,
+the procmail internal egrep will always search for the leftmost
+.I shortest
+match, unless it is determining what to assign to
+.BR MATCH ,
+in which case it searches the leftmost
+.I longest
+match.
+E.g. for the leftmost
+.I shortest
+match, by itself, the regular expression:
+.TP
+.B .*
+will always match a zero length string at the same spot.
+.TP
+.B .+
+will always match one character (except newlines of course).
+.SH "SEE ALSO"
+.na
+.nh
+.BR procmail (1),
+.BR procmailrc (5),
+.BR procmailex (5),
+.BR sh (1),
+.BR csh (1),
+.BR egrep (1),
+.BR grep (1),
+.hy
+.ad
+.SH BUGS
+If, in a length condition, you specify an
+.B x
+that causes an overflow, procmail is at the mercy of the
+.BR pow (3)
+function in your mathematical library.
+.PP
+Floating point numbers in `engineering' format (e.g., 12e5) are not accepted.
+.SH MISCELLANEOUS
+As soon as `plus infinity' (2147483647) is reached, any subsequent
+.I weighted
+conditions will simply be skipped.
+.PP
+As soon as `minus infinity' (-2147483647) is reached, the condition will
+be considered as `no match' and the recipe will terminate early.
+.SH NOTES
+If in a regular expression weighted formula
+.BR 0<x<1 ,
+the total added score for this condition will asymptotically approach:
+.Sx 3
+ w
+\-\-\-\-\-\-\-
+ 1 \- x
+.Ex
+In order to reach half the maximum value you need
+.Sx 3
+ \- ln 2
+n = \-\-\-\-\-\-\-\-
+ ln x
+.Ex
+matches.
+.SH AUTHORS
+Stephen R. van den Berg
+.RS
+<srb@cuci.nl>
+.RE
+.\".if n .pl -(\n(.tu-1i)
+.rm SH
+.rn Sh SH
+.rm SS
+.rn Ss SS
+.rm TP
+.rn Tp TP
+.rm RS
+.rn Rs RS
+.rm RE
+.rn Re RE