@documentencoding ISO-8859-1
@copying
-Copyright @copyright{} 1995, 1996, 1997, 1998, 1999, 2000, 2001,
-2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+Copyright @copyright{} 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
@end iflatex
@end iftex
-@ifnottex
-@insertcopying
-@end ifnottex
-
@dircategory Emacs
@direntry
* Gnus: (gnus). The newsreader Gnus.
@iftex
@finalout
@end iftex
-@setchapternewpage odd
-
@titlepage
@insertcopying
@end titlepage
+@summarycontents
+@contents
@node Top
@top The Gnus Newsreader
@c Adjust ../Makefile.in if you change the following line:
This manual corresponds to No Gnus v0.11.
+@ifnottex
+@insertcopying
+@end ifnottex
+
@end ifinfo
@iftex
Choosing a Mail Back End
* Unix Mail Box:: Using the (quite) standard Un*x mbox.
-* Rmail Babyl:: Emacs programs use the Rmail Babyl format.
+* Babyl:: Babyl was used by older versions of Rmail.
* Mail Spool:: Store your mail in a private spool?
* MH Spool:: An mhspool-like back end.
* Maildir:: Another one-file-per-message format.
@item gnus-before-startup-hook
@vindex gnus-before-startup-hook
-A hook run after starting up Gnus successfully.
+A hook called as the first thing when Gnus is started.
@item gnus-startup-hook
@vindex gnus-startup-hook
@vindex gnus-auto-select-subject
If @code{gnus-auto-select-first} is non-@code{nil}, select an article
automatically when entering a group with the @kbd{SPACE} command.
-Which article this is is controlled by the
+Which article this is controlled by the
@code{gnus-auto-select-subject} variable. Valid values for this
variable are:
in the summary buffer you enter, and the form @code{nil} will be
@code{eval}ed there.
-Note that this feature sets the variable locally to the summary buffer.
+Note that this feature sets the variable locally to the summary buffer
+if and only if @var{variable} has been bound as a variable. Otherwise,
+only evaluating the form will take place. So, you may want to bind the
+variable in advance using @code{defvar} or other if the result of the
+form needs to be set to it.
+
But some variables are evaluated in the article buffer, or in the
message buffer (of a reply or followup or otherwise newly created
message). As a workaround, it might help to add the variable in
This can also be used as a group-specific hook function. If you want to
hear a beep when you enter a group, you could put something like
-@code{(dummy-variable (ding))} in the parameters of that group.
-@code{dummy-variable} will be set to the (meaningless) result of the
-@code{(ding)} form.
+@code{(dummy-variable (ding))} in the parameters of that group. If
+@code{dummy-variable} has been bound (see above), it will be set to the
+(meaningless) result of the @code{(ding)} form.
Alternatively, since the VARIABLE becomes local to the group, this
pattern can be used to temporarily change a hook. For example, if the
@code{gnus-group-name-charset-group-alist}.
There is one more important variable for non-@acronym{ASCII} group
-names. @emph{XEmacs users must set this}. Emacs users necessarily need
-not do:
+names:
@table @code
@item nnmail-pathname-coding-system
-The value of this variable should be a coding system or @code{nil}
-(which is the default). The @code{nnml} back end, the @code{nnrss} back
-end, the @acronym{NNTP} marks feature (@pxref{NNTP marks}), the agent,
-and the cache use non-@acronym{ASCII} group names in those files and
-directories. This variable overrides the value of
-@code{file-name-coding-system} which specifies the coding system used
-when encoding and decoding those file names and directory names.
+@vindex nnmail-pathname-coding-system
+The value of this variable should be a coding system or @code{nil}. The
+default is @code{nil} in Emacs, or is the aliasee of the coding system
+named @code{file-name} (a certain coding system of which an alias is
+@code{file-name}) in XEmacs.
+
+The @code{nnml} back end, the @code{nnrss} back end, the @acronym{NNTP}
+marks feature (@pxref{NNTP marks}), the agent, and the cache use
+non-@acronym{ASCII} group names in those files and directories. This
+variable overrides the value of @code{file-name-coding-system} which
+specifies the coding system used when encoding and decoding those file
+names and directory names.
In XEmacs (with the @code{mule} feature), @code{file-name-coding-system}
is the only means to specify the coding system used to encode and decode
-file names. Therefore, @emph{you, XEmacs users, have to set it} to the
-coding system that is suitable to encode and decode non-@acronym{ASCII}
-group names. On the other hand, Emacs uses the value of
+file names. On the other hand, Emacs uses the value of
@code{default-file-name-coding-system} if @code{file-name-coding-system}
-is @code{nil}. Normally the value of
-@code{default-file-name-coding-system} is initialized according to the
-locale, so you will need to do nothing if the value is suitable to
-encode and decode non-@acronym{ASCII} group names.
+is @code{nil} or it is bound to the value of
+@code{nnmail-pathname-coding-system} which is @code{nil}.
+
+Normally the value of @code{default-file-name-coding-system} in Emacs or
+@code{nnmail-pathname-coding-system} in XEmacs is initialized according
+to the locale, so you will need to do nothing if the value is suitable
+to encode and decode non-@acronym{ASCII} group names.
The value of this variable (or @code{default-file-name-coding-system})
does not necessarily need to be the same value that is determined by
@code{gnus-group-name-charset-method-alist} and
@code{gnus-group-name-charset-group-alist}.
-If you want to subscribe to the groups spelled in Chinese but
-@code{default-file-name-coding-system} is initialized by default to
-@code{iso-latin-1} for example, that is the most typical case where you
-have to set @code{nnmail-pathname-coding-system} even if you are an
-Emacs user. The @code{utf-8} coding system is a good candidate for it.
-Otherwise, you may change the locale in your system so that
-@code{default-file-name-coding-system} may be initialized to an
-appropriate value, instead of specifying this variable.
+If @code{default-file-name-coding-system} or this variable is
+initialized by default to @code{iso-latin-1} for example, although you
+want to subscribe to the groups spelled in Chinese, that is the most
+typical case where you have to customize
+@code{nnmail-pathname-coding-system}. The @code{utf-8} coding system is
+a good candidate for it. Otherwise, you may change the locale in your
+system so that @code{default-file-name-coding-system} or this variable
+may be initialized to an appropriate value.
@end table
Note that when you copy or move articles from a non-@acronym{ASCII}
@node nnmairix
@subsection nnmairix
-@cindex mairix
+@cindex mairix
@cindex nnmairix
This paragraph describes how to set up mairix and the back end
@code{nnmairix} for indexing and searching your mail from within
containing mails from a certain sender, with a certain subject line or
even for one specific thread based on the Message-ID. If you check for
new mail in these folders (e.g. by pressing @kbd{g} or @kbd{M-g}), they
-automatically update themselves by calling mairix.
+automatically update themselves by calling mairix.
You might ask why you need @code{nnmairix} at all, since mairix already
creates the group, populates it with links to the mails so that you can
article treatment functions. This will give you a ``raw'' article, just
the way it came from the server.
+@cindex charset, view article with different charset
If given a numerical prefix, you can do semi-manual charset stuff.
@kbd{C-u 0 g cn-gb-2312 RET} will decode the message as if it were
encoded in the @code{cn-gb-2312} charset. If you have
commands have is to remove a few (or many) articles from the summary
buffer.
-All limiting commands work on subsets of the articles already fetched
-from the servers. None of these commands query the server for
-additional articles.
+Limiting commands work on subsets of the articles already fetched from
+the servers. These commands don't query the server for additional
+articles.
@table @kbd
(@code{gnus-summary-limit-mark-excluded-as-read}). If given a prefix,
also mark excluded ticked and dormant articles as read.
-@item / N
-@kindex / N (Summary)
-@findex gnus-summary-insert-new-articles
-Insert all new articles in the summary buffer. It scans for new emails
-if @var{back-end}@code{-get-new-mail} is non-@code{nil}.
-
-@item / o
-@kindex / o (Summary)
-@findex gnus-summary-insert-old-articles
-Insert all old articles in the summary buffer. If given a numbered
-prefix, fetch this number of articles.
-
@item / b
@kindex / b (Summary)
@findex gnus-summary-limit-to-bodies
@end table
+The following commands aren't limiting commands, but use the @kbd{/}
+prefix as well.
+
+@table @kbd
+@item / N
+@kindex / N (Summary)
+@findex gnus-summary-insert-new-articles
+Insert all new articles in the summary buffer. It scans for new emails
+if @var{back-end}@code{-get-new-mail} is non-@code{nil}.
+
+@item / o
+@kindex / o (Summary)
+@findex gnus-summary-insert-old-articles
+Insert all old articles in the summary buffer. If given a numbered
+prefix, fetch this number of articles.
+
+@end table
+
+
@node Threading
@section Threading
@cindex threading
@kindex O r (Summary)
@findex gnus-summary-save-article-rmail
Save the current article in Rmail format
-(@code{gnus-summary-save-article-rmail}).
+(@code{gnus-summary-save-article-rmail}). This is mbox since Emacs 23,
+Babyl in older versions.
@item O f
@kindex O f (Summary)
@findex gnus-summary-save-in-rmail
@vindex gnus-rmail-save-name
@findex gnus-plain-save-name
-This is the default format, @dfn{Babyl}. Uses the function in the
+This is the default format, that used by the Rmail package. Since Emacs
+23, Rmail uses standard mbox format. Before this, it used the
+@dfn{Babyl} format. Accordingly, this command writes mbox format since
+Emacs 23, unless appending to an existing Babyl file. In older versions
+of Emacs, it always uses Babyl format. Uses the function in the
@code{gnus-rmail-save-name} variable to get a file name to save the
article in. The default is @code{gnus-plain-save-name}.
@item
To handle @acronym{PGP} and @acronym{PGP/MIME} messages, you have to
install an OpenPGP implementation such as GnuPG. The Lisp interface
-to GnuPG included with Gnus is called PGG (@pxref{Top, ,PGG, pgg, PGG
-Manual}), but Mailcrypt and gpg.el are also supported.
+to GnuPG included with Emacs is called EasyPG (@pxref{Top, ,EasyPG,
+epa, EasyPG Assistant user's manual}), but PGG (@pxref{Top, ,PGG, pgg,
+PGG Manual}), Mailcrypt, and gpg.el are also supported.
@item
To handle @acronym{S/MIME} message, you need to install OpenSSL. OpenSSL 0.9.6
@end enumerate
-The variables that control security functionality on reading messages
-include:
+The variables that control security functionality on reading/composing
+messages include:
@table @code
@item mm-verify-option
@code{always}, always decrypt; @code{known}, only decrypt known
protocols. Otherwise, ask user.
+@item mm-sign-option
+@vindex mm-sign-option
+Option of creating signed parts. @code{nil}, use default signing
+keys; @code{guided}, ask user to select signing keys from the menu.
+
+@item mm-encrypt-option
+@vindex mm-encrypt-option
+Option of creating encrypted parts. @code{nil}, use the first
+public-key matching the @samp{From:} header as the recipient;
+@code{guided}, ask user to select recipient keys from the menu.
+
@item mml1991-use
@vindex mml1991-use
Symbol indicating elisp interface to OpenPGP implementation for
-@acronym{PGP} messages. The default is @code{pgg}, but
-@code{mailcrypt} and @code{gpg} are also supported although
-deprecated.
+@acronym{PGP} messages. The default is @code{epg}, but @code{pgg},
+@code{mailcrypt}, and @code{gpg} are also supported although
+deprecated. By default, Gnus uses the first available interface in
+this order.
@item mml2015-use
@vindex mml2015-use
Symbol indicating elisp interface to OpenPGP implementation for
-@acronym{PGP/MIME} messages. The default is @code{pgg}, but
-@code{mailcrypt} and @code{gpg} are also supported although
-deprecated.
+@acronym{PGP/MIME} messages. The default is @code{epg}, but
+@code{pgg}, @code{mailcrypt}, and @code{gpg} are also supported
+although deprecated. By default, Gnus uses the first available
+interface in this order.
@end table
(body "You are fired.\n\nSincerely, your boss.")
(organization "Important Work, Inc"))
("nnml:.*"
- (From (save-excursion
- (set-buffer gnus-article-buffer)
+ (From (with-current-buffer gnus-article-buffer
(message-fetch-field "to"))))
("^nn.+:"
(signature-file "~/.mail-signature"))))
;;
(nntp "snews.bar.com"
(nntp-open-connection-function nntp-open-tls-stream)
- (nntp-port-number )
+ (nntp-port-number 563)
(nntp-address "snews.bar.com"))
@end lisp
Does essentially the same, but uses @code{telnet} instead of @samp{netcat}
to connect to the real @acronym{NNTP} server from the intermediate host.
@code{telnet} is a bit less robust because of things like
-line-end-conversion, but sometimes @code{netcat} is simply not available.
+line-end-conversion, but sometimes @code{netcat} is simply not available.
@code{nntp-open-via-rlogin-and-telnet}-specific variables:
commands will not mark an article as expirable, even if the group has
auto-expire turned on.
+@vindex gnus-mark-copied-or-moved-articles-as-expirable
+The expirable marks of articles will be removed when copying or moving
+them to a group in which auto-expire is not turned on. This is for
+preventing articles from being expired unintentionally. On the other
+hand, to a group that has turned auto-expire on, the expirable marks of
+articles that are copied or moved will not be changed by default. I.e.,
+when copying or moving to such a group, articles that were expirable
+will be left expirable and ones that were not expirable will not be
+marked as expirable. So, even though in auto-expire groups, some
+articles will never get expired (unless you read them again). If you
+don't side with that behavior that unexpirable articles may be mixed
+into auto-expire groups, you can set
+@code{gnus-mark-copied-or-moved-articles-as-expirable} to a
+non-@code{nil} value. In that case, articles that have been read will
+be marked as expirable automatically when being copied or moved to a
+group that has auto-expire turned on. The default value is @code{nil}.
+
@node Washing Mail
@subsection Washing Mail
@vindex nnmh-get-new-mail
@vindex nnfolder-get-new-mail
This might be too much, if, for instance, you are reading mail quite
-happily with @code{nnml} and just want to peek at some old Rmail
-file you have stashed away with @code{nnbabyl}. All back ends have
+happily with @code{nnml} and just want to peek at some old (pre-Emacs
+23) Rmail file you have stashed away with @code{nnbabyl}. All back ends have
variables called back-end-@code{get-new-mail}. If you want to disable
the @code{nnbabyl} mail reading, you edit the virtual server for the
group to have a setting where @code{nnbabyl-get-new-mail} to @code{nil}.
@menu
* Unix Mail Box:: Using the (quite) standard Un*x mbox.
-* Rmail Babyl:: Emacs programs use the Rmail Babyl format.
+* Babyl:: Babyl was used by older versions of Rmail.
* Mail Spool:: Store your mail in a private spool?
* MH Spool:: An mhspool-like back end.
* Maildir:: Another one-file-per-message format.
@end table
-@node Rmail Babyl
-@subsubsection Rmail Babyl
+@node Babyl
+@subsubsection Babyl
@cindex nnbabyl
-@cindex Rmail mbox
@vindex nnbabyl-active-file
@vindex nnbabyl-mbox-file
-The @dfn{nnbabyl} back end will use a Babyl mail box (aka. @dfn{Rmail
-mbox}) to store mail. @code{nnbabyl} will add extra headers to each
-mail article to say which group it belongs in.
+The @dfn{nnbabyl} back end will use a Babyl mail box to store mail.
+@code{nnbabyl} will add extra headers to each mail article to say which
+group it belongs in.
Virtual server settings:
@table @code
@item nnbabyl-mbox-file
@vindex nnbabyl-mbox-file
-The name of the Rmail mbox file. The default is @file{~/RMAIL}
+The name of the Babyl file. The default is @file{~/RMAIL}
@item nnbabyl-active-file
@vindex nnbabyl-active-file
-The name of the active file for the rmail box. The default is
+The name of the active file for the Babyl file. The default is
@file{~/.rmail-active}
@item nnbabyl-get-new-mail
VM, for that matter) continue to support this format because it's
perceived as having some good qualities in those mailer-specific
headers/status bits stuff. Rmail itself still exists as well, of
-course, and is still maintained by Stallman.
+course, and is still maintained within Emacs. Since Emacs 23, it
+uses standard mbox format rather than Babyl.
Both of the above forms leave your mail in a single file on your
file system, and they must parse that entire file each time you take a
@code{nnrss-directory} (see below) for each @code{nnrss} group. File
names containing non-@acronym{ASCII} characters will be encoded by the
coding system specified with the @code{nnmail-pathname-coding-system}
-variable. If it is @code{nil}, in Emacs the coding system defaults to
-the value of @code{default-file-name-coding-system}. If you are using
-XEmacs and want to use non-@acronym{ASCII} group names, you should set
-the value for the @code{nnmail-pathname-coding-system} variable properly.
+variable or other. Also @xref{Non-ASCII Group Names}, for more
+information.
The @code{nnrss} back end generates @samp{multipart/alternative}
@acronym{MIME} articles in which each contains a @samp{text/plain} part
@table @code
@cindex Babyl
-@cindex Rmail mbox
@item babyl
-The Babyl (Rmail) mail box.
+The Babyl format.
@cindex mbox
@cindex Unix mbox
the @file{gnus-kill-to-score.el} package; if not, you'll have to do it
by hand.
-The kill to score conversion package isn't included in Gnus by default.
-You can fetch it from
-@uref{http://www.stud.ifi.uio.no/~larsi/ding-various/gnus-kill-to-score.el}.
+The kill to score conversion package isn't included in Emacs by default.
+You can fetch it from the contrib directory of the Gnus distribution or
+from
+@uref{http://heim.ifi.uio.no/~larsi/ding-various/gnus-kill-to-score.el}.
If your old kill files are very complex---if they contain more
non-@code{gnus-kill} forms than not, you'll have to convert them by
What use are these NoCeM messages if the articles are canceled anyway?
Some sites do not honor cancel messages and some sites just honor cancels
from a select few people. Then you may wish to make use of the NoCeM
-messages, which are distributed in the @samp{alt.nocem.misc} newsgroup.
+messages, which are distributed in the newsgroups
+@samp{news.lists.filters}, @samp{alt.nocem.misc}, etc.
Gnus can read and parse the messages in this group automatically, and
this will make spam disappear.
value is not exceeding a group level that you specify as the prefix
argument to some commands, e.g. @code{gnus},
@code{gnus-group-get-new-news}, etc. Otherwise, Gnus does not scan
-NoCeM messages if you specify a group level to those commands. For
-example, if you use 1 or 2 on the mail groups and the levels on the news
-groups remain the default, 3 is the best choice.
+NoCeM messages if you specify a group level that is smaller than this
+value to those commands. For example, if you use 1 or 2 on the mail
+groups and the levels on the news groups remain the default, 3 is the
+best choice.
@item gnus-nocem-groups
@vindex gnus-nocem-groups
Gnus will look for NoCeM messages in the groups in this list. The
default is
@lisp
-("news.lists.filters" "news.admin.net-abuse.bulletins"
- "alt.nocem.misc" "news.admin.net-abuse.announce")
+("news.lists.filters" "alt.nocem.misc")
@end lisp
@item gnus-nocem-issuers
@vindex gnus-nocem-issuers
There are many people issuing NoCeM messages. This list says what
-people you want to listen to. The default is
+people you want to listen to. The default is:
+
@lisp
-("Automoose-1" "clewis@@ferret.ocunix.on.ca"
- "cosmo.roadkill" "SpamHippo" "hweede@@snafu.de")
+("Adri Verhoef"
+ "alba-nocem@@albasani.net"
+ "bleachbot@@httrack.com"
+ "news@@arcor-online.net"
+ "news@@uni-berlin.de"
+ "nocem@@arcor.de"
+ "pgpmoose@@killfile.org"
+ "xjsppl@@gmx.de")
@end lisp
-fine, upstanding citizens all of them.
Known despammers that you can put in this list are listed at@*
@uref{http://www.xs4all.nl/~rosalind/nocemreg/nocemreg.html}.
@item gnus-nocem-verifyer
@vindex gnus-nocem-verifyer
+@findex gnus-nocem-epg-verify
@findex pgg-verify
This should be a function for verifying that the NoCeM issuer is who she
-says she is. The default is @code{pgg-verify}, which returns
-non-@code{nil} if the verification is successful, otherwise (including
-the case the NoCeM message was not signed) returns @code{nil}. If this
-is too slow and you don't care for verification (which may be dangerous),
-you can set this variable to @code{nil}.
+says she is. This variable defaults to @code{gnus-nocem-epg-verify} if
+EasyPG is available, otherwise defaults to @code{pgg-verify}. The
+function should return non-@code{nil} if the verification is successful,
+otherwise (including the case the NoCeM message was not signed) should
+return @code{nil}. If this is too slow and you don't care for
+verification (which may be dangerous), you can set this variable to
+@code{nil}.
Formerly the default was @code{mc-verify}, which is a Mailcrypt
function. While you can still use it, you can change it into
-@code{pgg-verify} running with GnuPG if you are willing to add the
-@acronym{PGP} public keys to GnuPG's keyring.
+@code{gnus-nocem-epg-verify} or @code{pgg-verify} running with GnuPG if
+you are willing to add the @acronym{PGP} public keys to GnuPG's keyring.
@item gnus-nocem-directory
@vindex gnus-nocem-directory
@item gnus-nocem-check-article-limit
@vindex gnus-nocem-check-article-limit
If non-@code{nil}, the maximum number of articles to check in any NoCeM
-group. NoCeM groups can be huge and very slow to process.
+group. @code{nil} means no restriction. NoCeM groups can be huge and
+very slow to process.
@end table
@vindex nnimap-split-download-body
Note for IMAP users: if you use the @code{spam-check-bogofilter},
@code{spam-check-ifile}, and @code{spam-check-stat} spam back ends,
-you should also set set the variable @code{nnimap-split-download-body}
+you should also set the variable @code{nnimap-split-download-body}
to @code{t}. These spam back ends are most useful when they can
``scan'' the full message body. By default, the nnimap back end only
retrieves the message headers; @code{nnimap-split-download-body} tells
@end enumerate
@menu
-* Setup::
-* Fancy splitting to parent::
-* Store custom flags and keywords::
-* Store arbitrary data::
+* Setup::
+* Fancy splitting to parent::
+* Store custom flags and keywords::
+* Store arbitrary data::
@end menu
@node Setup
@acronym{IMAP} users might want to allow @samp{/} in group names though.
+@item gnus-safe-html-newsgroups
+@vindex gnus-safe-html-newsgroups
+Groups in which links in html articles are considered all safe. The
+value may be a regexp matching those groups, a list of group names, or
+@code{nil}. This overrides @code{mm-w3m-safe-url-regexp}. The default
+value is @code{"\\`nnrss[+:]"}. This is effective only when emacs-w3m
+renders html articles, i.e., in the case @code{mm-text-html-renderer} is
+set to @code{w3m}. @xref{Display Customization, ,Display Customization,
+emacs-mime, The Emacs MIME Manual}.
@end table
@item
@code{message-insinuate-rmail}
+@c FIXME should that not be 'message-user-agent?
Adding @code{(message-insinuate-rmail)} and @code{(setq
mail-user-agent 'gnus-user-agent)} in @file{.emacs} convinces Rmail to
compose, reply and forward messages in message-mode, where you can
@lisp
;;; @r{nndir.el --- single directory newsgroup access for Gnus}
-;; @r{Copyright (C) 1995,96 Free Software Foundation, Inc.}
+;; @r{Copyright (C) 1995,1996 Free Software Foundation, Inc.}
;;; @r{Code:}
@chapter Key Index
@printindex ky
-@summarycontents
-@contents
@bye
@iftex