@copying
Copyright @copyright{} 1995, 1996, 1997, 1998, 1999, 2000, 2001,
-2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+2002, 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
\begin{document}
% Adjust ../Makefile.in if you change the following line:
-\newcommand{\gnusversionname}{No Gnus v0.4}
+\newcommand{\gnusversionname}{No Gnus v0.5}
\newcommand{\gnuschaptername}{}
\newcommand{\gnussectionname}{}
luck.
@c Adjust ../Makefile.in if you change the following line:
-This manual corresponds to No Gnus v0.4.
+This manual corresponds to No Gnus v0.5.
@end ifinfo
@chapter Starting Gnus
@cindex starting up
+If you are haven't used Emacs much before using Gnus, read @ref{Emacs
+for Heathens} first.
+
@kindex M-x gnus
@findex gnus
If your system administrator has set things up properly, starting Gnus
and reading news is extremely easy---you just type @kbd{M-x gnus} in
-your Emacs.
+your Emacs. If not, you should customize the variable
+@code{gnus-select-method} as described in @ref{Finding the News}. For a
+minimal setup for posting should also customize the variables
+@code{user-full-name} and @code{user-mail-address}.
@findex gnus-other-frame
@kindex M-x gnus-other-frame
* Group Highlighting:: Having nice colors in the group buffer.
@end menu
+You can customize the Group Mode tool bar, see @kbd{M-x
+customize-apropos RET gnus-group-tool-bar}. This feature is only
+available in Emacs.
+
+The tool bar icons are now (de)activated correctly depending on the
+cursor position. Therefore, moving around in the Group Buffer is
+slower. You can disable this via the variable
+@code{gnus-group-update-tool-bar}. Its default value depends on your
+Emacs version.
@node Group Line Specification
@subsection Group Line Specification
hysterical raisins, even the mail back ends, where the true number of
unread messages might be available efficiently, use the same limited
interface. To remove this restriction from Gnus means that the back
-end interface has to be changed, which is not an easy job. If you
-want to work on this, please contact the Gnus mailing list.
+end interface has to be changed, which is not an easy job.
+
+The nnml backend (@pxref{Mail Spool}) has a feature called ``group
+compaction'' which circumvents this deficiency: the idea is to
+renumber all articles from 1, removing all gaps between numbers, hence
+getting a correct total count. Other backends may support this in the
+future. In order to keep your total article count relatively up to
+date, you might want to compact your groups (or even directly your
+server) from time to time. @xref{Misc Group Stuff}, @xref{Server Commands}.
@item y
Number of unread, unticked, non-dormant articles.
automatically when entering a group with the @kbd{SPACE} command.
Which article this is is controlled by the
@code{gnus-auto-select-subject} variable. Valid values for this
-variable is:
+variable are:
@table @code
groups under point---@code{gnus-subscribe-newsgroup-method} is not
consulted.
+Changes from the group editing commands are stored in
+@file{~/.newsrc.eld} (@code{gnus-startup-file}). An alternative is the
+variable @code{gnus-parameters}, @xref{Group Parameters}.
+
@table @kbd
@item G m
@item auto-expire
@cindex auto-expire
+@cindex expiring mail
If the group parameter has an element that looks like @code{(auto-expire
. t)}, all articles read will be marked as expirable. For an
alternative approach, @pxref{Expiring Mail}.
@item total-expire
@cindex total-expire
+@cindex expiring mail
If the group parameter has an element that looks like
@code{(total-expire . t)}, all read articles will be put through the
expiry process, even if they are not marked as expirable. Use with
(signature "Funky Signature"))
@end example
+If you're using topics to organize your group buffer
+(@pxref{Group Topics}), note that posting styles can also be set in
+the topics parameters. Posting styles in topic parameters apply to all
+groups in this topic. More precisely, the posting-style settings for a
+group result from the hierarchical merging of all posting-style
+entries in the parameters of this group and all the topics it belongs
+to.
+
+
@item post-method
@cindex post-method
If it is set, the value is used as the method for posting message
@item C-c C-x
@kindex C-c C-x (Group)
@findex gnus-group-expire-articles
+@cindex expiring mail
Run all expirable articles in the current group through the expiry
process (if any) (@code{gnus-group-expire-articles}). That is, delete
all expirable articles in the group that have been around for a while.
@item C-c C-M-x
@kindex C-c C-M-x (Group)
@findex gnus-group-expire-all-groups
+@cindex expiring mail
Run all expirable articles in all groups through the expiry process
(@code{gnus-group-expire-all-groups}).
@item C-c C-x
@kindex C-c C-x (Topic)
@findex gnus-topic-expire-articles
+@cindex expiring mail
Run all expirable articles in the current group or topic through the
expiry process (if any)
(@code{gnus-topic-expire-articles}). (@pxref{Expiring Mail}).
in question. The corresponding back end must have a request-post method
for this to work though.
+@item G z
+@kindex G z (Group)
+@findex gnus-group-compact-group
+
+Compact the group under point (@code{gnus-group-compact-group}).
+Currently implemented only in nnml (@pxref{Mail Spool}). This removes
+gaps between article numbers, hence getting a correct total article
+count.
+
@end table
Variables for the group buffer:
You can have as many summary buffers open as you wish.
+You can customize the Summary Mode tool bar, see @kbd{M-x
+customize-apropos RET gnus-summary-tool-bar}. This feature is only
+available in Emacs.
+
@kindex v (Summary)
@cindex keys, reserved for users (Summary)
The key @kbd{v} is reserved for users. You can bind it key to some
Article number.
@item S
Subject string. List identifiers stripped,
-@code{gnus-list-identifies}. @xref{Article Hiding}.
+@code{gnus-list-identifiers}. @xref{Article Hiding}.
@item s
Subject if the article is the root of the thread or the previous article
had a different subject, @code{gnus-summary-same-subject} otherwise.
used for marking articles in such a way that other commands will
process these articles. For instance, if you process mark four
articles and then use the @kbd{*} command, Gnus will enter these four
-commands into the cache. For more information,
+articles into the cache. For more information,
@pxref{Process/Prefix}.
@table @kbd
(@code{gnus-summary-limit-to-recipient}). If given a prefix, exclude
matching articles.
+@item / S
+@kindex / S (Summary)
+@findex gnus-summary-limit-to-singletons
+Limit the summary buffer to articles that aren't part of any displayed
+threads (@code{gnus-summary-limit-to-singletons}). If given a prefix,
+limit to articles that are part of displayed threads.
+
@item / x
@kindex / x (Summary)
@findex gnus-summary-limit-to-extra
@item / n
@kindex / n (Summary)
@findex gnus-summary-limit-to-articles
-Limit the summary buffer to the current article
-(@code{gnus-summary-limit-to-articles}). Uses the process/prefix
-convention (@pxref{Process/Prefix}).
+With prefix @samp{n}, limit the summary buffer to the next @samp{n}
+articles. If not given a prefix, use the process marked articles
+instead. (@code{gnus-summary-limit-to-articles}).
@item / w
@kindex / w (Summary)
prefix, reverse the limit. This command is quite slow since it
requires selecting each article to find the matches.
+@item / h
+@kindex / h (Summary)
+@findex gnus-summary-limit-to-headers
+Like the previous command, only limit to headers instead
+(@code{gnus-summary-limit-to-headers}).
+
@end table
@item O m
@kindex O m (Summary)
@findex gnus-summary-save-article-mail
-Save the current article in mail format
+Save the current article in a Unix mail box (mbox) file
(@code{gnus-summary-save-article-mail}).
@item O r
@vindex gnus-default-article-saver
You can customize the @code{gnus-default-article-saver} variable to make
-Gnus do what you want it to. You can use any of the six ready-made
+Gnus do what you want it to. You can use any of the eight ready-made
functions below, or you can create your own.
@table @code
@code{gnus-file-save-name} variable to get a file name to save the
article in. The default is @code{gnus-numeric-save-name}.
+@item gnus-summary-write-body-to-file
+@findex gnus-summary-write-body-to-file
+Write the article body straight to an ordinary file. The file is
+overwritten if it exists. Uses the function in the
+@code{gnus-file-save-name} variable to get a file name to save the
+article in. The default is @code{gnus-numeric-save-name}.
+
@item gnus-summary-save-in-folder
@findex gnus-summary-save-in-folder
@findex gnus-folder-save-name
reader to use this setting.
@end table
+The symbol of each function may have the following properties:
+
+@table @code
+@item :decode
+The value non-@code{nil} means save decoded articles. This is
+meaningful only with @code{gnus-summary-save-in-file},
+@code{gnus-summary-save-body-in-file},
+@code{gnus-summary-write-to-file}, and
+@code{gnus-summary-write-body-to-file}.
+
+@item :function
+The value specifies an alternative function which appends, not
+overwrites, articles to a file. This implies that when saving many
+articles at a time, @code{gnus-prompt-before-saving} is bound to
+@code{t} and all articles are saved in a single file. This is
+meaningful only with @code{gnus-summary-write-to-file} and
+@code{gnus-summary-write-body-to-file}.
+
+@item :headers
+The value specifies the symbol of a variable of which the value
+specifies headers to be saved. If it is omitted,
+@code{gnus-save-all-headers} and @code{gnus-saved-headers} control what
+headers should be saved.
+@end table
+
@vindex gnus-article-save-directory
All of these functions, except for the last one, will save the article
in the @code{gnus-article-save-directory}, which is initialized from the
@item gnus-article-emulate-mime
@vindex gnus-article-emulate-mime
+@cindex uuencode
+@cindex yEnc
There are other, non-@acronym{MIME} encoding methods used. The most common
is @samp{uuencode}, but yEncode is also getting to be popular. If
this variable is non-@code{nil}, Gnus will look in message bodies to
see if it finds these encodings, and if so, it'll run them through the
-Gnus @acronym{MIME} machinery. The default is @code{t}.
+Gnus @acronym{MIME} machinery. The default is @code{t}. Only
+single-part yEnc encoded attachments can be decoded. There's no support
+for encoding in Gnus.
@item gnus-unbuttonized-mime-types
@vindex gnus-unbuttonized-mime-types
@item B e
@kindex B e (Summary)
@findex gnus-summary-expire-articles
+@cindex expiring mail
Run all expirable articles in the current group through the expiry
process (@code{gnus-summary-expire-articles}). That is, delete all
expirable articles in the group that have been around for a while.
@item B C-M-e
@kindex B C-M-e (Summary)
@findex gnus-summary-expire-articles-now
+@cindex expiring mail
Delete all the expirable articles in the group
(@code{gnus-summary-expire-articles-now}). This means that @strong{all}
articles eligible for expiry in the current group will
Pull all dormant articles (for the current group) into the summary buffer
(@code{gnus-summary-insert-dormant-articles}).
+@item Y t
+@kindex Y t (Summary)
+@findex gnus-summary-insert-ticked-articles
+Pull all ticked articles (for the current group) into the summary buffer
+(@code{gnus-summary-insert-ticked-articles}).
+
@end table
Remove the @code{To} header if it only contains the address identical to
the current group's @code{to-list} parameter.
@item cc-list
-Remove the @code{CC} header if it only contains the address identical to
+Remove the @code{Cc} header if it only contains the address identical to
the current group's @code{to-list} parameter.
@item date
Remove the @code{Date} header if the article is less than three days
old.
@item long-to
-Remove the @code{To} header if it is very long.
+Remove the @code{To} and/or @code{Cc} header if it is very long.
@item many-to
-Remove all @code{To} headers if there are more than one.
+Remove all @code{To} and/or @code{Cc} headers if there are more than one.
@end table
To include these three elements, you could say something like:
type of the part. This variable is ignored if the value of the
controlling variable is a predicate list, as described above.
+@ifinfo
+@c Avoid sort of redundant entries in the same section for the printed
+@c manual, but add them in info to allow `i gnus-treat-foo-bar RET' or
+@c `i foo-bar'.
+@vindex gnus-treat-buttonize
+@vindex gnus-treat-buttonize-head
+@vindex gnus-treat-capitalize-sentences
+@vindex gnus-treat-overstrike
+@vindex gnus-treat-strip-cr
+@vindex gnus-treat-strip-headers-in-body
+@vindex gnus-treat-strip-leading-blank-lines
+@vindex gnus-treat-strip-multiple-blank-lines
+@vindex gnus-treat-strip-pem
+@vindex gnus-treat-strip-trailing-blank-lines
+@vindex gnus-treat-unsplit-urls
+@vindex gnus-treat-wash-html
+@vindex gnus-treat-date-english
+@vindex gnus-treat-date-iso8601
+@vindex gnus-treat-date-lapsed
+@vindex gnus-treat-date-local
+@vindex gnus-treat-date-original
+@vindex gnus-treat-date-user-defined
+@vindex gnus-treat-date-ut
+@vindex gnus-treat-from-picon
+@vindex gnus-treat-mail-picon
+@vindex gnus-treat-newsgroups-picon
+@vindex gnus-treat-display-smileys
+@vindex gnus-treat-body-boundary
+@vindex gnus-treat-display-x-face
+@vindex gnus-treat-display-face
+@vindex gnus-treat-emphasize
+@vindex gnus-treat-fill-article
+@vindex gnus-treat-fill-long-lines
+@vindex gnus-treat-hide-boring-headers
+@vindex gnus-treat-hide-citation
+@vindex gnus-treat-hide-citation-maybe
+@vindex gnus-treat-hide-headers
+@vindex gnus-treat-hide-signature
+@vindex gnus-treat-strip-banner
+@vindex gnus-treat-strip-list-identifiers
+@vindex gnus-treat-highlight-citation
+@vindex gnus-treat-highlight-headers
+@vindex gnus-treat-highlight-signature
+@vindex gnus-treat-play-sounds
+@vindex gnus-treat-translate
+@vindex gnus-treat-x-pgp-sig
+@vindex gnus-treat-unfold-headers
+@vindex gnus-treat-fold-headers
+@vindex gnus-treat-fold-newsgroups
+@vindex gnus-treat-leading-whitespace
+@end ifinfo
+
The following treatment options are available. The easiest way to
customize this is to examine the @code{gnus-article-treat} customization
group. Values in parenthesis are suggested sensible values. Others are
@xref{Smileys}.
+@vindex gnus-treat-display-x-face
@item gnus-treat-display-x-face (head)
@xref{X-Face}.
+@vindex gnus-treat-display-face
@item gnus-treat-display-face (head)
@xref{Face}.
+@vindex gnus-treat-emphasize
@item gnus-treat-emphasize (t, head, integer)
+@vindex gnus-treat-fill-article
@item gnus-treat-fill-article (t, integer)
+@vindex gnus-treat-fill-long-lines
@item gnus-treat-fill-long-lines (t, integer)
+@vindex gnus-treat-hide-boring-headers
@item gnus-treat-hide-boring-headers (head)
+@vindex gnus-treat-hide-citation
@item gnus-treat-hide-citation (t, integer)
+@vindex gnus-treat-hide-citation-maybe
@item gnus-treat-hide-citation-maybe (t, integer)
+@vindex gnus-treat-hide-headers
@item gnus-treat-hide-headers (head)
+@vindex gnus-treat-hide-signature
@item gnus-treat-hide-signature (t, last)
+@vindex gnus-treat-strip-banner
@item gnus-treat-strip-banner (t, last)
+@vindex gnus-treat-strip-list-identifiers
@item gnus-treat-strip-list-identifiers (head)
@xref{Article Hiding}.
+@vindex gnus-treat-highlight-citation
@item gnus-treat-highlight-citation (t, integer)
+@vindex gnus-treat-highlight-headers
@item gnus-treat-highlight-headers (head)
+@vindex gnus-treat-highlight-signature
@item gnus-treat-highlight-signature (t, last, integer)
@xref{Article Highlighting}.
+@vindex gnus-treat-play-sounds
@item gnus-treat-play-sounds
+@vindex gnus-treat-translate
@item gnus-treat-translate
@item gnus-treat-ansi-sequences (t)
+@vindex gnus-treat-x-pgp-sig
@item gnus-treat-x-pgp-sig (head)
+@vindex gnus-treat-unfold-headers
@item gnus-treat-unfold-headers (head)
+@vindex gnus-treat-fold-headers
@item gnus-treat-fold-headers (head)
+@vindex gnus-treat-fold-newsgroups
@item gnus-treat-fold-newsgroups (head)
+@vindex gnus-treat-leading-whitespace
@item gnus-treat-leading-whitespace (head)
@xref{Article Header}.
@cindex User-Agent
This variable controls which information should be exposed in the
-User-Agent header. It can be one of the symbols @code{gnus} (show only
-Gnus version), @code{emacs-gnus} (show only Emacs and Gnus versions),
-@code{emacs-gnus-config} (same as @code{emacs-gnus} plus system
-configuration), @code{emacs-gnus-type} (same as @code{emacs-gnus} plus
-system type) or a custom string. If you set it to a string, be sure to
-use a valid format, see RFC 2616.
+User-Agent header. It can be a list of symbols or a string. Valid
+symbols are @code{gnus} (show Gnus version) and @code{emacs} (show Emacs
+version). In addition to the Emacs version, you can add @code{codename}
+(show (S)XEmacs codename) or either @code{config} (show system
+configuration) or @code{type} (show system type). If you set it to a
+string, be sure to use a valid format, see RFC 2616.
@end table
Modify to suit your needs.
+@vindex gnus-message-highlight-citation
+If @code{gnus-message-highlight-citation} is t, different levels of
+citations are highlighted like in Gnus article buffers also in message
+mode buffers.
@node Archived Messages
@section Archived Messages
@item @code{body}
@end itemize
+Note that the @code{signature-file} attribute honors the variable
+@code{message-signature-directory}.
+
The attribute name can also be a string or a symbol. In that case,
this will be used as a header name, and the value will be inserted in
the headers of the article; if the value is @code{nil}, the header
The @samp{nnml:.*} rule means that you use the @code{To} address as the
@code{From} address in all your outgoing replies, which might be handy
if you fill many roles.
-
+You may also use @code{message-alternative-emails} instead.
+@xref{Message Headers, ,Message Headers, message, Message Manual}.
@node Drafts
@section Drafts
(@code{gnus-server-regenerate-server}). This can be useful if you have
a mail back end that has gotten out of sync.
+@item z
+@kindex z (Server)
+@findex gnus-server-compact-server
+
+Compact all groups in the server under point
+(@code{gnus-server-compact-server}). Currently implemented only in
+nnml (@pxref{Mail Spool}). This removes gaps between article numbers,
+hence getting a correct total article count.
+
@end table
@lisp
(setq gnus-select-method
'(nntp "indirect"
- (nntp-address "news.server.example")
+ (nntp-address "news.server.example")
(nntp-via-user-name "intermediate_user_name")
(nntp-via-address "intermediate.host.example")
(nntp-via-rlogin-command "ssh")
@vindex nntp-server-opened-hook
@cindex @sc{mode reader}
@cindex authinfo
-@cindex authentification
-@cindex nntp authentification
+@cindex authentication
+@cindex nntp authentication
@findex nntp-send-authinfo
@findex nntp-send-mode-reader
is run after a connection has been made. It can be used to send
in two categories: direct connection functions (four pre-made), and
indirect ones (three pre-made).
+@item nntp-never-echoes-commands
+@vindex nntp-never-echoes-commands
+Non-@code{nil} means the nntp server never echoes commands. It is
+reported that some nntps server doesn't echo commands. So, you may want
+to set this to non-@code{nil} in the method for such a server setting
+@code{nntp-open-connection-function} to @code{nntp-open-ssl-stream} for
+example. The default value is @code{nil}. Note that the
+@code{nntp-open-connection-functions-never-echo-commands} variable
+overrides the @code{nil} value of this variable.
+
+@item nntp-open-connection-functions-never-echo-commands
+@vindex nntp-open-connection-functions-never-echo-commands
+List of functions that never echo commands. Add or set a function which
+you set to @code{nntp-open-connection-function} to this list if it does
+not echo commands. Note that a non-@code{nil} value of the
+@code{nntp-never-echoes-commands} variable overrides this variable. The
+default value is @code{(nntp-open-network-stream)}.
+
@item nntp-prepare-post-hook
@vindex nntp-prepare-post-hook
A hook run just before posting an article. If there is no
@vindex nnmail-mail-splitting-charset
@vindex nnmail-mail-splitting-decodes
-By default the splitting codes @acronym{MIME} decodes headers so you
+By default, splitting @acronym{MIME}-decodes headers so you
can match on non-@acronym{ASCII} strings. The
@code{nnmail-mail-splitting-charset} variable specifies the default
charset for decoding. The behavior can be turned off completely by
rm -f $TMP; $MOVEMAIL $MAIL $TMP >/dev/null && cat $TMP
@end example
-Alter this script to fit find the @samp{movemail} you want to use.
+Alter this script to fit the @samp{movemail} and temporary
+file you want to use.
@item directory
@vindex pop3-movemail
@vindex pop3-leave-mail-on-server
If the @code{:program} and @code{:function} keywords aren't specified,
-@code{pop3-movemail} will be used. If the
-@code{pop3-leave-mail-on-server} is non-@code{nil} the mail is to be
-left on the @acronym{POP} server after fetching when using
-@code{pop3-movemail}. Note that POP servers maintain no state
-information between sessions, so what the client believes is there and
-what is actually there may not match up. If they do not, then the whole
-thing can fall apart and leave you with a corrupt mailbox.
+@code{pop3-movemail} will be used. If @code{pop3-leave-mail-on-server}
+is non-@code{nil} the mail is to be left on the @acronym{POP} server
+after fetching when using @code{pop3-movemail}. Note that POP servers
+maintain no state information between sessions, so what the client
+believes is there and what is actually there may not match up. If they
+do not, then you may get duplicate mails or the whole thing can fall
+apart and leave you with a corrupt mailbox.
-Here are some examples. Fetch from the default @acronym{POP} server,
-using the default user name, and default fetcher:
+Here are some examples for getting mail from a @acronym{POP} server.
+Fetch from the default @acronym{POP} server, using the default user
+name, and default fetcher:
@lisp
(pop)
@node Expiring Mail
@subsection Expiring Mail
@cindex article expiry
+@cindex expiring mail
Traditional mail readers have a tendency to remove mail articles when
you mark them as read, in some way. Gnus takes a fundamentally
@findex nnmail-remove-tabs
Translate all @samp{TAB} characters into @samp{SPACE} characters.
-@item nnmail-fix-eudora-headers
-@findex nnmail-fix-eudora-headers
+@item nnmail-ignore-broken-references
+@findex nnmail-ignore-broken-references
+@c @findex nnmail-fix-eudora-headers
@cindex Eudora
-Eudora produces broken @code{References} headers, but OK
-@code{In-Reply-To} headers. This function will get rid of the
-@code{References} headers.
+@cindex Pegasus
+Some mail user agents (e.g. Eudora and Pegasus) produce broken
+@code{References} headers, but correct @code{In-Reply-To} headers. This
+function will get rid of the @code{References} header if the headers
+contain a line matching the regular expression
+@code{nnmail-broken-references-mailers}.
@end table
files. This requires @code{auto-compression-mode} to be enabled
(@pxref{Compressed Files, ,Compressed Files, emacs, The Emacs Manual}).
If the value of @code{nnml-use-compressed-files} is a string, it is used
-as the file extension specifying the comression program. You can set it
+as the file extension specifying the compression program. You can set it
to @samp{.bz2} if your Emacs supports it. A value of @code{t} is
equivalent to @samp{.gz}.
clients. (In other words, Gnus has two ``Tick'' marks and @acronym{IMAP}
has only one.)
-Probably the only reason for frobing this would be if you're trying
+Probably the only reason for frobbing this would be if you're trying
enable per-user persistent dormant flags, using something like:
@lisp
@item nnimap-expunge-search-string
@cindex expunging
@vindex nnimap-expunge-search-string
+@cindex expiring @acronym{IMAP} mail
This variable contain the @acronym{IMAP} search command sent to server when
searching for articles eligible for expiring. The default is
messages instead of the internal article date. See section 6.4.4 of
RFC 2060 for more information on valid strings.
+However, if @code{nnimap-search-uids-not-since-is-evil}
+is true, this variable has no effect since the search logic
+is reversed, as described below.
+
@item nnimap-authinfo-file
@vindex nnimap-authinfo-file
seem to need this under some circumstances; it was reported that
Courier 1.7.1 did.
+@item nnimap-nov-is-evil
+@vindex nnimap-nov-is-evil
+@cindex Courier @acronym{IMAP} server
+@cindex @acronym{NOV}
+
+Never generate or use a local @acronym{NOV} database. Defaults to the
+value of @code{gnus-agent}.
+
+Using a @acronym{NOV} database usually makes header fetching much
+faster, but it uses the @code{UID SEARCH UID} command, which is very
+slow on some servers (notably some versions of Courier). Since the Gnus
+Agent caches the information in the @acronym{NOV} database without using
+the slow command, this variable defaults to true if the Agent is in use,
+and false otherwise.
+
+@item nnimap-search-uids-not-since-is-evil
+@vindex nnimap-search-uids-not-since-is-evil
+@cindex Courier @acronym{IMAP} server
+@cindex expiring @acronym{IMAP} mail
+
+Avoid the @code{UID SEARCH UID @var{message numbers} NOT SINCE
+@var{date}} command, which is slow on some @acronym{IMAP} servers
+(notably, some versions of Courier). Instead, use @code{UID SEARCH SINCE
+@var{date}} and prune the list of expirable articles within Gnus.
+
+When Gnus expires your mail (@pxref{Expiring Mail}), it starts with a
+list of expirable articles and asks the IMAP server questions like ``Of
+these articles, which ones are older than a week?'' While this seems
+like a perfectly reasonable question, some IMAP servers take a long time
+to answer it, since they seemingly go looking into every old article to
+see if it is one of the expirable ones. Curiously, the question ``Of
+@emph{all} articles, which ones are newer than a week?'' seems to be
+much faster to answer, so setting this variable causes Gnus to ask this
+question and figure out the answer to the real question itself.
+
+This problem can really sneak up on you: when you first configure Gnus,
+everything works fine, but once you accumulate a couple thousand
+messages, you start cursing Gnus for being so slow. On the other hand,
+if you get a lot of email within a week, setting this variable will
+cause a lot of network traffic between Gnus and the IMAP server.
+
@end table
@menu
@node Expiring in IMAP
@subsection Expiring in IMAP
-@cindex expiring imap mail
+@cindex expiring @acronym{IMAP} mail
Even though @code{nnimap} is not a proper @code{nnmail} derived back
end, it supports most features in regular expiring (@pxref{Expiring
your server must support permanent storage of client specific flags on
messages. Most do, fortunately.
+If expiring @acronym{IMAP} mail seems very slow, try setting the server
+variable @code{nnimap-search-uids-not-since-is-evil}.
+
@table @code
@item nnmail-expiry-wait
@findex gnus-agent-expire-group
@cindex agent expiry
@cindex Gnus agent expiry
-@cindex expiry
+@cindex expiry, in Gnus agent
The Agent back end, @code{nnagent}, doesn't handle expiry. Well, at
least it doesn't handle it like other back ends. Instead, there are
@file{~/.gnus.el} file to get started.
@lisp
-;;; @r{Define how Gnus is to fetch news. We do this over @acronym{NNTP}}
-;;; @r{from your ISP's server.}
+;; @r{Define how Gnus is to fetch news. We do this over @acronym{NNTP}}
+;; @r{from your ISP's server.}
(setq gnus-select-method '(nntp "news.your-isp.com"))
-;;; @r{Define how Gnus is to read your mail. We read mail from}
-;;; @r{your ISP's @acronym{POP} server.}
+;; @r{Define how Gnus is to read your mail. We read mail from}
+;; @r{your ISP's @acronym{POP} server.}
(setq mail-sources '((pop :server "pop.your-isp.com")))
-;;; @r{Say how Gnus is to store the mail. We use nnml groups.}
+;; @r{Say how Gnus is to store the mail. We use nnml groups.}
(setq gnus-secondary-select-methods '((nnml "")))
-;;; @r{Make Gnus into an offline newsreader.}
-;;; (gnus-agentize) ; @r{The obsolete setting.}
-;;; (setq gnus-agent t) ; @r{Now the default.}
+;; @r{Make Gnus into an offline newsreader.}
+;; (gnus-agentize) ; @r{The obsolete setting.}
+;; (setq gnus-agent t) ; @r{Now the default.}
@end lisp
That should be it, basically. Put that in your @file{~/.gnus.el} file,
@example
#!/bin/sh
-emacs -batch -l ~/.emacs -l ~/.gnus.el gnus-agent-batch >/dev/null 2>&1
+emacs -batch -l ~/.emacs -l ~/.gnus.el -f gnus-agent-batch >/dev/null 2>&1
@end example
See? Simple.
+@vindex gnus-inhibit-slow-scoring
+You can inhibit scoring the slow scoring on headers or body by setting
+the variable @code{gnus-inhibit-slow-scoring}. If
+@code{gnus-inhibit-slow-scoring} is regexp, slow scoring is inhibited if
+the group matches the regexp. If it is t, slow scoring on it is
+inhibited for all groups.
+
@node Scoring Tips
@section Scoring Tips
@example
((&
("from" "Lars Ingebrigtsen")
- (1- ("from" "Reig Eigir Logge")))
+ (1- ("from" "Reig Eigil Logge")))
-100000)
@end example
@section Image Enhancements
XEmacs, as well as Emacs 21@footnote{Emacs 21 on MS Windows doesn't
-support images yet.}, is able to display pictures and stuff, so Gnus has
-taken advantage of that.
+support images, Emacs 22 does.} and up, are able to display pictures and
+stuff, so Gnus has taken advantage of that.
@menu
* X-Face:: Display a funky, teensy black-and-white image.
has image support the default action is to display the face before the
@code{From} header. If there's no native @code{X-Face} support, Gnus
will try to convert the @code{X-Face} header using external programs
-from the @code{pbmplus} package and friends. For XEmacs it's faster if
-XEmacs has been compiled with @code{X-Face} support. The default action
-under Emacs without image support is to fork off the @code{display}
-program.
+from the @code{pbmplus} package and friends, see below. For XEmacs it's
+faster if XEmacs has been compiled with @code{X-Face} support. The
+default action under Emacs without image support is to fork off the
+@code{display} program.
-On a GNU/Linux system, the @code{display} program is from the
+On a GNU/Linux system, the @code{display} program is included in the
ImageMagick package. For external conversion programs look for packages
with names like @code{netpbm}, @code{libgr-progs} and @code{compface}.
-
-The variable that controls this is the
-@code{gnus-article-x-face-command} variable. If this variable is a
+On Windows, you may use the packages @code{netpbm} and @code{compface}
+from @url{http://gnuwin32.sourceforge.net}. You need to add the
+@code{bin} directory to your @code{PATH} environment variable.
+@c In fact only the following DLLs and binaries seem to be required:
+@c compface1.dll uncompface.exe libnetpbm10.dll icontopbm.exe
+
+The variable @code{gnus-article-x-face-command} controls which programs
+are used to display the @code{X-Face} header. If this variable is a
string, this string will be executed in a sub-shell. If it is a
function, this function will be called with the face as the argument.
-If the @code{gnus-article-x-face-too-ugly} (which is a regexp) matches
-the @code{From} header, the face will not be shown.
+If @code{gnus-article-x-face-too-ugly} (which is a regexp) matches the
+@code{From} header, the face will not be shown.
(Note: @code{x-face} is used in the variable/function names, not
@code{xface}).
analysis of spam works very well in most of the cases, but it can
classify legitimate e-mail as spam in some cases. It takes time to
run the analysis, the full message must be analyzed, and the user has
-to store the database of spam analyses. Statistical analysis on the
+to store the database of spam analysis. Statistical analysis on the
server is gaining popularity. This has the advantage of letting the
user Just Read Mail, but has the disadvantage that it's harder to tell
the server that it has misclassified mail.
group specified by the variable @code{gnus-spam-process-destinations},
or the group parameter @code{spam-process-destination}. If these
variables are not set, the articles are left in their current group.
-If an article cannot not be moved (e.g., with a read-only backend such
+If an article cannot be moved (e.g., with a read-only backend such
as @acronym{NNTP}), it is copied.
If an article is moved to another group, it is processed again when
(gnus-registry-initialize)
(spam-initialize)
-;; @r{I like @kbd{C-s} for marking spam}
-(define-key gnus-summary-mode-map "\C-s" 'gnus-summary-mark-as-spam)
-
(setq
spam-log-to-registry t ; @r{for spam autodetection}
spam-use-BBDB t
@end defvar
-@defvar spam-spamassassin-path
+@defvar spam-spamassassin-program
This variable points to the SpamAssassin executable. If you have
@code{spamd} running, you can set this variable to the @code{spamc}
the default value of @samp{spam}.
@end defvar
-@defvar spam-ifile-database-path
+@defvar spam-ifile-database
This is the filename for the ifile database. It is not specified by
default, so ifile will use its own default database name.
@defvar spam-spamoracle-database
By default, SpamOracle uses the file @file{~/.spamoracle.db} as a database to
-store its analyses. This is controlled by the variable
+store its analysis. This is controlled by the variable
@code{spam-spamoracle-database} which defaults to @code{nil}. That means
the default SpamOracle database will be used. In case you want your
database to live somewhere special, set
@end defun
Usually you would call @code{spam-stat-process-spam-directory} on a
-directory such as @file{~/Mail/mail/spam} (this usually corresponds
-the the group @samp{nnml:mail.spam}), and you would call
+directory such as @file{~/Mail/mail/spam} (this usually corresponds to
+the group @samp{nnml:mail.spam}), and you would call
@code{spam-stat-process-non-spam-directory} on a directory such as
-@file{~/Mail/mail/misc} (this usually corresponds the the group
+@file{~/Mail/mail/misc} (this usually corresponds to the group
@samp{nnml:mail.misc}).
When you are using @acronym{IMAP}, you won't have the mails available
@subsection Dired
@cindex dired
-@code{gnus-dired-minor-mode} provided some useful functions for dired
+@code{gnus-dired-minor-mode} provides some useful functions for dired
buffers. It is enabled with
@lisp
(add-hook 'dired-mode-hook 'turn-on-gnus-dired-mode)
@table @kbd
@item C-c C-m C-a
@findex gnus-dired-attach
+@cindex attachments, selection via dired
Send dired's marked files as an attachment (@code{gnus-dired-attach}).
You will be prompted for a message buffer.
later entry for more information about marks. Note that downgrading
isn't save in general.
+@item
+Lisp files are now installed in @file{.../site-lisp/gnus/} by default.
+It defaulted to @file{.../site-lisp/} formerly. In addition to this,
+the new installer issues a warning if other Gnus installations which
+will shadow the latest one are detected. You can then remove those
+shadows manually or remove them using @code{make
+remove-installed-shadows}.
+
@item
New @file{make.bat} for compiling and installing Gnus under MS Windows
using a wide variety of programs and filter rules. Among the supported
methods are RBL blocklists, bogofilter and white/blacklists. Hooks
for easy use of external packages such as SpamAssassin and Hashcash
-are also new. @xref{Thwarting Email Spam}.
+are also new. @ref{Thwarting Email Spam} and @ref{Spam Package}.
@c FIXME: @xref{Spam Package}?. Should this be under Misc?
@item
@code{gnus-cite-unsightly-citation-regexp} matches the start of these
citations.
+The new command @kbd{W Y f}
+(@code{gnus-article-outlook-deuglify-article}) allows deuglifying broken
+Outlook (Express) articles.
+
@item
@code{gnus-article-skip-boring}
message cited below.
@item
-Smileys (@samp{:-)}, @samp{;-)} etc) are now iconized for Emacs too.
+Smileys (@samp{:-)}, @samp{;-)} etc) are now displayed graphically in
+Emacs too.
Put @code{(setq gnus-treat-display-smileys nil)} in @file{~/.gnus.el} to
disable it.
groups.
@item
-@file{deuglify.el} (@code{gnus-article-outlook-deuglify-article})
-
-A new file from Raymond Scholz @email{rscholz@@zonix.de} for deuglifying
-broken Outlook (Express) articles.
-
-@item
-Externalizing and deleting of attachments.
-
-If @code{gnus-gcc-externalize-attachments} or
-@code{message-fcc-externalize-attachments} is non-@code{nil}, attach
-local files as external parts.
+Deleting of attachments.
The command @code{gnus-mime-save-part-and-strip} (bound to @kbd{C-o}
on @acronym{MIME} buttons) saves a part and replaces the part with an
The new option @code{gnus-gcc-mark-as-read} automatically marks
Gcc articles as read.
+@item
+Externalizing of attachments
+
+If @code{gnus-gcc-externalize-attachments} or
+@code{message-fcc-externalize-attachments} is non-@code{nil}, attach
+local files as external parts.
+
@item
The envelope sender address can be customized when using Sendmail.
@xref{Mail Variables, Mail Variables,, message, Message Manual}.
@item
The option @code{mm-fill-flowed} can be used to disable treatment of
``format=flowed'' messages. Also, flowed text is disabled when sending
-inline PGP signed messages. (New in Gnus 5.10.7)
+inline PGP signed messages. @xref{Flowed text, , Flowed text,
+emacs-mime, The Emacs MIME Manual}. (New in Gnus 5.10.7)
+@c This entry is also present in the node "No Gnus".
@item
Gnus supports the generation of RFC 2298 Disposition Notification requests.
@code{back-to-indentation}, which is also useful in message mode.
@item
-The default for @code{message-forward-show-mml} changed to symbol @code{best}.
+The default for @code{message-forward-show-mml} changed to the symbol
+@code{best}.
The behavior for the @code{best} value is to show @acronym{MML} (i.e.,
convert to @acronym{MIME}) when appropriate. @acronym{MML} will not be
specified by RFC 1153.
@item splitting
-@cindex splitting, terminolgy
+@cindex splitting, terminology
@cindex mail sorting
@cindex mail filtering (splitting)
The action of sorting your emails according to certain rules. Sometimes