Patches between 5.10.5 and 5.10.6

Lars Magne Ingebrigtsen <[email protected]> Sun, 04 Jan 2004 22:11:41 +0100
Newsgroups gmane.emacs.gnus.patches
Message-ID <[email protected]>
Index: gnus/lisp/ChangeLog
diff -u gnus/lisp/ChangeLog:6.2768 gnus/lisp/ChangeLog:6.2771
--- gnus/lisp/ChangeLog:6.2768	Sun Jan  4 01:31:39 2004
+++ gnus/lisp/ChangeLog	Sun Jan  4 22:10:35 2004
@@ -1,5 +1,17 @@
 2004-01-04 Lars Magne Ingebrigtsen <[email protected]>
 
+	* gnus.el: Gnus v5.10.6 is released.
+
+2004-01-04  Kai Grossjohann  <[email protected]>
+
+	* gnus-sum.el (gnus-summary-print-article): Doc fix.
+
+2004-01-04  Lars Magne Ingebrigtsen  <[email protected]>
+
+	* gnus.el (gnus-version-number): Bump.
+
+2004-01-04 Lars Magne Ingebrigtsen <[email protected]>
+
 	* gnus.el: Gnus v5.10.5 is released.
 
 2004-01-03  Lars Magne Ingebrigtsen  <[email protected]>
