+2003-01-16 Teodor Zlatanov <tzz@lifelogs.com>
+
+ * gnus.texi (Filtering Spam Using The Spam ELisp Package):
+ clarified syntax of gnus-spam-process-destinations and
+ gnus-ham-process-destinations variables
+ (Extending the spam elisp package): fixed typo in node name
+ (Bogofilter): new functionality and variables noted
+
2003-01-15 ShengHuo ZHU <zsh@cs.rochester.edu>
* gnus.texi: Don't use `path' in some cases.
@findex spam-bogofilter-score
@code{spam-bogofilter-score}\e$B!#\e(B
-\e$B$3$N%3%^%s%I$,$A$c$s$HF/$/$?$a$K$O\e(B bogofilter \e$B$N=hM}$rM-8z$K$7$J$1$l$P$J\e(B
+\e$B$3$N%3%^%s%I$,$A$c$s$HF/$/$?$a$K$O\e(B Bogofilter \e$B$r%$%s%9%H!<%k$7$J$1$l$P$J\e(B
\e$B$j$^$;$s!#\e(B
@xref{Bogofilter}\e$B!#\e(B
\e$B$O\e(B @emph{\e$BL$J,N`\e(B} \e$B$^$?$O\e(B @emph{ham} \e$B%0%k!<%W$KBP$7$F$O9T$J$o$l$^$;$s!#$5\e(B
\e$B$i$K\e(B spam \e$B%0%k!<%W$K$"$k$I$N\e(B @strong{ham} \e$B5-;v$b!"\e(B
@code{ham-process-destination} \e$B%0%k!<%W%Q%i%a!<%?\e(B
-\e$B$+\e(B @code{gnus-ham-process-destinations} \e$BJQ?t$N$I$A$i$+$G7h$a$i$l$F$$$k>l\e(B
-\e$B=j$K0\$5$l$^$9!#>l=j$H$$$&$N$O%0%k!<%WL>$N$3$H$G$9!#\e(B
+\e$B$+\e(B @code{gnus-ham-process-destinations} \e$BJQ?t$N$I$A$i$+$K9gCW$9$k>l=j$K0\\e(B
+\e$B$5$l$^$9!#$=$l$i$O%0%k!<%WL>$K9gCW$9$k@55,I=8=$N%j%9%H$G\e(B
+\e$B$9\e(B (@code{customize-variable gnus-ham-process-destinations} \e$B$K$h$C$F$3$N\e(B
+\e$BJQ?t$r%+%9%?%^%$%:$9$k$N$,:G$b4JC1$G$9\e(B)\e$B!#:G=*E*$J>l=j$O%0%k!<%WL>$G$9!#\e(B
@code{ham-process-destination} \e$B%Q%i%a!<%?$,@_Dj$5$l$F$$$J$$$H!"\e(Bspam \e$B5-;v\e(B
\e$B$OC1$K4|8B@Z$l>C5n$5$l$^$9!#\e(B
@emph{Ham} \e$B$^$?$O\e(B @emph{\e$BL$J,N`\e(B} \e$B%0%k!<%W$rH4$1$k$H$-$K!"$9$Y$F\e(B
\e$B$N\e(B @strong{spam} \e$B5-;v$O!"\e(B@code{spam-process-destination} \e$B%0%k!<%W%Q%i%a!<\e(B
-\e$B%?$+\e(B @code{gnus-spam-process-destinations} \e$BJQ?t$N$I$A$i$+$G7h$a$i$l$F$$\e(B
-\e$B$k>l=j$K0\$5$l$^$9!#>l=j$H$$$&$N$O%0%k!<%WL>$N$3$H$G$9!#\e(B
+\e$B%?$+\e(B @code{gnus-spam-process-destinations} \e$BJQ?t$N$I$A$i$+$K9gCW$9$k>l=j\e(B
+\e$B$K0\$5$l$^$9!#$=$l$i$O%0%k!<%WL>$K9gCW$9$k@55,I=8=$N%j%9%H$G\e(B
+\e$B$9\e(B (@code{customize-variable gnus-spam-process-destinations} \e$B$K$h$C$F$3\e(B
+\e$B$NJQ?t$r%+%9%?%^%$%:$9$k$N$,:G$b4JC1$G$9\e(B)\e$B!#:G=*E*$J>l=j$O%0%k!<%WL>$G$9!#\e(B
@code{spam-process-destination} \e$B%Q%i%a!<%?$,@_Dj$5$l$F$$$J$$$H!"\e(Bspam \e$B5-\e(B
\e$B;v$OC1$K4|8B@Z$l>C5n$5$l$^$9!#\e(B
@defvar spam-use-bogofilter
Eric Raymond \e$B$N?WB.$J\e(B Bogofilter \e$B$r\e(B @code{spam-split} \e$B$K;HMQ$7$?$$>l9g$O!"\e(B
-\e$B$3$NJQ?t$r%;%C%H$7$F$/$@$5$$!#$3$l$O!"%P!<%8%g%s\e(B 0.4 \e$B$N%m!<%+%k$K%Q%C%A\e(B
-\e$B$,Ev$?$C$?%3%T!<$G%F%9%H$5$l$^$7$?!#\e(B@code{spam.el} \e$B$K$"$k%$%s%9%H!<%k$K\e(B
-\e$B4X$9$k%3%a%s%H$rFI$s$G3N$+$a$F2<$5$$!#\e(B
+\e$B$3$NJQ?t$r%;%C%H$7$F$/$@$5$$!#\e(B
Spam \e$B5-;v$@$1$N\e(B @samp{H} \e$B0u$r4XO"IU$1$k:G>.$N@$OC$K$h$C$F!"\e(BBogofilter \e$B%H\e(B
\e$B%l!<%K%s%0$O$9$Y$F$+$J$j<+F0E*$K$J$j$^$9!#3F%+%F%4%j!<$N\e(B spam \e$B$+$=$&$G$J\e(B
\e$B$$?tI4\e(B (a few hundreds) \e$B$N5-;v$rF~<j$9$k$^$G!"$3$l$r$d$i$J$1$l$P$J$j$^$;\e(B
-\e$B$s!#%7%'%k%3%^%s%I\e(B @command{head -1 ~/.bogofilter/*} \e$B$ON>J}$N5-;v$N7W?t\e(B
-\e$B$rI=<($7$^$9!#35N,%b!<%I$K$*$1$k%G%P%C%0$N$?$a$N!"$"$k$$$O9%4q?4$N$?$a$N\e(B
-\e$B%3%^%s%I\e(B @kbd{S t} \e$B$O!"\e(BBogofilter \e$B$,8=:_$N5-;v$N\e(B @emph{spamicity} (\e$BLuCm\e(B:
-spam \e$BEY\e(B?) \e$B%9%3%"\e(B (0.0\e$B!A\e(B1.0) \e$B$r!"%9%3%"$K:G$bCx$7$/4sM?$9$k5-;v$N8l$H$$$C\e(B
-\e$B$7$g$K!"B>$N%P%C%U%!$KI=<($9$k$3$H$rB%$7$^$9!#\e(B
+\e$B$s!#35N,%b!<%I$K$*$1$k%G%P%C%0$N$?$a$N!"$"$k$$$O9%4q?4$N$?$a$N%3%^%s\e(B
+\e$B%I\e(B @kbd{S t} \e$B$O!"8=:_$N5-;v$N\e(B @emph{spamicity} (\e$BLuCm\e(B: spam \e$BEY\e(B?) \e$B%9%3\e(B
+\e$B%"\e(B (0.0\e$B!A\e(B1.0) \e$B$rI=<($7$^$9!#\e(B
+
+Bogofilter \e$B$O!"%3%s%Q%$%k;~$K@_Dj$5$l$kFbIt$NogCM$K4p$E$$$F!"%a%C%;!<%8\e(B
+\e$B$,\e(B spam \e$B$+$I$&$+$r7hDj$7$^$9!#ogCM$O%+%9%?%^%$%:$G$-$^$;$s!#\e(B
Path \e$B$K\e(B @code{bogofilter} \e$B$N<B9T%U%!%$%k$,L5$$>l9g!"\e(BBogofilter \e$B$N=hM}$O\e(B
\e$B<h$j>C$5$l$^$9!#\e(B
+@code{spam-use-bogofilter-headers} \e$B$r;H$&>l9g$O!"$3$l$rM-8z$K$7$F$O$$$1\e(B
+\e$B$^$;$s!#\e(B
+
+@end defvar
+
+@defvar spam-use-bogofilter-headers
+
+\e$B%a%C%;!<%8%X%C%@!<$@$1$rD4$Y$k$?$a$K\e(B Eric Raymond \e$B$N?WB.\e(B
+\e$B$J\e(B Bogofilter \e$B$r\e(B @code{spam-split} \e$B$K;HMQ$7$?$$>l9g$O!"$3$NJQ?t$r%;%C%H\e(B
+\e$B$7$F$/$@$5$$!#$3$l$O\e(B @code{spam-use-bogofilter} \e$B$HF1$8$h$&$KF0:n$7$^$9$,!"\e(B
+\e$B$"$i$+$8$a\e(B @code{X-Bogosity} \e$B%X%C%@!<$,%a%C%;!<%8$KB8:_$7$J$1$l$P$J$j$^\e(B
+\e$B$;$s!#DL>o$3$l$O\e(B procmail \e$B$N5;K!$+!"2?$+$=$l$K;w$?$b$N$G9T$J$&$3$H$K$J$k\e(B
+\e$B$G$7$g$&!#\e(BBogofilter \e$B$N%$%s%9%H!<%k$K4X$9$kJ8=q$rD4$Y$F2<$5$$!#\e(B
+
+@code{spam-use-bogofilter} \e$B$r;H$&>l9g$O!"$3$l$rM-8z$K$7$F$O$$$1$^$;$s!#\e(B
+
@end defvar
@defvar gnus-group-spam-exit-processor-bogofilter
\e$B$N\e(B @code{spam-process} \e$B%Q%i%a!<%?$K2C$($k$+!"$^$?\e(B
\e$B$O\e(B @code{gnus-spam-process-newsgroups} \e$BJQ?t$K2C$($F2<$5$$!#$3$N%7%s%\%k\e(B
\e$B$,%0%k!<%W$N\e(B @code{spam-process} \e$B%Q%i%a!<%?$K2C$($i$l$k$H!"\e(Bspam \e$B0u$,IU$$\e(B
-\e$B$?5-;v$,\e(B bogofilter \e$B$N\e(B spam \e$B%G!<%?%Y!<%9$K2C$($i$l!"\e(Bham \e$B0u$,IU$$$?5-;v\e(B
-\e$B$,\e(B bogofilter \e$B$N\e(B ham \e$B%G!<%?%Y!<%9$K2C$($i$l$^$9!#\e(B
-@strong{Bogofilter \e$B$N\e(B spam \e$B%W%m%;%C%5!<$O!"$5$i$K\e(B ham \e$B=hM}$b9T$J$&$?$@0l\e(B
-\e$B$D$N\e(B spam \e$B%W%m%;%C%5!<$G$"$k$3$H$KCm0U$7$F2<$5$$!#\e(B}
+\e$B$?5-;v$,\e(B bogofilter \e$B$N\e(B spam \e$B%G!<%?%Y!<%9$K2C$($i$^$9!#\e(B
@end defvar
+@c TRANSLATEME!
+@defvar gnus-group-ham-exit-processor-bogofilter
+Add this symbol to a group's @code{spam-process} parameter by
+customizing the group parameters or the
+@code{gnus-spam-process-newsgroups} variable. When this symbol is
+added to a group's @code{spam-process} parameter, the ham-marked
+articles in @emph{ham} groups will be added to the Bogofilter database
+of non-spam messages. Note that this ham processor has no effect in
+@emph{spam} or @emph{unclassified} groups.
+@end defvar
+
+@defvar spam-bogofilter-database-directory
+
+This is the directory where Bogofilter will store its databases. It
+is not specified by default, so Bogofilter will use its own default
+database directory.
+
+@end defvar
+
+The Bogofilter mail classifier is similar to ifile in intent and
+purpose. A ham and a spam processor are provided, plus the
+@code{spam-use-bogofilter} and @code{spam-use-bogofilter-headers}
+variables to indicate to spam-split that Bogofilter should either be
+used, or has already been used on the article. The 0.9.2.1 version of
+Bogofilter was used to test this functionality.
+
@node ifile spam filtering
@subsubsection ifile \e$B$K$h$k\e(B spam \e$B$N_I2a\e(B
@cindex spam filtering
@findex spam-bogofilter-score
@code{spam-bogofilter-score}.
-You must have bogofilter processing enabled for that command to work
-properly.
+You must have Bogofilter installed for that command to work properly.
@xref{Bogofilter}.
not done for @emph{unclassified} or @emph{ham} groups. Also, any
@strong{ham} articles in a spam group will be moved to a location
determined by either the @code{ham-process-destination} group
-parameter or the @code{gnus-ham-process-destinations} variable. The
+parameter or a match in the @code{gnus-ham-process-destinations}
+variable, which is a list of regular expressions matched with group
+names (it's easiest to customize this variable with
+@code{customize-variable gnus-ham-process-destinations}). The ultimate
location is a group name. If the @code{ham-process-destination}
parameter is not set, spam articles are only expired.
When you leave a @emph{ham} or @emph{unclassified} group, all
@strong{spam} articles are moved to a location determined by either
-the @code{spam-process-destination} group parameter or the
-@code{gnus-spam-process-destinations} variable. The location is a
-group name. If the @code{spam-process-destination} parameter is not
-set, the spam articles are only expired.
+the @code{spam-process-destination} group parameter or a match in the
+@code{gnus-spam-process-destinations} variable, which is a list of
+regular expressions matched with group names (it's easiest to
+customize this variable with @code{customize-variable
+gnus-spam-process-destinations}). The ultimate location is a group
+name. If the @code{spam-process-destination} parameter is not set,
+the spam articles are only expired.
To use the @code{spam.el} facilities for incoming mail filtering, you
must add the following to your fancy split list
* Bogofilter::
* ifile spam filtering::
* spam-stat spam filtering::
-* Extending the spam elist package::
+* Extending the spam elisp package::
@end menu
@node Blacklists and Whitelists
@defvar spam-use-bogofilter
Set this variable if you want @code{spam-split} to use Eric Raymond's
-speedy Bogofilter. This has been tested with a locally patched copy
-of version 0.4. Make sure to read the installation comments in
-@code{spam.el}.
+speedy Bogofilter.
With a minimum of care for associating the @samp{H} mark for spam
articles only, Bogofilter training all gets fairly automatic. You
should do this until you get a few hundreds of articles in each
-category, spam or not. The shell command @command{head -1
-~/.bogofilter/*} shows both article counts. The command @kbd{S t} in
-summary mode, either for debugging or for curiosity, triggers
-Bogofilter into displaying in another buffer the @emph{spamicity}
-score of the current article (between 0.0 and 1.0), together with the
-article words which most significantly contribute to the score.
+category, spam or not. The command @kbd{S t} in summary mode, either
+for debugging or for curiosity, shows the @emph{spamicity} score of
+the current article (between 0.0 and 1.0).
+
+Bogofilter determines if a message is spam based on an internal
+threshold, set at compilation time. That threshold can't be
+customized.
If the @code{bogofilter} executable is not in your path, Bogofilter
processing will be turned off.
+You should not enable this if you use @code{spam-use-bogofilter-headers}.
+
@end defvar
+@defvar spam-use-bogofilter-headers
+
+Set this variable if you want @code{spam-split} to use Eric Raymond's
+speedy Bogofilter, looking only at the message headers. It works
+similarly to @code{spam-use-bogofilter}, but the @code{X-Bogosity} header
+must be in the message already. Normally you would do this with a
+procmail recipe or something similar; consult the Bogofilter
+installation documents for details.
+
+You should not enable this if you use @code{spam-use-bogofilter}.
+
+@end defvar
@defvar gnus-group-spam-exit-processor-bogofilter
Add this symbol to a group's @code{spam-process} parameter by
customizing the group parameters or the
@code{gnus-spam-process-newsgroups} variable. When this symbol is
added to a group's @code{spam-process} parameter, spam-marked articles
-will be added to the bogofilter spam database, and ham-marked articles
-will be added to the bogofilter ham database. @strong{Note that the
-Bogofilter spam processor is the only spam processor to also do ham
-processing.}
+will be added to the Bogofilter spam database.
@end defvar
+@defvar gnus-group-ham-exit-processor-bogofilter
+Add this symbol to a group's @code{spam-process} parameter by
+customizing the group parameters or the
+@code{gnus-spam-process-newsgroups} variable. When this symbol is
+added to a group's @code{spam-process} parameter, the ham-marked
+articles in @emph{ham} groups will be added to the Bogofilter database
+of non-spam messages. Note that this ham processor has no effect in
+@emph{spam} or @emph{unclassified} groups.
+@end defvar
+
+@defvar spam-bogofilter-database-directory
+
+This is the directory where Bogofilter will store its databases. It
+is not specified by default, so Bogofilter will use its own default
+database directory.
+
+@end defvar
+
+The Bogofilter mail classifier is similar to ifile in intent and
+purpose. A ham and a spam processor are provided, plus the
+@code{spam-use-bogofilter} and @code{spam-use-bogofilter-headers}
+variables to indicate to spam-split that Bogofilter should either be
+used, or has already been used on the article. The 0.9.2.1 version of
+Bogofilter was used to test this functionality.
+
@node ifile spam filtering
@subsubsection ifile spam filtering
@cindex spam filtering
processor, and the @code{spam-use-stat} variable for @code{spam-split}
are provided.
-@node Extending the spam elist package
+@node Extending the spam elisp package
@subsubsection Extending the spam elisp package
@cindex spam filtering
@cindex spam elisp package, extending