From: yamaoka Date: Sun, 4 Jan 2004 23:22:48 +0000 (+0000) Subject: Import Gnus v5.10.6. X-Git-Tag: gnus-5_10_6~1 X-Git-Url: http://git.chise.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3c63a27e73089c9144145a84613f2c21e2a1f0ab;p=elisp%2Fgnus.git- Import Gnus v5.10.6. --- diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 3965be6..f2f699f 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,5 +1,17 @@ 2004-01-04 Lars Magne Ingebrigtsen + * gnus.el: Gnus v5.10.6 is released. + +2004-01-04 Kai Grossjohann + + * gnus-sum.el (gnus-summary-print-article): Doc fix. + +2004-01-04 Lars Magne Ingebrigtsen + + * gnus.el (gnus-version-number): Bump. + +2004-01-04 Lars Magne Ingebrigtsen + * gnus.el: Gnus v5.10.5 is released. 2004-01-03 Lars Magne Ingebrigtsen diff --git a/lisp/gnus-sum.el b/lisp/gnus-sum.el index 90565cf..bed7778 100644 --- a/lisp/gnus-sum.el +++ b/lisp/gnus-sum.el @@ -8534,10 +8534,16 @@ article. If BACKWARD (the prefix) is non-nil, search backward instead." "[()]" "\\\\\\&")) (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 diff --git a/lisp/gnus.el b/lisp/gnus.el index cd5a931..27b153e 100644 --- a/lisp/gnus.el +++ b/lisp/gnus.el @@ -282,7 +282,7 @@ is restarted, and sometimes reloaded." :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) diff --git a/texi/ChangeLog b/texi/ChangeLog index 37230bc..8c0289a 100644 --- a/texi/ChangeLog +++ b/texi/ChangeLog @@ -1,3 +1,17 @@ +2004-01-04 Reiner Steib + + * gnus.texi (Spam ELisp Package Configuration Examples): Markup fixes. + +2004-01-03 Teodor Zlatanov + + * 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 * emacs-mime.texi (Display Customization): Add mm-enable-external. diff --git a/texi/gnus.texi b/texi/gnus.texi index 2d84c81..6a40647 100644 --- a/texi/gnus.texi +++ b/texi/gnus.texi @@ -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 @@ can be gotten by any nefarious means you can think of---@acronym{NNTP}, local 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 @@ ELisp Package Global Variables}) for further training or deletion. 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 @@ no more than once. Thus, ham is detected and processed only when 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 @@ 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. +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 @@ articles are only expired. The group name is fully qualified, meaning 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 @@ spam. It is recommended that you leave it off. @cindex spam configuration examples @cindex spam -@emph{TODO}: add configuration examples with explanations of daily usage +@subsubheading Ted's setup + +From Ted Zlatanov . +@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 . + +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 . + +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 @@ to @code{spam-list-of-processors}. 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 @@ Gnus parameters 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 @@ variable customization. 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 @@ Gnus will work. @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 diff --git a/texi/message.texi b/texi/message.texi index a12ba48..af78f63 100644 --- a/texi/message.texi +++ b/texi/message.texi @@ -88,7 +88,7 @@ Message mode buffers. * 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.