\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:
-smap \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
+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
@end defvar
@end menu
@node Creating a spam-stat dictionary
-@subsubsection spam-stat \e$B%G%#%l%/%H%j$r:n$k\e(B
+@subsubsection spam-stat \e$B<-=q$r:n$k\e(B
\e$BE}7W$K4p$E$$$?\e(B spam \e$B_I2a$r;O$a$k$K!"$"$J$?$OFs$D$N%a!<%k$N%3%l%/%7%g%s$K\e(B
\e$B4p$E$$$?E}7W$r:n$i$J$1$l$P$J$j$^$;$s!#0l$D$O\e(B spam\e$B!"$b$&0l$D$OHs\e(B-spam \e$B$G!#\e(B
@end defvar
@node Splitting mail using spam-stat
-@subsubsection Splitting mail using spam-stat
+@subsubsection spam-stat \e$B$r;H$C$F%a!<%k$rJ,3d$9$k\e(B
-In order to use @code{spam-stat} to split your mail, you need to add the
-following to your @file{~/.gnus} file:
+@code{spam-stat} \e$B$r;H$C$F%a!<%k$rJ,3d$9$k$?$a$K!"\e(B@file{~/.gnus} \e$B%U%!%$%k\e(B
+\e$B$K0J2<$rDI2C$9$kI,MW$,$"$j$^$9!#\e(B
@example
(require 'spam-stat)
(spam-stat-load)
@end example
-This will load the necessary Gnus code, and the dictionary you
-created.
+\e$B$3$l$OI,MW$J\e(B gnus \e$B$N%3!<%I$H$"$J$?$,:n$C$?<-=q$r\e(B load \e$B$7$^$9!#\e(B
-Next, you need to adapt your fancy splitting rules: You need to
-determine how to use @code{spam-stat}. In the simplest case, you only have
-two groups, @samp{mail.misc} and @samp{mail.spam}. The following expression says
-that mail is either spam or it should go into @samp{mail.misc}. If it is
-spam, then @code{spam-stat-split-fancy} will return @samp{mail.spam}.
+\e$B<!$K!"FC5iJ,3d$N5,B'$rE,9g$5$;$k!"$I$&$d$C$F\e(B @code{spam-stat} \e$B$r;H$&$+$r\e(B
+\e$B7h$a$F2<$5$$!#$G$O\e(B @samp{mail.misc} \e$B$H\e(B @samp{mail.spam} \e$B$NFs$D$N%0%k!<%W\e(B
+\e$B$@$1$,$"$k:G$bC1=c$J;vNc$G$O$I$&$J$k$+!#0J2<$N<0$O%a!<%k$,\e(B spam \e$B$G$"$k$+!"\e(B
+\e$B$^$?$O$=$l$,\e(B @samp{mail.misc} \e$B$K9T$/$Y$-$@$H8@$C$F$$$^$9!#$b$7\e(B spam \e$B$@$C\e(B
+\e$B$?$i\e(B @code{spam-stat-split-fancy} \e$B$O\e(B @samp{mail.spam} \e$B$rJV$7$^$9!#\e(B
@example
(setq nnmail-split-fancy
@end example
@defvar spam-stat-split-fancy-spam-group
-The group to use for spam. Default is @samp{mail.spam}.
+Spam \e$BMQ$N%0%k!<%W$G$9!#%G%#%U%)%k%H$O\e(B @samp{mail.spam} \e$B$G$9!#\e(B
@end defvar
-If you also filter mail with specific subjects into other groups, use
-the following expression. It only the mails not matching the regular
-expression are considered potential spam.
+\e$BFCDj$NBjL>$r;}$D%a!<%k$rB>$N%0%k!<%W$KF~$l$k_I2a$r$b9T$J$$$?$$$J$i$P!"0J\e(B
+\e$B2<$N<0$r;H$C$F2<$5$$!#@55,I=8=$K9gCW$7$J$$%a!<%k$@$1$r\e(B spam \e$B$+$b$7$l$J$$\e(B
+\e$B$H9M$($^$9!#\e(B
@example
(setq nnmail-split-fancy
"mail.misc"))
@end example
-If you want to filter for spam first, then you must be careful when
-creating the dictionary. Note that @code{spam-stat-split-fancy} must
-consider both mails in @samp{mail.emacs} and in @samp{mail.misc} as
-non-spam, therefore both should be in your collection of non-spam
-mails, when creating the dictionary!
+\e$B:G=i$K\e(B spam \e$B$N_I2a$r$7$?$$>l9g!"<-=q$r:n$k$H$-$K==J,$KCm0U$7$J$1$l$P$J$j\e(B
+\e$B$^$;$s!#\e(B
+@code{spam-stat-split-fancy} \e$B$O\e(B @samp{mail.emacs} \e$B$H\e(B @samp{mail.misc} \e$B$N\e(B
+\e$B$I$A$i$N%a!<%k$bHs\e(B-spam \e$B$G$"$k$H2r<a$7$J$1$l$P$J$i$J$$$N$G!"<-=q$r:n$k$H\e(B
+\e$B$-$NHs\e(B-spam \e$B%3%l%/%7%g%s$KN>J}$H$bF~$C$F$$$J$1$l$P$J$i$J$$$3$H$KCm0U$7$F\e(B
+\e$B2<$5$$!#\e(B
@example
(setq nnmail-split-fancy
"mail.misc"))
@end example
-You can combine this with traditional filtering. Here, we move all
-HTML-only mails into the @samp{mail.spam.filtered} group. Note that since
-@code{spam-stat-split-fancy} will never see them, the mails in
-@samp{mail.spam.filtered} should be neither in your collection of spam mails,
-nor in your collection of non-spam mails, when creating the
-dictionary!
+\e$B$3$l$rEAE}E*$J_I2a$HAH$_9g$o$;$k$3$H$b$G$-$^$9!#$3$3$G$O2f!9$O$9$Y$F\e(B
+\e$B$N\e(B HTML \e$B$@$1$N%a!<%k$r\e(B @samp{mail.spam.filtered} \e$B%0%k!<%W$KF~$l$k$b$N$H\e(B
+\e$B$7$^$7$g$&!#\e(B@code{spam-stat-split-fancy} \e$B$O$=$l$i$N%a!<%k$r8+$J$$$N$G!"\e(B
+\e$B<-=q$r:n$k$H$-$K!"\e(B@samp{mail.spam.filtered} \e$B$N%a!<%k$,\e(B spam \e$B$^$?$O\e(B
+\e$BHs\e(B-spam \e$B%3%l%/%7%g%s$N$I$A$i$K$bF~$k$Y$-$G$O$J$$$3$H$KCm0U$7$F2<$5$$\e(B!
@example
(setq nnmail-split-fancy
"mail.misc"))
@end example
-
@node Low-level interface to the spam-stat dictionary
-@subsubsection Low-level interface to the spam-stat dictionary
+@subsubsection spam-stat \e$B<-=q$X$NDc3,AX%$%s%?!<%U%'!<%9\e(B
-The main interface to using @code{spam-stat}, are the following functions:
+@code{spam-stat} \e$B$r;H$&$?$a$N<g%$%s%?!<%U%'!<%9$O0J2<$N4X?t$G$9\e(B:
@defun spam-stat-buffer-is-spam
-called in a buffer, that buffer is considered to be a new spam mail;
-use this for new mail that has not been processed before
+Spam \e$B$G$"$k$H9M$($i$l$k?7Ce%a!<%k$,$"$k%P%C%U%!$G8F$P$l$^$9\e(B; \e$B=hM}A0$N?7\e(B
+\e$BCe%a!<%k$KBP$7$F;H$C$F2<$5$$!#\e(B
@end defun
@defun spam-stat-buffer-is-no-spam
-called in a buffer, that buffer is considered to be a new non-spam
-mail; use this for new mail that has not been processed before
+\e$BHs\e(B-spam \e$B$G$"$k$H9M$($i$l$k?7Ce%a!<%k$,$"$k%P%C%U%!$G8F$P$l$^$9\e(B; \e$B=hM}A0$N\e(B
+\e$B?7Ce%a!<%k$KBP$7$F;H$C$F2<$5$$!#\e(B
@end defun
@defun spam-stat-buffer-change-to-spam
-called in a buffer, that buffer is no longer considered to be normal
-mail but spam; use this to change the status of a mail that has
-already been processed as non-spam
+Spam \e$B$G$O$J$$DL>o$N%a!<%k$@$H$O$b$O$d9M$($i$l$J$$%a!<%k$,$"$k%P%C%U%!$G\e(B
+\e$B8F$P$l$^$9\e(B; \e$B$9$G$KHs\e(B-spam \e$B$G$"$k$b$N$H$7$F=hM}$5$l$F$7$^$C$?%a!<%k$NCO0L\e(B
+\e$B$NJQ99$K;H$C$F2<$5$$!#\e(B
@end defun
@defun spam-stat-buffer-change-to-non-spam
-called in a buffer, that buffer is no longer considered to be spam but
-normal mail; use this to change the status of a mail that has already
-been processed as spam
+\e$BDL>o$N%a!<%k$G$O$J$$\e(B spam \e$B$@$H$O$b$O$d9M$($i$l$J$$%a!<%k$,$"$k%P%C%U%!$G\e(B
+\e$B8F$P$l$^$9\e(B; \e$B$9$G$K\e(B spam \e$B$G$"$k$b$N$H$7$F=hM}$5$l$F$7$^$C$?%a!<%k$NCO0L$N\e(B
+\e$BJQ99$K;H$C$F2<$5$$!#\e(B
@end defun
@defun spam-stat-save
-save the hash table to the file; the filename used is stored in the
-variable @code{spam-stat-file}
+\e$B%O%C%7%e%F!<%V%k$r%U%!%$%k$K%;!<%V$7$^$9\e(B; \e$BJQ?t\e(B @code{spam-stat-file} \e$B$G\e(B
+\e$B@_Dj$5$l$?%U%!%$%kL>$,;H$o$l$^$9!#\e(B
@end defun
@defun spam-stat-load
-load the hash table from a file; the filename used is stored in the
-variable @code{spam-stat-file}
+\e$B%O%C%7%e%F!<%V%k$r%U%!%$%k$+$i\e(B load \e$B$7$^$9\e(B; \e$BJQ\e(B
+\e$B?t\e(B @code{spam-stat-file} \e$B$G@_Dj$5$l$?%U%!%$%kL>$,;H$o$l$^$9!#\e(B
@end defun
@defun spam-stat-score-word
-return the spam score for a word
+\e$BC18l$N\e(B spam \e$B%9%3%"$rJV$7$^$9!#\e(B
@end defun
@defun spam-stat-score-buffer
-return the spam score for a buffer
+\e$B%P%C%U%!$N\e(B spam \e$B%9%3%"$rJV$7$^$9!#\e(B
@end defun
@defun spam-stat-split-fancy
-for fancy mail splitting; add the rule @samp{(: spam-stat-split-fancy)} to
-@code{nnmail-split-fancy}
+\e$BFC5i%a!<%kJ,3d$N$?$a$K!"\e(B@code{nnmail-split-fancy} \e$B$K5,\e(B
+\e$BB'\e(B @samp{(: spam-stat-split-fancy)} \e$B$rDI2C$7$^$9!#\e(B
-This requires the following in your @file{~/.gnus} file:
+\e$B$3$l$K$O\e(B @file{~/.gnus} \e$B$K0J2<$,I,MW$G$9\e(B:
@example
(require 'spam-stat)
@end defun
-Typical test will involve calls to the following functions:
+\e$BBeI=E*$J%F%9%H$O0J2<$N4X?t8F=P$7$rI,MW$H$7$^$9\e(B:
@example
Reset: (setq spam-stat (make-hash-table :test 'equal))
Test non-spam: (spam-stat-test-directory "~/Mail/mail/misc")
@end example
-Here is how you would create your dictionary:
+\e$B<-=q$r@8@.$9$kJ}K!\e(B:
@example
Reset: (setq spam-stat (make-hash-table :test 'equal))