+2003-11-03 Teodor Zlatanov <tzz@lifelogs.com>
+
+ * gnus.texi (Filtering Spam Using The Spam ELisp Package): added
+ some clarifications
+
2003-10-30 Teodor Zlatanov <tzz@lifelogs.com>
* gnus.texi (Fancy Mail Splitting): added mention of
\e$BBh0l$K!"\e(B@code{spam.el} \e$B$r<+F0FI$_9~$_\e(B (autoload) \e$B$7$F\e(B @code{spam.el} \e$B$N\e(B
\e$B3F%U%C%/$r%$%s%9%H!<%k$9$k$?$a$K!"4X\e(B
-\e$B?t\e(B @code{spam-initialize} \e$B$r\e(B @strong{\e$B<B9T$7$J$1$l$P$J$j$^$;$s\e(B}:
+\e$B?t\e(B @code{spam-initialize} \e$B$r\e(B @strong{\e$B<B9T$7$J$1$l$P$J$j$^$;$s\e(B}\e$B!#0l$DNc30\e(B
+\e$B$,$"$j$^$9\e(B: \e$B$b$7\e(B @code{spam-use-stat} \e$B$N@_Dj$r;H$&\e(B (@pxref{spam-stat
+spam filtering}) \e$B$N$G$"$l$P!"$=$l$r\e(B @code{spam-initialize} \e$B$h$jA0\e(B
+\e$B$K\e(B on \e$B$K$7$F$*$+$J$1$l$P$J$j$^$;$s\e(B:
@example
+(setq spam-use-stat t) ;; \e$BI,MW$J$i\e(B
(spam-initialize)
@end example
\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(Bham \e$B5-;v\e(B
-\e$B$O$=$3$KN1$aCV$+$l$^$9!#\e(B
+\e$BJQ?t$r%+%9%?%^%$%:$9$k$N$,:G$b4JC1$G$9\e(B)\e$B!#JQ?t$r<j$G%+%9%?%^%$%:$9$kJ}$,\e(B
+\e$B9%$-$J?M$N$?$a$K8@$C$F$*$/$H!"$=$l$i$OIaDL$N\e(B Lisp \e$B$N\e(B list \e$B$G!"$=$l$>$l$N\e(B
+\e$B%K%e!<%9%0%k!<%W$N;EMM@_Dj$O\e(B @code{(REGEXP PROCESSOR)} \e$B$N7A<0$NCM$r;}$A\e(B
+\e$B$^$9!#:G=*E*$J>l=j$O%0%k!<%WL>$G$9!#\e(B@code{ham-process-destination} \e$B%Q%i\e(B
+\e$B%a!<%?$,@_Dj$5$l$F$$$J$$$H!"\e(Bham \e$B5-;v$O$=$3$KN1$aCV$+$l$^$9!#\e(B
@code{spam-mark-ham-unread-before-move-from-spam-group} \e$B%Q%i%a!<%?$,@_Dj\e(B
\e$B$5$l$F$$$k$H!"\e(Bham \e$B5-;v$O0\F0$5$;$i$l$kA0$KL$FI$N0u$,IU$1$i$l$^$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
+\e$B$NJQ?t$r%+%9%?%^%$%:$9$k$N$,:G$b4JC1$G$9\e(B)\e$B!#JQ?t$r<j$G%+%9%?%^%$%:$9$kJ}\e(B
+\e$B$,9%$-$J?M$N$?$a$K8@$C$F$*$/$H!"$=$l$i$OIaDL$N\e(B Lisp \e$B$N\e(B list \e$B$G!"$=$l$>$l\e(B
+\e$B$N%K%e!<%9%0%k!<%W$N;EMM@_Dj$O\e(B @code{(REGEXP PROCESSOR)} \e$B$N7A<0$NCM$r;}\e(B
+\e$B$A$^$9!#:G=*E*$J>l=j$O%0%k!<%WL>$G$9!#\e(B@code{spam-process-destination} \e$B%Q\e(B
+\e$B%i%a!<%?$,@_Dj$5$l$F$$$J$$$H!"\e(Bspam \e$B5-;v$OC1$K4|8B@Z$l>C5n$5$l$^$9!#\e(B
\e$BF~$C$F$/$k%a!<%k$r_I2a$9$kL\E*$G\e(B @file{spam.el} \e$B$r;H$&$K$O!"FC5iJ,3d%j%9\e(B
\e$B%H\e(B @code{nnmail-split-fancy} \e$B$^$?$O\e(B @code{nnimap-split-fancy} \e$B$K0J2<$rDI\e(B
\e$B$rJQ?t\e(B @code{spam-split-group} \e$B$GM?$($i$l$kL>A0$N%0%k!<%W$KAw$j$^$9!#%G%#\e(B
\e$B%U%)%k%H$G$O$=$N%0%k!<%WL>$O\e(B @samp{spam} \e$B$G$9$,!"\e(B
@code{spam-split-group} \e$B$r%+%9%?%^%$%:$9$k$3$H$,2DG=$G$9!#\e(B
+@code{spam-split-group} \e$B$NFbMF$,\e(B @emph{\e$B@dBP\e(B} \e$B%0%k!<%WL>$G$"$k$3$H!"Nc$(\e(B
+\e$B$P\e(B @samp{your-server} \e$B$H$$$&\e(B @code{nnimap} \e$B%5!<%P!<$N>l9g$O!"\e(B
+@samp{spam} \e$BJQ?t$,:G=*E*$K\e(B @samp{nnimap+your-server:spam} \e$B$K$J$k$3$H$r3N\e(B
+\e$B$+$a$F2<$5$$!#=>$C$F\e(B @samp{nnimap+server:spam} \e$B$H$$$&CM$O4V0c$$$G!"$=$l\e(B
+\e$B$O<B:]$K$O\e(B @samp{nnimap+your-server:nnimap+server:spam} \e$B$H$$$&%0%k!<%W$K\e(B
+\e$B$J$j!"$=$l$,F/$/$+F/$+$J$$$+$O!"$"$J$?$N%5!<%P!<$,4qL/$J%0%k!<%WL>$KBP$7\e(B
+\e$B$F42MF$+$I$&$+$K0MB8$9$k$G$7$g$&!#\e(B
\e$B$^$?!"\e(B@code{spam-split} \e$B$K%Q%i%a!<%?!"Nc$(\e(B
\e$B$P\e(B @samp{spam-use-regex-headers} \e$B$^$?$O\e(B @samp{"maybe-spam"} \e$B$rM?$($k$3$H\e(B
First of all, you @strong{must} run the function
@code{spam-initialize} to autoload @code{spam.el} and to install the
-@code{spam.el} hooks:
+@code{spam.el} hooks. There is one exception: if you use the
+@code{spam-use-stat} (@pxref{spam-stat spam filtering}) setting, you
+should turn it on before @code{spam-initialize}:
@example
+(setq spam-use-stat t) ;; if needed
(spam-initialize)
@end example
-So, what happens when you load @file{spam.el}?
+So, what happens when you load @file{spam.el}?
You get the following keyboard commands:
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, ham articles are left in place. If the
+@code{customize-variable gnus-ham-process-destinations}). Each
+newsgroup specification has the format (REGEXP PROCESSOR) in a
+standard Lisp list, if you prefer to customize the variable manually.
+The ultimate location is a group name. If the
+@code{ham-process-destination} parameter is not set, ham articles are
+left in place. If the
@code{spam-mark-ham-unread-before-move-from-spam-group} parameter is
set, the ham articles are marked as unread before being moved.
@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.
+gnus-spam-process-destinations}). Each newsgroup specification has
+the repeated format (REGEXP PROCESSOR) and they are all in a standard
+Lisp list, if you prefer to customize the variable manually. 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 @file{spam.el} facilities for incoming mail filtering, you
must add the following to your fancy split list
The @code{spam-split} function will process incoming mail and send the
mail considered to be spam into the group name given by the variable
@code{spam-split-group}. By default that group name is @samp{spam},
-but you can customize @code{spam-split-group}.
+but you can customize @code{spam-split-group}. Make sure the contents
+of @code{spam-split-group} are an @emph{unqualified} group name, for
+instance in an @code{nnimap} server @samp{your-server} the value
+@samp{spam} will turn out to be @samp{nnimap+your-server:spam}. The
+value @samp{nnimap+server:spam}, therefore, is wrong and will
+actually give you the group
+@samp{nnimap+your-server:nnimap+server:spam} which may or may not
+work depending on your server's tolerance for strange group names.
You can also give @code{spam-split} a parameter,
e.g. @samp{'spam-use-regex-headers} or @samp{"maybe-spam"}. Why is