Index: gnus/lisp/gnus-sum.el
diff -u gnus/lisp/gnus-sum.el:6.376 gnus/lisp/gnus-sum.el:6.377
--- gnus/lisp/gnus-sum.el:6.376	Sat Jan  3 19:52:57 2004
+++ gnus/lisp/gnus-sum.el	Sun Jan  4 21:48:07 2004
@@ -8534,10 +8534,16 @@
 			  "[()]" "\\\\\\&"))
 
 (defun gnus-summary-print-article (&optional filename n)
-  "Generate and print a PostScript image of the N next (mail) articles.
+  "Generate and print a PostScript image of the process-marked (mail) articles.
 
-If N is negative, print the N previous articles.  If N is nil and articles
-have been marked with the process mark, print these instead.
+If used interactively, print the current article if none are
+process-marked.  With prefix arg, prompt the user for the name of the
+file to save in.
+
+When used from Lisp, accept two optional args FILENAME and N.  N means
+to print the next N articles.  If N is negative, print the N previous
+articles.  If N is nil and articles have been marked with the process
+mark, print these instead.
 
 If the optional first argument FILENAME is nil, send the image to the
 printer.  If FILENAME is a string, save the PostScript image in a file with
Index: gnus/lisp/gnus.el
diff -u gnus/lisp/gnus.el:6.220 gnus/lisp/gnus.el:6.221
--- gnus/lisp/gnus.el:6.220	Sat Jan  3 16:18:58 2004
+++ gnus/lisp/gnus.el	Sun Jan  4 01:33:25 2004
@@ -282,7 +282,7 @@
   :link '(custom-manual "(gnus)Exiting Gnus")
   :group 'gnus)
 
-(defconst gnus-version-number "5.10.5"
+(defconst gnus-version-number "5.10.6"
   "Version number for this version of Gnus.")
 
 (defconst gnus-version (format "Gnus v%s" gnus-version-number)
Index: gnus/texi/ChangeLog
diff -u gnus/texi/ChangeLog:6.641 gnus/texi/ChangeLog:6.643
--- gnus/texi/ChangeLog:6.641	Sat Jan  3 20:28:51 2004
+++ gnus/texi/ChangeLog	Sun Jan  4 11:01:31 2004
@@ -1,3 +1,17 @@
+2004-01-04  Reiner Steib  <[email protected]>
+
+	* gnus.texi (Spam ELisp Package Configuration Examples): Markup fixes.
+
+2004-01-03  Teodor Zlatanov  <[email protected]>
+
+	* gnus.texi (Spam ELisp Package Sequence of Events): explain more
+	about the sequence of events and what happens with read-only
+	backends
+	(Spam ELisp Package Global Variables): explain what happens with
+	read-only backends
+	(Spam ELisp Package Configuration Examples): added Reiner Steib
+	and Ted Zlatanov's setups
+
 2004-01-03  Reiner Steib  <[email protected]>
 
 	* emacs-mime.texi (Display Customization): Add mm-enable-external.
Index: gnus/texi/gnus.texi
diff -u gnus/texi/gnus.texi:6.600 gnus/texi/gnus.texi:6.603
--- gnus/texi/gnus.texi:6.600	Sun Jan  4 01:31:40 2004
+++ gnus/texi/gnus.texi	Sun Jan  4 22:10:36 2004
@@ -33,7 +33,7 @@
 \makeindex
 \begin{document}
 
-\newcommand{\gnusversionname}{Gnus v5.10.5}
+\newcommand{\gnusversionname}{Gnus v5.10.6}
 \newcommand{\gnuschaptername}{}
 \newcommand{\gnussectionname}{}
 
@@ -397,7 +397,7 @@
 spool or your mbox file.  All at the same time, if you want to push your
 luck.
 
-This manual corresponds to Gnus v5.10.5.
+This manual corresponds to Gnus v5.10.6.
 
 @end ifinfo
 
@@ -22630,9 +22630,14 @@
 You have to load the @code{gnus-registry.el} package and enable the
 @code{spam-log-to-registry} variable if you want spam to be processed
 no more than once.  Thus, spam is detected and processed everywhere,
-which is what most people want.
+which is what most people want.  If the
+@code{spam-process-destination} is nil, the spam is marked as
+expired, which is usually the right thing to do.
 
-If a ham mail is found in a ham group, as determineed by the
+If spam can not be moved - because of a read-only backend such as NNTP,
+for example, it will be copied.
+
+If a ham mail is found in a ham group, as determined by the
 @code{ham-marks} parameter, it is processed as ham by the active ham
 @code{spam-processor} when the group is exited.  With the variables
 @code{spam-process-ham-in-spam-groups} and
@@ -22644,6 +22649,9 @@
 necessary, which is what most people want.  More on this in
 @xref{Spam ELisp Package Configuration Examples}.
 
+If ham can not be moved - because of a read-only backend such as NNTP,
+for example, it will be copied.
+
 If all this seems confusing, don't worry.  Soon it will be as natural
 as typing Lisp one-liners on a neural interface... err, sorry, that's
 50 years in the future yet.  Just trust us, it's not so bad.
@@ -22853,6 +22861,9 @@
 @code{spam-mark-ham-unread-before-move-from-spam-group} parameter is
 set, the ham articles are marked as unread before being moved.  
 
+If ham can not be moved - because of a read-only backend such as NNTP,
+for example, it will be copied.
+
 Note that you can use multiples destinations per group or regular
 expression!  This enables you to send your ham to a regular mail
 group and to a @emph{ham training} group.
@@ -22889,6 +22900,9 @@
 that if you see @samp{nntp:servername} before the group name in the
 group buffer then you need it here as well.  
 
+If spam can not be moved - because of a read-only backend such as NNTP,
+for example, it will be copied.
+
 Note that you can use multiples destinations per group or regular
 expression!  This enables you to send your spam to multiple @emph{spam
 training} groups.
@@ -22925,7 +22939,165 @@
 @cindex spam configuration examples
 @cindex spam
 
-@emph{TODO}: add configuration examples with explanations of daily usage
+@subsubheading Ted's setup
+
+From Ted Zlatanov <tzz@@lifelogs.com>.
+@example
+
+;; for gnus-registry-split-fancy-with-parent and spam autodetection
+;; see gnus-registry.el for more information
+(gnus-registry-initialize)
+(spam-initialize)
+
+;; I like control-S for marking spam
+(define-key gnus-summary-mode-map "\C-s" 'gnus-summary-mark-as-spam)
+
+(setq
+ spam-log-to-registry t ;; for spam autodetection
+ spam-use-BBDB t
+ spam-use-regex-headers t               ; catch X-Spam-Flag (SpamAssassin)
+ ;; all groups with "spam" in the name contain spam
+ gnus-spam-newsgroup-contents '(("spam" gnus-group-spam-classification-spam))
+ ;; see documentation for these
+ spam-move-spam-nonspam-groups-only nil
+ spam-mark-only-unseen-as-spam t
+ spam-mark-ham-unread-before-move-from-spam-group t
+ nnimap-split-rule 'nnimap-split-fancy
+ ;; understand what this does before you copy it to your own setup!
+ nnimap-split-fancy '(|
+                      ;; trace references to parents and put in their group
+                      (: gnus-registry-split-fancy-with-parent)
+                      ;; this will catch server-side SpamAssassin tags
+                      (: spam-split 'spam-use-regex-headers)
+                      (any "ding" "ding")
+                      ;; note that spam by default will go to "spam"
+                      (: spam-split)
+                      ;; default mailbox
+                      "mail"))
+
+;; my parameters, set with `G p'
+
+;; all nnml groups, and all nnimap groups except
+;; "nnimap+mail.lifelogs.com:train" and
+;; "nnimap+mail.lifelogs.com:spam": any spam goes to nnimap training,
+;; because it must have been detected manually
+
+((spam-process-destination . "nnimap+mail.lifelogs.com:train"))
+
+;; all NNTP groups
+;; autodetect spam with the blacklist and ham with the BBDB
+((spam-autodetect-methods spam-use-blacklist spam-use-BBDB)
+;; send all spam to the training group
+ (spam-process-destination . "nnimap+mail.lifelogs.com:train"))
+
+;; only some NNTP groups, where I want to autodetect spam
+((spam-autodetect . t))
+
+;; my nnimap "nnimap+mail.lifelogs.com:spam" group
+
+;; this is a spam group
+((spam-contents gnus-group-spam-classification-spam)
+
+ ;; any spam (which happens when I enter for all unseen messages,
+ ;; because of the gnus-spam-newsgroup-contents setting above), goes to
+ ;; "nnimap+mail.lifelogs.com:train" unless I mark it as ham
+
+ (spam-process-destination "nnimap+mail.lifelogs.com:train")
+
+ ;; any ham goes to my "nnimap+mail.lifelogs.com:mail" folder, but
+ ;; also to my "nnimap+mail.lifelogs.com:trainham" folder for training
+
+ (ham-process-destination "nnimap+mail.lifelogs.com:mail" 
+                          "nnimap+mail.lifelogs.com:trainham")
+ ;; in this group, only '!' marks are ham
+ (ham-marks
+  (gnus-ticked-mark))
+ ;; remembers senders in the blacklist on the way out - this is
+ ;; definitely not needed, it just makes me feel better
+ (spam-process (gnus-group-spam-exit-processor-blacklist)))
+
+;; Later, on the IMAP server I use the "train" group for training
+;; SpamAssassin to recognize spam, and the "trainham" group for
+;; recognizing ham - but Gnus has nothing to do with it.
+
+@end example
+
+@subsubheading Using @file{spam.el} on an IMAP server with a statistical filter on the server
+
+From Reiner Steib <reiner.steib@@gmx.de>.
+
+My provider has set up bogofilter (in combination with @acronym{DCC}) on
+the mail server (@acronym{IMAP}).  Recognized spam goes to
+@samp{spam.detected}, the rest goes through the normal filter rules,
+i.e. to @samp{some.folder} or to @samp{INBOX}.  Training on false
+positives or negatives is done by copying or moving the article to
+@samp{training.ham} or @samp{training.spam} respectively.  A cron job on
+the server feeds those to bogofilter with the suitable ham or spam
+options and deletes them from the @samp{training.ham} and
+@samp{training.spam} folders.
+
+With the following entries in @code{gnus-parameters}, @code{spam.el}
+does most of the job for me:
+
+@lisp
+   ("nnimap:spam\\.detected"
+    (gnus-article-sort-functions '(gnus-article-sort-by-chars))
+    (ham-process-destination "nnimap:INBOX" "nnimap:training.ham")
+    (spam-contents gnus-group-spam-classification-spam))
+   ("nnimap:\\(INBOX\\|other-folders\\)"
+    (spam-process-destination . "nnimap:training.spam")
+    (spam-contents gnus-group-spam-classification-ham))
+@end lisp
+
+@itemize 
+
+@item @b{The Spam folder:}
+
+In the folder @samp{spam.detected}, I have to check for false positives
+(i.e. legitimate mails, that were wrongly judged as spam by
+bogofilter or DCC).
+
+Because of the @code{gnus-group-spam-classification-spam} entry, all
+messages are marked as spam (with @code{$}).  When I find a false
+positive, I mark the message with some other ham mark (@code{ham-marks},
+@ref{Spam ELisp Package Global Variables}).  On group exit, those
+messages are copied to both groups, @samp{INBOX} (were I want to have
+the article) and @samp{training.ham} (for training bogofilter) and
+deleted from the @samp{spam.detected} folder.
+
+The @code{gnus-article-sort-by-chars} entry simplifies detection of
+false positives for me.  I receive lots of worms (sweN, @dots{}), that all
+have a similar size.  Grouping them by size (i.e. chars) makes finding
+other false positives easier.  (Of course worms aren't @i{spam}
+(@acronym{UCE}, @acronym{UBE}) strictly speaking.  Anyhow, bogofilter is
+an excellent tool for filtering those unwanted mails for me.)
+
+@item @b{Ham folders:}
+
+In my ham folders, I just hit @kbd{S x}
+(@code{gnus-summary-mark-as-spam}) whenever I see an unrecognized spam
+mail (false negative).  On group exit, those messages are moved to
+@samp{training.ham}.
+@end itemize
+
+@subsubheading Reporting spam articles in Gmane groups with @code{spam-report.el}
+
+From Reiner Steib <reiner.steib@@gmx.de>.
+
+With following entry in @code{gnus-parameters}, @kbd{S x}
+(@code{gnus-summary-mark-as-spam}) marks articles in @code{gmane.*}
+groups as spam and reports the to Gmane at group exit:
+
+@lisp
+   ("^gmane\\."
+    (spam-process (gnus-group-spam-exit-processor-report-gmane)))
+@end lisp
+
+Additionally, I use `(setq spam-report-gmane-use-article-number nil)'
+because I don't read the groups directly from news.gmane.org, but
+through my local news server (leafnode).  I.e. the article numbers are
+not the same as on news.gmane.org, thus @code{spam-report.el} has to check
+the @code{X-Report-Spam} header to find the correct number.
 
 @node Blacklists and Whitelists
 @subsubsection Blacklists and Whitelists
@@ -23539,9 +23711,9 @@
 Add
 @example
     (spam-use-blackbox  spam-blackbox-register-routine
-    		 nil
-		 spam-blackbox-unregister-routine
-		 nil)
+                 nil
+                 spam-blackbox-unregister-routine
+                 nil)
 @end example
 to @code{spam-registration-functions}.  Write the register/unregister
 routines using the bogofilter register/unregister routines as a
@@ -23594,8 +23766,8 @@
 
 Add
 @example
-		   (const :tag "Spam: Blackbox"   (spam spam-use-blackbox))
-		   (const :tag "Ham: Blackbox"    (ham spam-use-blackbox))
+                   (const :tag "Spam: Blackbox"   (spam spam-use-blackbox))
+                   (const :tag "Ham: Blackbox"    (ham spam-use-blackbox))
 @end example
 to the @code{spam-process} group parameter in @code{gnus.el}.  Make
 sure you do it twice, once for the parameter and once for the
@@ -23603,7 +23775,7 @@
 
 Add
 @example
-	  (variable-item spam-use-blackbox)
+          (variable-item spam-use-blackbox)
 @end example
 to the @code{spam-autodetect-methods} group parameter in
 @code{gnus.el}.
@@ -26499,7 +26671,7 @@
 
 @item
 Try doing an @kbd{M-x gnus-version}.  If you get something that looks
-like @samp{Gnus v5.10.5} you have the right files loaded.  Otherwise
+like @samp{Gnus v5.10.6} you have the right files loaded.  Otherwise
 you have some old @file{.el} files lying around.  Delete these.
 
 @item
Index: gnus/texi/message.texi
diff -u gnus/texi/message.texi:6.98 gnus/texi/message.texi:6.99
--- gnus/texi/message.texi:6.98	Sun Jan  4 01:31:41 2004
+++ gnus/texi/message.texi	Sun Jan  4 22:10:37 2004
@@ -88,7 +88,7 @@
 * Key Index::         List of Message mode keys.
 @end menu
 
-This manual corresponds to Message v5.10.5.  Message is distributed
+This manual corresponds to Message v5.10.6.  Message is distributed
 with the Gnus distribution bearing the same version number as this
 manual.