spool or your mbox file. All at the same time, if you want to push your
luck.
-This manual corresponds to Gnus 5.8.7.
+This manual corresponds to pre-Oort Gnus.
@end ifinfo
* Exiting the Summary Buffer:: Returning to the Group buffer.
* Crosspost Handling:: How crossposted articles are dealt with.
* Duplicate Suppression:: An alternative when crosspost handling fails.
+* Security:: Decrypt and Verify.
Summary Buffer Format
It is recommended that you keep all your mail groups (if any) on quite
low levels (e.g. 1 or 2).
+Maybe the following description of the default behavior of Gnus helps to
+understand what these levels are all about. By default, Gnus shows you
+subscribed nonempty groups, but by hitting @kbd{L} you can have it show
+empty subscribed groups and unsubscribed groups, too. Type @kbd{l} to
+go back to showing nonempty subscribed groups again. Thus, unsubscribed
+groups are hidden, in a way.
+
+Zombie and killed groups are similar to unsubscribed groups in that they
+are hidden by default. But they are different from subscribed and
+unsubscribed groups in that Gnus doesn't ask the news server for
+information (number of messages, number of unread messages) on zombie
+and killed groups. Normally, you use @kbd{C-k} to kill the groups you
+aren't interested in. If most groups are killed, Gnus is faster.
+
+Why does Gnus distinguish between zombie and killed groups? Well, when
+a new group arrives on the server, Gnus by default makes it a zombie
+group. This means that you are normally not bothered with new groups,
+but you can type @kbd{A z} to get a list of all new groups. Subscribe
+the ones you like and kill the ones you don't want. (@kbd{A k} shows a
+list of killed groups.)
+
If you want to play with the level variables, you should show some care.
Set them once, and don't touch them ever again. Better yet, don't touch
them at all unless you know exactly what you're doing.
(signature "Funky Signature"))
@end example
+@item banner
+An item like @code{(banner . "regex")} causes any part of an article
+that matches the regular expression "regex" to be stripped. Instead of
+"regex", you can also use the symbol @code{signature} which strips the
+last signature or any of the elements of the alist
+@code{gnus-article-banner-alist}.
+
@end table
Use the @kbd{G p} command to edit group parameters of a group. You
@findex gnus-group-list-dormant
List all groups with dormant articles (@code{gnus-group-list-dormant}).
+@item A /
+@kindex A / (Group)
+@findex gnus-group-list-limit
+List groups limited within the current selection
+(@code{gnus-group-list-limit}).
+
+@item A f
+@kindex A f (Group)
+@findex gnus-group-list-flush
+Flush groups from the current selection (@code{gnus-group-list-flush}).
+
+@item A p
+@kindex A p (Group)
+@findex gnus-group-list-plus
+List groups plus the current selection (@code{gnus-group-list-plus}).
+
@end table
@vindex gnus-permanently-visible-groups
* Exiting the Summary Buffer:: Returning to the Group buffer.
* Crosspost Handling:: How crossposted articles are dealt with.
* Duplicate Suppression:: An alternative when crosspost handling fails.
+* Security:: Decrypt and Verify.
@end menu
If the article size if bigger than this variable (which is 25000 by
default), no citation highlighting will be performed.
-@item gnus-cite-prefix-regexp
-@vindex gnus-cite-prefix-regexp
-Regexp matching the longest possible citation prefix on a line.
-
@item gnus-cite-max-prefix
@vindex gnus-cite-max-prefix
Maximum possible length for a citation prefix (default 20).
@findex gnus-article-treat-dumbquotes
@vindex gnus-article-dumbquotes-map
@cindex Smartquotes
-@cindex M******** sm*rtq**t*s
+@cindex M****s*** sm*rtq**t*s
@cindex Latin 1
-Treat M******** sm*rtq**t*s according to
+Treat M****s*** sm*rtq**t*s according to
@code{gnus-article-dumbquotes-map}
(@code{gnus-article-treat-dumbquotes}). Note that this function guesses
whether a character is a sm*rtq**t* or not, so it should only be used
interactively.
+Sm*rtq**t*s are M****s***'s unilateral extension to the character map in
+an attempt to provide more quoting characters. If you see something
+like @code{\222} or @code{\264} where you're expecting some kind of
+apostrophe or quotation mark, then try this wash.
+
@item W w
@kindex W w (Summary)
@findex gnus-article-fill-cited-article
suggest where to put the articles. @code{gnus-move-split-methods} is a
variable that uses the same syntax as @code{gnus-split-methods}
(@pxref{Saving Articles}). You may customize that variable to create
-suggestions you find reasonable.
+suggestions you find reasonable. (Note that
+@code{gnus-move-split-methods} uses group names where
+@code{gnus-split-methods} uses file names.)
@lisp
(setq gnus-move-split-methods
@code{gnus-save-duplicate-list} to @code{nil}. Uhm. I'll leave this up
to you to figure out, I think.
+@node Security
+@section Security
+
+Gnus is able to verify PGP or S/MIME signed messages or decrypt PGP
+encrypted messages.
+
+@enumerate
+@item
+To verify or decrypt PGP messages, you have to install mailcrypt or
+gpg.el.
+
+@end enumerate
+
+@table @code
+@item mm-verify-option
+@vindex mm-verify-option
+Option of verifying signed parts. @code{never}, not verify;
+@code{always}, always verify; @code{known}, only verify known
+protocols. Otherwise, ask user.
+
+@item mm-decrypt-option
+@vindex mm-decrypt-option
+Option of decrypting encrypted parts. @code{never}, no decryption;
+@code{always}, always decrypt @code{known}, only decrypt known
+protocols. Otherwise, ask user.
+
+@end table
@node The Article Buffer
@chapter The Article Buffer
@cindex reply
@cindex followup
@cindex post
+@cindex using gpg
@kindex C-c C-c (Post)
All commands for posting and mailing will put you in a message buffer
* Posting Styles:: An easier way to specify who you are.
* Drafts:: Postponing messages and rejected messages.
* Rejected Articles:: What happens if the server doesn't like your article?
+* Using GPG:: How to use GPG and MML to sign and encrypt messages
@end menu
Also see @pxref{Canceling and Superseding} for information on how to
@itemize @bullet
@item a string
Messages will be saved in that group.
+
+Note that you can include a select method in the group name, then the
+message will not be stored in the select method given by
+@code{gnus-message-archive-method}, but in the select method specified
+by the group name, instead. Suppose @code{gnus-message-archive-method}
+has the default value shown above. Then setting
+@code{gnus-message-archive-group} to @code{"foo"} means that outgoing
+messages are stored in @samp{nnfolder+archive:foo}, but if you use the
+value @code{"nnml:foo"}, then outgoing messages will be stored in
+@samp{nnml:foo}.
@item a list of strings
Messages will be saved in all those groups.
@item an alist of regexps, functions and forms
This variable can be used instead of @code{gnus-message-archive-group},
but the latter is the preferred method.
+
+@item gnus-inews-mark-gcc-as-read
+@vindex gnus-inews-mark-gcc-as-read
+If non-@code{nil}, automatically mark @code{Gcc} articles as read.
+
@end table
(@pxref{Drafts}). When the server comes back up again, you'd then
typically enter that group and send all the articles off.
+@node Using GPG
+@section Using GPG
+@cindex using gpg
+
+Gnus has an ALPHA support to GPG that's provided by @file{gpg.el} and
+@file{mml2015.el}. When viewing signed or encrypted messages, Gnus automatically
+asks if you want to verify or decrypt them.
+
+To use this correctly with GPG, you'll need the following lisp code in your
+@file{~/.emacs} or @file{~/.gnus}:
+
+@lisp
+(setq mml2015-use 'gpg)
+(setq gpg-temp-directory "~/.gnupg/tmp")
+@end lisp
+
+The @code{gpg-temp-directory} need to point to a directory with permissions set
+to 700, for your own safety.
+
+If you want to benefit of PGP2.6 compatibility, you might create a script named
+@file{gpg-2comp} with these instructions:
+
+@code{
+#!/bin/sh
+exec gpg --rfc1991 "$@@"
+}
+
+If you don't want to use such compatibility, you can add the following line to
+your @file{~/.emacs} or @file{~/.gnus}:
+
+@lisp
+(setq gpg-command-default-alist (quote ((gpg . "gpg") (gpg-2comp . "gpg"))))
+@end lisp
+
+To sign or encrypt your message you may choose to use the MML Security menu or
+@kbd{M-m s p} to sign your message using PGP/MIME, @kbd{M-m s s} to sign your
+message using S/MIME. There's also @kbd{M-m c p} to encrypt your message with
+PGP/MIME and @kbd{M-m c s} to encrypt using S/MIME.
+
+Gnus will ask for your passphrase three times and then it will send your
+message, if you've typed it correctly.
+
@node Select Methods
@chapter Select Methods
The file contains one or more line, each of which define one server.
@item
-Each line may contain an arbitrary number of token/value pairs. The
-valid tokens include @samp{machine}, @samp{login}, @samp{password},
-@samp{default}, @samp{port} and @samp{force}. (The latter is not a
-valid @file{.netrc}/@code{ftp} token, which is almost the only way the
-@file{.authinfo} file format deviates from the @file{.netrc} file
-format.)
-
+Each line may contain an arbitrary number of token/value pairs.
@end enumerate
+The valid tokens include @samp{machine}, @samp{login}, @samp{password},
+@samp{default}. Gnus introduce two new tokens, not present in the
+original @file{.netrc}/@code{ftp} syntax, namely @samp{port} and
+@samp{force}. (This is the only way the @file{.authinfo} file format
+deviates from the @file{.netrc} file format.) @samp{port} is used to
+indicate what port on the server the credentials apply to, @samp{force}
+is explained below.
+
Here's an example file:
@example
up to @samp{\\9} will be substituted with the text matched by the
groupings 1 through 9.
+@findex nnmail-split-fancy-with-parent
+@code{nnmail-split-fancy-with-parent} is a function which allows you to
+split followups into the same groups their parents are in. Sometimes
+you can't make splitting rules for all your mail. For example, your
+boss might send you personal mail regarding different projects you are
+working on, and as you can't tell your boss to put a distinguishing
+string into the subject line, you have to resort to manually moving the
+messages into the right group. With this function, you only have to do
+it once per thread.
+
+To use this feature, you have to set @code{nnmail-treat-duplicates} to a
+non-nil value. And then you can include
+@code{nnmail-split-fancy-with-parent} using the colon feature, like so:
+@lisp
+(setq nnmail-split-fancy
+ '(| (: nnmail-split-fancy-with-parent)
+ ;; other splits go here
+ ))
+@end lisp
+
+This feature works as follows: when @code{nnmail-treat-duplicates} is
+non-nil, Gnus records the message id of every message it sees in the
+file specified by the variable @code{nnmail-message-id-cache-file},
+together with the group it is in (the group is omitted for non-mail
+messages). When mail splitting is invoked, the function
+@code{nnmail-split-fancy-with-parent} then looks at the References (and
+In-Reply-To) header of each message to split and searches the file
+specified by @code{nnmail-message-id-cache-file} for the message ids.
+When it has found a parent, it returns the corresponding group name. It
+is recommended that you set @code{nnmail-message-id-cache-length} to a
+somewhat higher number than the default so that the message ids are
+still in the cache. (A value of 5000 appears to create a file some 300
+kBytes in size.) When @code{nnmail-cache-accepted-message-ids} is
+non-nil, Gnus also records the message ids of moved articles, so that
+the followup messages goes into the new group.
+
@node Group Mail Splitting
@subsection Group Mail Splitting
group. If a message doesn't match any split, it will be stored in the
group named in @code{gnus-group-split-default-catch-all-group}, unless
some group has @var{split-spec} set to @code{catch-all}, in which case
-that group is used as the catch-all group. Note that, in this case,
-there's no cross-posting, as a @code{|} fancy split encloses the
-@code{&} split and the catch-all group.
+that group is used as the catch-all group. Even though this variable is
+often used just to name a group, it may also be set to an arbitrarily
+complex fancy split (after all, a group name is a fancy split), and this
+may be useful to split mail that doesn't go to any mailing list to
+personal mail folders. Note that this fancy split is added as the last
+element of a @code{|} split list that also contains a @code{&} split
+with the rules extracted from group parameters.
It's time for an example. Assume the following group parameters have
been defined:
@var{groups} may be a regular expression or a list of group names whose
parameters will be scanned to generate the output split.
@var{no-crosspost} can be used to disable cross-posting; in this case, a
-single @code{|} split will be output. @var{catch-all} may be the name
-of a group to be used as the default catch-all group. If
-@var{catch-all} is @code{nil}, or if @var{split-regexp} matches the
+single @code{|} split will be output. @var{catch-all} is the fallback
+fancy split, used like @var{gnus-group-split-default-catch-all-group}.
+If @var{catch-all} is @code{nil}, or if @var{split-regexp} matches the
empty string in any selected group, no catch-all split will be issued.
Otherwise, if some group has @var{split-spec} set to @code{catch-all},
this group will override the value of the @var{catch-all} argument.
Unfortunately, scanning all groups and their parameters can be quite
slow, especially considering that it has to be done for every message.
But don't despair! The function @code{gnus-group-split-setup} can be
-used to select @code{gnus-group-split} in a much more efficient way. It
+used to enable @code{gnus-group-split} in a much more efficient way. It
sets @code{nnmail-split-methods} to @code{nnmail-split-fancy} and sets
@code{nnmail-split-fancy} to the split produced by
@code{gnus-group-split-fancy}. Thus, the group parameters are only
scanned once, no matter how many messages are split.
@findex gnus-group-split-update
-However, if you change group parameters, you have to update
+However, if you change group parameters, you'd have to update
@code{nnmail-split-fancy} manually. You can do it by running
@code{gnus-group-split-update}. If you'd rather have it updated
automatically, just tell @code{gnus-group-split-setup} to do it for
If @var{auto-update} is non-@code{nil}, @code{gnus-group-split-update}
will be added to @code{nnmail-pre-get-new-mail-hook}, so you won't ever
have to worry about updating @code{nnmail-split-fancy} again. If you
-don't omit @var{catch-all} (it's optional),
+don't omit @var{catch-all} (it's optional; same as nil),
@code{gnus-group-split-default-catch-all-group} will be set to its
value.
This function can be used to copy the message to somewhere else, or to
extract some information from it before removing it.
+@item nnfolder-nov-is-evil
+@vindex nnfolder-nov-is-evil
+If non-@code{nil}, this backend will ignore any @sc{nov} files.
+
@end table
is much similar to connecting to a news server, you just specify the
network address of the server.
+A server configuration in @code{~/.gnus} with a few @sc{imap} servers
+might look something like this:
+
+@lisp
+(setq gnus-secondary-select-methods
+ '((nnimap "simpleserver") ; no special configuration
+ ; perhaps a ssh port forwarded server:
+ (nnimap "dolk"
+ (nnimap-address "localhost")
+ (nnimap-server-port 1430))
+ ; a UW server running on localhost
+ (nnimap "barbar"
+ (nnimap-server-port 143)
+ (nnimap-address "localhost")
+ (nnimap-list-pattern ("INBOX" "mail/*")))
+ ; anonymous public cyrus server:
+ (nnimap "cyrus.andrew.cmu.edu"
+ (nnimap-authenticator anonymous)
+ (nnimap-list-pattern "archive.*")
+ (nnimap-stream network))
+ ; a ssl server on a non-standard port:
+ (nnimap "vic20"
+ (nnimap-address "vic20.somewhere.com")
+ (nnimap-server-port 9930)
+ (nnimap-stream ssl))))
+@end lisp
+
The following variables can be used to create a virtual @code{nnimap}
server:
Predicates of @code{high} or @code{low} download articles in respect of
their scores in relationship to @code{gnus-agent-high-score} and
-@code{gnus-agent-low-score} as descibed below.
+@code{gnus-agent-low-score} as described below.
To gain even finer control of what is to be regarded eligible for
download a predicate can consist of a number of predicates with logical
@code{gnus-agent} has been loaded via @code{(gnus-agentize)})
@lisp
-(defvar gnus-category-predicate-alist
+(setq gnus-category-predicate-alist
(append gnus-category-predicate-alist
'((old . my-article-old-p))))
@end lisp
might look something like this:
@lisp
-(defvar gnus-default-adaptive-score-alist
+(setq gnus-default-adaptive-score-alist
'((gnus-unread-mark)
(gnus-ticked-mark (from 4))
(gnus-dormant-mark (from 5))
to fiddle with @code{gnus-tree-minimize-window} to avoid having the
windows resized.
+@subsection Example Window Configurations
+
+@itemize @bullet
+@item
+Narrow left hand side occupied by group buffer. Right hand side split
+between summary buffer (top one-sixth) and article buffer (bottom).
+
+@ifinfo
+@example
++---+---------+
+| G | Summary |
+| r +---------+
+| o | |
+| u | Article |
+| p | |
++---+---------+
+@end example
+@end ifinfo
+
+@lisp
+(gnus-add-configuration
+ '(article
+ (horizontal 1.0
+ (vertical 25 (group 1.0))
+ (vertical 1.0
+ (summary 0.16 point)
+ (article 1.0)))))
+
+(gnus-add-configuration
+ '(summary
+ (horizontal 1.0
+ (vertical 25 (group 1.0))
+ (vertical 1.0 (summary 1.0 point)))))
+@end lisp
+
+@end itemize
+
@node Faces and Fonts
@section Faces and Fonts
@vindex gnus-nocem-issuers
There are many people issuing NoCeM messages. This list says what
people you want to listen to. The default is @code{("Automoose-1"
-"rbraver@@ohww.norman.ok.us" "clewis@@ferret.ocunix.on.ca"
-"jem@@xpat.com" "snowhare@@xmission.com" "red@@redpoll.mrfs.oh.us
-(Richard E. Depew)")}; fine, upstanding citizens all of them.
+"clewis@@ferret.ocunix.on.ca" "cosmo.roadkill" "SpamHippo"
+"hweede@@snafu.de")}; fine, upstanding citizens all of them.
-Known despammers that you can put in this list include:
-
-@table @samp
-@item clewis@@ferret.ocunix.on.ca;
-@cindex Chris Lewis
-Chris Lewis---Major Canadian despammer who has probably canceled more
-usenet abuse than anybody else.
-
-@item Automoose-1
-@cindex CancelMoose[tm]
-The CancelMoose[tm] on autopilot. The CancelMoose[tm] is reputed to be
-Norwegian, and was the person(s) who invented NoCeM.
-
-@item jem@@xpat.com;
-@cindex Jem
-John Milburn---despammer located in Korea who is getting very busy these
-days.
-
-@item red@@redpoll.mrfs.oh.us (Richard E. Depew)
-Richard E. Depew---lone American despammer. He mostly cancels binary
-postings to non-binary groups and removes spews (regurgitated articles).
-@end table
+Known despammers that you can put in this list are listed at
+@uref{http://www.xs4all.nl/~rosalind/nocemreg/nocemreg.html}.
You do not have to heed NoCeM messages from all these people---just the
ones you want to listen to. You also don't have to accept all NoCeM
The default is 15. If you make it shorter Gnus will be faster, but you
might then see old spam.
+@item gnus-nocem-check-from
+@vindex gnus-nocem-check-from
+Non-@code{nil} means check for valid issuers in message bodies.
+Otherwise don't bother fetching articles unless their author matches a
+valid issuer; that is much faster if you are selective about the
+issuers.
+
+@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.
+
@end table
Using NoCeM could potentially be a memory hog. If you have many living
@samp{gnu.emacs.gnus} newsgroup.
@cindex Incoming*
-@vindex nnmail-delete-incoming
+@vindex mail-source-delete-incoming
Some variable defaults differ between alpha Gnusae and released Gnusae.
-In particular, @code{nnmail-delete-incoming} defaults to @code{nil} in
+In particular, @code{mail-source-delete-incoming} defaults to @code{nil} in
alpha Gnusae and @code{t} in released Gnusae. This is to prevent
lossage of mail if an alpha release hiccups while handling the mail.