\makeindex
\begin{document}
-\newcommand{\gnusversionname}{Oort Gnus v0.05}
+\newcommand{\gnusversionname}{Oort Gnus v0.06}
\newcommand{\gnuschaptername}{}
\newcommand{\gnussectionname}{}
\thispagestyle{empty}
-Copyright \copyright{} 1995, 1996, 1997, 1998, 1999, 2000, 2001
+Copyright \copyright{} 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002
Free Software Foundation, Inc.
This file documents Gnus, the GNU Emacs newsreader.
-Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001
+Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002
Free Software Foundation, Inc.
Permission is granted to copy, distribute and/or modify this document
@page
@vskip 0pt plus 1filll
-Copyright @copyright{} 1995, 1996, 1997, 1998, 1999, 2000, 2001
+Copyright @copyright{} 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002
Free Software Foundation, Inc.
Permission is granted to copy, distribute and/or modify this document
spool or your mbox file. All at the same time, if you want to push your
luck.
-This manual corresponds to Oort Gnus v0.05
+This manual corresponds to Oort Gnus v0.06.
@end ifinfo
gnus-group-clear-data-on-native-groups} command to clear out all data
that you have on your native groups. Use with caution.
+@kindex M-x gnus-group-clear-data
+@findex gnus-group-clear-data
+Clear the data from the current group only---nix out marks and the
+list of read articles (@code{gnus-group-clear-data}).
+
After changing servers, you @strong{must} move the cache hierarchy away,
since the cached articles will have wrong article numbers, which will
affect which articles Gnus thinks are read.
+@code{gnus-group-clear-data-on-native-groups} will ask you if you want
+to have it done automatically; for @code{gnus-group-clear-data}, you
+can use @kbd{M-x gnus-cache-move-cache} (but beware, it will move the
+cache for all groups).
@node Startup Files
Estimated total number of articles. (This is really @var{max-number}
minus @var{min-number} plus 1.)
-Gnus uses this estimation because the NNTP protocol provides efficient
-access to @var{max-number} and @var{min-number} but getting the true
-unread message count is not possible efficiently. For 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
+Gnus uses this estimation because the @sc{nntp} protocol provides
+efficient access to @var{max-number} and @var{min-number} but getting
+the true unread message count is not possible efficiently. For
+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.
@item y
@item unseen
Place point on the subject line of the first unseen article.
+@item unseen-or-unread
+Place point on the subject line of the first unseen article, and if
+there is no such article, place point on the subject line of the first
+unread article.
+
@item best
Place point on the subject line of the highest-scored unread article.
See also @code{gnus-parameter-to-list-alist}.
+@anchor{subscribed}
+@item subscribed
+@cindex subscribed
+If this parameter is set to @code{t}, Gnus will consider the
+to-address and to-list parameters for this group as addresses of
+mailing lists you are subscribed to. Giving Gnus this information
+will help it to generate correct Mail-Followup-To headers for your
+posts to these lists.
+
+See also @code{gnus-find-subscribed-addresses}, the function that
+directly uses this group parameter.
+
@item visible
@cindex visible
If the group parameter list has the element @code{(visible . t)},
generated, if @code{(gcc-self . "string")} is present, this string will
be inserted literally as a @code{gcc} header. This parameter takes
precedence over any default @code{Gcc} rules as described later
-(@pxref{Archived Messages}).
+(@pxref{Archived Messages}). CAVEAT:: It yields an error putting
+@code{(gcc-self . t)} in groups of a @code{nntp} server or so, because
+a @code{nntp} server doesn't accept artciles.
@item auto-expire
@cindex auto-expire
Here are some examples:
@table @code
-@item [read]
-Display only read articles.
+@item [unread]
+Display only unread articles.
@item [not expire]
Display everything except expirable articles.
The available operators are @code{not}, @code{and} and @code{or}.
Predicates include @code{tick}, @code{unsend}, @code{undownload},
-@code{read}, @code{dormant}, @code{expire}, @code{reply},
+@code{unread}, @code{dormant}, @code{expire}, @code{reply},
@code{killed}, @code{bookmark}, @code{score}, @code{save},
-@code{cache}, @code{forward}, @code{seen} and @code{recent}.
+@code{cache}, @code{forward}, @code{unseen} and @code{recent}.
@end table
Commands}) the following Sieve code is generated:
@example
- if address \"sender\" \"sieve-admin@@extundo.com\" @{
- fileinto \"INBOX.list.sieve\";
- @}
+if address \"sender\" \"sieve-admin@@extundo.com\" @{
+ fileinto \"INBOX.list.sieve\";
+@}
@end example
The Sieve language is described in RFC 3028. @xref{Top, , Top, sieve,
in the summary buffer you enter, and the form @code{nil} will be
@code{eval}ed there.
+@vindex gnus-list-identifiers
+A use for this feature, is to remove a mailing list identifier tag in
+the subject fields of articles. E.g. if the news group
+@samp{nntp+news.gnus.org:gmane.text.docbook.apps} has the tag
+@samp{DOC-BOOK-APPS:} in the subject of all articles, this tag can be
+removed from the article subjects in the summary buffer for the group by
+putting @code{(gnus-list-identifiers "DOCBOOK-APPS:")} into the group
+parameters for the group.
+
+
This can also be used as a group-specific hook function, if you'd like.
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
@lisp
(setq gnus-group-line-format
- "%M\%S\%p\%P\%5y: %(%-40,40g%) %Ud\n")
+ "%M\%S\%p\%P\%5y: %(%-40,40g%) %ud\n")
(defun gnus-user-format-function-d (headers)
(let ((time (gnus-group-timestamp gnus-tmp-group)))
- (format-time-string "%b %d %H:%M" time)))
+ (if time
+ (format-time-string "%b %d %H:%M" time)
+ "")))
@end lisp
is forwarded according to the value of (@code{message-forward-as-mime})
and (@code{message-forward-show-mml}); if the prefix is 1, decode the
message and forward directly inline; if the prefix is 2, forward message
-as an rfc822 MIME section; if the prefix is 3, decode message and
-forward as an rfc822 MIME section; if the prefix is 4, forward message
+as an rfc822 @sc{mime} section; if the prefix is 3, decode message and
+forward as an rfc822 @sc{mime} section; if the prefix is 4, forward message
directly inline; otherwise, the message is forwarded as no prefix given
but use the flipped value of (@code{message-forward-as-mime}). By
-default, the message is decoded and forwarded as an rfc822 MIME section.
+default, the message is decoded and forwarded as an rfc822 @sc{mime}
+section.
@item S m
@itemx m
ship a mail to a different account of yours. (If you're both
@code{root} and @code{postmaster} and get a mail for @code{postmaster}
to the @code{root} account, you may want to resend it to
-@code{postmaster}. Ordnung muß sein!
+@code{postmaster}. Ordnung muss sein!
This command understands the process/prefix convention
(@pxref{Process/Prefix}).
of (@code{message-forward-as-mime}) and
(@code{message-forward-show-mml}); if the prefix is 1, decode the
message and forward directly inline; if the prefix is 2, forward message
-as an rfc822 MIME section; if the prefix is 3, decode message and
-forward as an rfc822 MIME section; if the prefix is 4, forward message
+as an rfc822 @sc{mime} section; if the prefix is 3, decode message and
+forward as an rfc822 @sc{mime} section; if the prefix is 4, forward message
directly inline; otherwise, the message is forwarded as no prefix given
but use the flipped value of (@code{message-forward-as-mime}). By
-default, the message is decoded and forwarded as an rfc822 MIME section.
+default, the message is decoded and forwarded as an rfc822 @sc{mime} section.
@item S O p
@kindex S O p (Summary)
If non-@code{nil}, all threads will be hidden when the summary buffer is
generated.
+This can also be a predicate specifier (@pxref{Predicate Specifiers}).
+Avaliable predicates are @code{gnus-article-unread-p} and
+@code{gnus-article-unseen-p}).
+
+Here's an example:
+
+@lisp
+(setq gnus-thread-hide-subtree
+ '(or gnus-article-unread-p
+ gnus-article-unseen-p))
+@end lisp
+
+(It's a pretty nonsensical example, since all unseen articles are also
+unread, but you get my drift.)
+
+
@item gnus-thread-expunge-below
@vindex gnus-thread-expunge-below
All threads that have a total score (as defined by
files, and @kbd{gnus-cache-generate-active} will (re)generate the active
file.
+@findex gnus-cache-move-cache
+@code{gnus-cache-move-cache} will move your whole
+@code{gnus-cache-directory} to some other location. You get asked to
+where, isn't that cool?
@node Persistent Articles
@section Persistent Articles
common encoding employed when sending Chinese articles. It typically
makes strings look like @samp{~@{<:Ky2;S@{#,NpJ)l6HK!#~@}}.
+@item W u
+@kindex W u (Summary)
+@findex gnus-article-unsplit-urls
+Remove newlines from within URLs. Some mailers insert newlines into
+outgoing email messages to keep lines short. This reformatting can
+split long URLs onto multiple lines. Repair those URLs by removing
+the newlines (@code{gnus-article-unsplit-urls}).
+
@item W h
@kindex W h (Summary)
@findex gnus-article-wash-html
-Treat HTML (@code{gnus-article-wash-html}).
-Note that the this is usually done automatically by Gnus if the message
-in question has a @code{Content-Type} header that says that this type
-has been done.
+Treat @sc{html} (@code{gnus-article-wash-html}). Note that the this is
+usually done automatically by Gnus if the message in question has a
+@code{Content-Type} header that says that the message is @sc{html}.
+
If a prefix is given, a charset will be asked for.
+@vindex gnus-article-wash-function
+The default is to use w3 to convert the @sc{html}, but this is
+controlled by the @code{gnus-article-wash-function} variable.
+Pre-defined functions you can use include:
+
+@table @code
+@item gnus-article-wash-html-with-w3
+@findex gnus-article-wash-html-with-w3
+Use w3 (this is the default).
+
+@item gnus-article-wash-html-with-w3m
+@findex gnus-article-wash-html-with-w3m
+Use emacs-w3m (see @uref{http://emacs-w3m.namazu.org/} for more
+information).
+@end table
+
@item W b
@kindex W b (Summary)
@findex gnus-article-add-buttons
@item W s
@kindex W s (Summary)
@findex gnus-summary-force-verify-and-decrypt
-Verify a signed (PGP, PGP/MIME or S/MIME) message
+Verify a signed (PGP, @sc{pgp/mime} or @sc{s/mime}) message
(@code{gnus-summary-force-verify-and-decrypt}). @xref{Security}.
@item W W H
This command looks in the @code{Content-Type} header to determine the
charset. If there is no such header in the article, you can give it a
prefix, which will prompt for the charset to decode as. In regional
-groups where people post using some common encoding (but do not include
-MIME headers), you can set the @code{charset} group/topic parameter to
-the required charset (@pxref{Group Parameters}).
+groups where people post using some common encoding (but do not
+include @sc{mime} headers), you can set the @code{charset} group/topic
+parameter to the required charset (@pxref{Group Parameters}).
@item W M v
@kindex W M v (Summary)
@section Security
Gnus is able to verify signed messages or decrypt encrypted messages.
-The formats that are supported are PGP, PGP/MIME and S/MIME, however
-you need some external programs to get things to work:
+The formats that are supported are PGP, @sc{pgp/mime} and @sc{s/mime},
+however you need some external programs to get things to work:
@enumerate
@item
well as a OpenPGP implementation (such as GnuPG).
@item
-To handle S/MIME message, you need to install OpenSSL. OpenSSL 0.9.6
+To handle @sc{s/mime} message, you need to install OpenSSL. OpenSSL 0.9.6
or newer is recommended.
@end enumerate
@end table
Gnus will display some @sc{mime} objects automatically. The way Gnus
-determines which parts to do this with is described in the Emacs MIME
-manual.
+determines which parts to do this with is described in the Emacs
+@sc{mime} manual.
It might be best to just use the toggling functions from the article
buffer to avoid getting nasty surprises. (For instance, you enter the
@item gnus-treat-strip-pem (t, last, integer)
@item gnus-treat-strip-pgp (t, last, integer)
@item gnus-treat-strip-trailing-blank-lines (t, last, integer)
+@item gnus-treat-unsplit-urls (t, integer)
@xref{Article Washing}.
@vindex gnus-gcc-mark-as-read
If non-@code{nil}, automatically mark @code{Gcc} articles as read.
+@item gnus-gcc-externalize-attachments
+@vindex gnus-gcc-externalize-attachments
+If @code{nil}, attach files as normal parts in Gcc copies; if a regexp
+and matches the Gcc group name, attach files as external parts; if it is
+@code{all}, attach local files as external parts; if it is other
+non-@code{nil}, the behavior is the same as @code{all}, but it may be
+changed in the future.
+
@end table
The first element in each style is called the @code{match}. If it's a
string, then Gnus will try to regexp match it against the group name.
-If it is the symbol @code{header}, then Gnus will look for header (the
-next element in the match) in the original article , and compare that to
-the last regexp in the match. If it's a function symbol, that function
-will be called with no arguments. If it's a variable symbol, then the
-variable will be referenced. If it's a list, then that list will be
-@code{eval}ed. In any case, if this returns a non-@code{nil} value,
-then the style is said to @dfn{match}.
-
-Each style may contain a arbitrary amount of @dfn{attributes}. Each
+If it is the form @code{(header MATCH REGEXP)}, then Gnus will look in
+the original article for a header whose name is MATCH and compare that
+REGEXP. MATCH and REGEXP are strings. If it's a function symbol, that
+function will be called with no arguments. If it's a variable symbol,
+then the variable will be referenced. If it's a list, then that list
+will be @code{eval}ed. In any case, if this returns a non-@code{nil}
+value, then the style is said to @dfn{match}.
+
+Each style may contain an arbitrary amount of @dfn{attributes}. Each
attribute consists of a @code{(@var{name} @var{value})} pair. The
attribute name can be one of @code{signature}, @code{signature-file},
-@code{organization}, @code{address}, @code{name} or @code{body}. The
-attribute name can also be a string. 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 name will be removed.
-If the attribute name is @code{eval}, the form is evaluated, and the
-result is thrown away.
+@code{x-face-file}, @code{address} (overriding
+@code{user-mail-address}), @code{name} (overriding
+@code{(user-full-name)}) or @code{body}. 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 name will be removed. If the
+attribute name is @code{eval}, the form is evaluated, and the result
+is thrown away.
The attribute value can be a string (used verbatim), a function with
zero arguments (the return value will be used), a variable (its value
will be used) or a list (it will be @code{eval}ed and the return value
will be used). The functions and sexps are called/@code{eval}ed in the
message buffer that is being set up. The headers of the current article
-are available through the @code{message-reply-headers} variable.
+are available through the @code{message-reply-headers} variable, which
+is a vector of the following headers: number subject from date id
+references chars lines xref extra.
+
+@vindex message-reply-headers
If you wish to check whether the message you are about to compose is
meant to be a news article or a mail message, you can check the values
(organization "People's Front Against MWM"))
("^rec.humor"
(signature my-funny-signature-randomizer))
- ((equal (system-name) "gnarly")
+ ((equal (system-name) "gnarly") ;; A form
(signature my-quote-randomizer))
- ((message-news-p)
+ (message-news-p ;; A function symbol
(signature my-news-signature))
- (header "to" "larsi.*org"
- (Organization "Somewhere, Inc."))
- ((posting-from-work-p)
+ (window-system ;; A value symbol
+ ("X-Window-System" (format "%s" window-system)))
+ ;; If I'm replying to Larsi, set the Organization header.
+ ((header "to" "larsi.*org")
+ (Organization "Somewhere, Inc."))
+ ((posting-from-work-p) ;; A user defined function
(signature-file "~/.work-signature")
(address "user@@bar.foo")
(body "You are fired.\n\nSincerely, your boss.")
@cindex using smime
Gnus can digitally sign and encrypt your messages, using vanilla PGP
-format or PGP/MIME or S/MIME. For decoding such messages, see the
-@code{mm-verify-option} and @code{mm-decrypt-option} options
+format or @sc{pgp/mime} or @sc{s/mime}. For decoding such messages,
+see the @code{mm-verify-option} and @code{mm-decrypt-option} options
(@pxref{Security}).
For PGP, Gnus supports two external libraries, @sc{gpg.el} and
-@sc{Mailcrypt}, you need to install at least one of them. The S/MIME
-support in Gnus requires the external program OpenSSL.
+@sc{Mailcrypt}, you need to install at least one of them. The
+@sc{s/mime} support in Gnus requires the external program OpenSSL.
-Instructing MML to perform security operations on a MIME part is done
-using the @code{C-c C-m s} key map for signing and the @code{C-c C-m
-c} key map for encryption, as follows.
+Instructing MML to perform security operations on a @sc{mime} part is
+done using the @kbd{C-c C-m s} key map for signing and the @kbd{C-c
+C-m c} key map for encryption, as follows.
@table @kbd
@kindex C-c C-m s s
@findex mml-secure-sign-smime
-Digitally sign current MIME part using S/MIME.
+Digitally sign current @sc{mime} part using @sc{s/mime}.
@item C-c C-m s o
@kindex C-c C-m s o
@findex mml-secure-sign-pgp
-Digitally sign current MIME part using PGP.
+Digitally sign current @sc{mime} part using PGP.
@item C-c C-m s p
@kindex C-c C-m s p
@findex mml-secure-sign-pgp
-Digitally sign current MIME part using PGP/MIME.
+Digitally sign current @sc{mime} part using @sc{pgp/mime}.
@item C-c C-m c s
@kindex C-c C-m c s
@findex mml-secure-encrypt-smime
-Digitally encrypt current MIME part using S/MIME.
+Digitally encrypt current @sc{mime} part using @sc{s/mime}.
@item C-c C-m c o
@kindex C-c C-m c o
@findex mml-secure-encrypt-pgp
-Digitally encrypt current MIME part using PGP.
+Digitally encrypt current @sc{mime} part using PGP.
@item C-c C-m c p
@kindex C-c C-m c p
@findex mml-secure-encrypt-pgpmime
-Digitally encrypt current MIME part using PGP/MIME.
+Digitally encrypt current @sc{mime} part using @sc{pgp/mime}.
@end table
sometimes peek in your mailbox with a @sc{imap} client and mark some
articles as read (or; SEEN) you might want to set this to @samp{nil}.
Then all articles in the mailbox is fetched, no matter what. For a
-complete list of predicates, see RFC 2060 §6.4.4.
+complete list of predicates, see RFC 2060 section 6.4.4.
@item :fetchflag
How to flag fetched articles on the server, the default @samp{\Deleted}
will mark them as deleted, an alternative would be @samp{\Seen} which
would simply mark them as read. These are the two most likely choices,
-but more flags are defined in RFC 2060 §2.3.2.
+but more flags are defined in RFC 2060 section 2.3.2.
@item :dontexpunge
If non-nil, don't remove all articles marked as deleted in the mailbox
@end lisp
@item webmail
-Get mail from a webmail server, such as www.hotmail.com,
-webmail.netscape.com, www.netaddress.com, www.my-deja.com.
+Get mail from a webmail server, such as @uref{www.hotmail.com},
+@uref{webmail.netscape.com}, @uref{www.netaddress.com},
+@uref{www.my-deja.com}.
-NOTE: Now mail.yahoo.com provides POP3 service, so @sc{pop} mail source
+NOTE: Now @uref{mail.yahoo.com} provides POP3 service, so @sc{pop} mail source
is suggested.
NOTE: Webmail largely depends cookies. A "one-line-cookie" patch is
file is first copied to your home directory. What happens after that
depends on what format you want to store your mail in.
-There are five different mail back ends in the standard Gnus, and more
+There are six different mail back ends in the standard Gnus, and more
back ends are available separately. The mail back end most people use
-(because it is the fastest and most flexible) is @code{nnml}
-(@pxref{Mail Spool}).
+(because it is possibly the fastest) is @code{nnml} (@pxref{Mail
+Spool}). You might notice that only five back ends are listed below;
+@code{nnmaildir}'s documentation has not yet been completely
+incorporated into this manual. Until it is, you can find it at
+@uref{http://multivac.cwru.edu./nnmaildir/}.
@menu
* Unix Mail Box:: Using the (quite) standard Un*x mbox.
to restore the group (after restoring the backup into the nnml
directory).
+If for some reason you believe your @file{.marks} files are screwed
+up, you can just delete them all. Gnus will then correctly regenerate
+them next time it starts.
+
Virtual server settings:
@table @code
@item nnml-marks-file-name
@vindex nnml-marks-file-name
-The name of the @sc{marks} files. The default is @file{.marks}.
+The name of the @dfn{marks} files. The default is @file{.marks}.
+
+@item nnml-use-compressed-files
+@vindex nnml-use-compressed-files
+If non-@code{nil}, @code{nnml} will allow using compressed message
+files.
@end table
only a moderate amount of mail, @code{nnfolder} is probably the most
friendly mail back end all over.
+@item nnmaildir
+
+@code{nnmaildir} is largely similar to @code{nnml}, with some notable
+differences. Each message is stored in a separate file, but the
+filename is unrelated to the article number in Gnus. @code{nnmaildir}
+also stores the equivalent of @code{nnml}'s overview files in one file
+per article, so it uses about twice as many inodes as @code{nnml}. (Use
+@code{df -i} to see how plentiful your inode supply is.) If this slows
+you down or takes up very much space, consider switching to ReiserFS
+(@uref{http://www.namesys.com/}) or another non-block-structured
+filesystem.
+
+Since maildirs don't require locking for delivery, the maildirs you use
+as groups can also be the maildirs your mail is directly delivered to.
+This means you can skip Gnus's mail splitting if your mail is already
+organized into different mailboxes during delivery. A @code{directory}
+entry in @code{mail-sources} would have a similar effect, but would
+require one set of mailboxes for spooling deliveries (in mbox format,
+thus damaging message bodies), and another set to be used as groups (in
+whatever format you like). A maildir has a built-in spool, in the
+@code{new/} subdirectory. Beware that currently, mail moved from
+@code{new/} to @code{cur/} instead of via mail splitting will undergo
+treatment such as duplicate checking.
+
+An article will not necessarily keep the same number across Gnus
+sessions; articles are renumbered starting from 1 for each Gnus session
+(more precisely, each time you open the @code{nnmaildir} server). This
+way, you don't get gaps in your article number ranges, and when entering
+large groups, Gnus is likely to give a more accurate article count. The
+price is that @code{nnmaildir} doesn't work with the cache or agent.
+This will probably be changed in the future.
+
+@code{nnmaildir} stores article marks for a given group in the
+corresponding maildir, in a way designed so that it's easy to manipulate
+them from outside Gnus. You can tar up a maildir, unpack it somewhere
+else, and still have your marks. @code{nnml} also stores marks, but
+it's not as easy to work with them from outside Gnus as with
+@code{nnmaildir}.
+
+For configuring expiry and other things, @code{nnmaildir} uses group
+parameters slightly different from those of other mail backends.
+
+@code{nnmaildir} uses a significant amount of memory to speed things up.
+(It keeps in memory some of the things that @code{nnml} stores in files
+and that @code{nnmh} repeatedly parses out of message files.) If this
+is a problem for you, you can set the @code{nov-cache-size} group
+parameter to somthing small (0 would probably not work, but 1 probably
+would) to make it use less memory.
+
+Startup and shutdown are likely to be slower with @code{nnmaildir} than
+with other backends. Everything in between is likely to be faster,
+depending in part on your filesystem.
+
+@code{nnmaildir} does not use @code{nnoo}, so you cannot use @code{nnoo}
+to write an @code{nnmaildir}-derived backend.
+
@end table
restoring a group while preserving marks is fairly simple.
(Preserving the group level and group parameters as well still
-requires ritual dancing and sacrifices to the @code{.newsrc.eld} deity
+requires ritual dancing and sacrifices to the @file{.newsrc.eld} deity
though.)
To archive an entire @code{nnml} or @code{nnfolder} server, take a
It is also possible to archive individual @code{nnml} or
@code{nnfolder} groups, while preserving marks. For @code{nnml}, you
copy all files in the group's directory. For @code{nnfolder} you need
-to copy both the base folder file itself (@code{FOO}, say), and the
-marks file (@code{FOO.mrk} in this example). Restoring the group is
+to copy both the base folder file itself (@file{FOO}, say), and the
+marks file (@file{FOO.mrk} in this example). Restoring the group is
done with @kbd{G m} from the Group buffer. The last step makes Gnus
notice the new directory.
@vindex nnimap-stream
The type of stream used to connect to your server. By default, nnimap
will detect and automatically use all of the below, with the exception
-of SSL/TLS. (IMAP over SSL/TLS is being replaced by STARTTLS, which
+of SSL/TLS. (@sc{imap} over SSL/TLS is being replaced by STARTTLS, which
can be automatically detected, but it's not widely deployed yet.)
Example server specification:
1.5.x and 1.6.x) you need to frob @code{imap-process-connection-type}
to make @code{imap.el} use a pty instead of a pipe when communicating
with @samp{imtest}. You will then suffer from a line length
-restrictions on IMAP commands, which might make Gnus seem to hang
+restrictions on @sc{imap} commands, which might make Gnus seem to hang
indefinitely if you have many articles in a mailbox. The variable
@code{imap-kerberos4-program} contain parameters to pass to the imtest
program.
@item nnimap-importantize-dormant
@vindex nnimap-importantize-dormant
-If non-nil, marks dormant articles as ticked (as well), for other IMAP
-clients. Within Gnus, dormant articles will naturally still (only) be
-marked as ticked. This is to make dormant articles stand out, just
-like ticked articles, in other IMAP clients. (In other words, Gnus has
-two ``Tick'' marks and IMAP has only one.)
+If non-nil, marks dormant articles as ticked (as well), for other
+@sc{imap} clients. Within Gnus, dormant articles will naturally still
+(only) be marked as ticked. This is to make dormant articles stand
+out, just like ticked articles, in other @sc{imap} clients. (In other
+words, Gnus has two ``Tick'' marks and @sc{imap} has only one.)
Probably the only reason for frobing this would be if you're trying
enable per-user persistant dormant flags, using something like:
@cindex Expunging
@vindex nnimap-expunge-search-string
-This variable contain the IMAP search command sent to server when
+This variable contain the @sc{imap} search command sent to server when
searching for articles eligible for expiring. The default is
@code{"UID %s NOT SINCE %s"}, where the first @code{%s} is replaced by
UID set and the second @code{%s} is replaced by a date.
Netscape mail boxes.
@item mime-parts
-MIME multipart messages.
+@sc{mime} multipart messages.
@item standard-digest
The standard (RFC 1153) digest format.
+@item mime-digest
+A @sc{mime} digest of messages.
+
+@item lanl-gov-announce
+Announcement messages from LANL Gov Announce.
+
+@item rfc822-forward
+A message forwarded according to RFC822.
+
+@item outlook
+The Outlook mail box.
+
+@item oe-dbx
+The Outlook Express dbx mail box.
+
+@item exim-bounce
+A bounce message from the Exim MTA.
+
+@item forward
+A message forwarded according to informal rules.
+
+@item rfc934
+An RFC934-forwarded message.
+
+@item mailman
+A mailman digest.
+
+@item clari-briefs
+A digest of Clarinet brief news items.
+
@item slack-digest
Non-standard digest format---matches most things, but does it badly.
+
+@item mail-in-mail
+The last resort.
@end table
You can also use the special ``file type'' @code{guess}, which means
This should be one of @code{mbox}, @code{babyl}, @code{digest},
@code{news}, @code{rnews}, @code{mmdf}, @code{forward}, @code{rfc934},
@code{rfc822-forward}, @code{mime-parts}, @code{standard-digest},
-@code{slack-digest}, @code{clari-briefs}, @code{nsmail},
-@code{outlook}, @code{oe-dbx}, and @code{mailman} or @code{guess}.
+@code{slack-digest}, @code{clari-briefs}, @code{nsmail}, @code{outlook},
+@code{oe-dbx}, @code{mailman}, and @code{mail-in-mail} or @code{guess}.
@item nndoc-post-type
@vindex nndoc-post-type
All marks in the virtual group will stick to the articles in the
component groups. So if you tick an article in a virtual group, the
-article will also be ticked in the component group from whence it came.
-(And vice versa---marks from the component groups will also be shown in
-the virtual group.)
+article will also be ticked in the component group from whence it
+came. (And vice versa---marks from the component groups will also be
+shown in the virtual group.). To create an empty virtual group, run
+@kbd{G V} (@code{gnus-group-make-empty-virtual}) in the group buffer
+and edit the method regexp with @kbd{M-e}
+(@code{gnus-group-edit-group-method})
Here's an example @code{nnvirtual} method that collects all Andrea Dworkin
newsgroups into one, big, happy newsgroup:
here.
@item
-Then, put the following magical incantation at the end of your
-@file{.gnus.el} file:
+Then, put the following magical incantation in your @file{.gnus.el}
+file:
@lisp
-(gnus-agentize)
+(setq gnus-agent t)
@end lisp
@end itemize
or you could append your predicate to the predefined
@code{gnus-category-predicate-alist} in your @file{~/.gnus.el} or
-wherever. (Note: this would have to be at a point *after*
-@code{gnus-agent} has been loaded via @code{(gnus-agentize)})
+wherever.
@lisp
+(require 'gnus-agent)
(setq gnus-category-predicate-alist
(append gnus-category-predicate-alist
'((old . my-article-old-p))))
* Server Agent Commands::
@end menu
-You can run a complete batch fetch from the command line with the
+You can run a complete batch command from the command line with the
following incantation:
-@cindex gnus-agent-batch-fetch
+@cindex gnus-agent-batch
@example
-$ emacs -batch -l ~/.gnus.el -f gnus-agent-batch-fetch
+$ emacs -batch -l ~/.gnus.el -f gnus-agent-batch
@end example
method---it must always match all groups.
@vindex gnus-agent-expire-all
-if @code{gnus-agent-expire-all} is non-@code{nil}, this command will
+If @code{gnus-agent-expire-all} is non-@code{nil}, this command will
expire all articles---unread, read, ticked and dormant. If @code{nil}
(which is the default), only read articles are eligible for expiry, and
unread, ticked and dormant articles will be kept indefinitely.
+@findex gnus-agent-regenerate
+If you find that some articles eligible for expiry are never expired,
+perhaps some Gnus Agent files are corrupted. There's a special
+@code{gnus-agent-regenerate} command to fix possible problems.
@node Agent and IMAP
@subsection Agent and IMAP
@vindex gnus-agent-fetched-hook
Hook run when after finishing fetching articles.
+@item gnus-agent-cache
+@vindex gnus-agent-cache
+Variable to control whether use the locally stored @sc{nov} and articles when
+plugged.
+
+@item gnus-agent-go-online
+@vindex gnus-agent-go-online
+If @code{gnus-agent-go-online} is @code{nil}, the Agent will never
+automatically switch offline servers into online status. If it is
+@code{ask}, the default, the Agent will ask if you wish to switch
+offline servers into online status when you re-connect. If it has any
+other value, all offline servers will be automatically switched into
+online status.
+
@end table
(setq gnus-secondary-select-methods '((nnml "")))
;;; Make Gnus into an offline newsreader.
-(gnus-agentize)
+;;; (gnus-agentize) ; The obsolete setting.
+(setq gnus-agent t)
@end lisp
That should be it, basically. Put that in your @file{~/.gnus.el} file,
may ask:
@table @dfn
-@item If I read an article while plugged, do they get entered into the
-Agent?
+@item If I read an article while plugged, do they get entered into the Agent?
-@strong{No.}
+@strong{No}.
-@item If I read an article while plugged, and the article already exists
-in the Agent, will it get downloaded once more?
+@item If I read an article while plugged, and the article already exists in the Agent, will it get downloaded once more?
-@strong{Yes.}
+@strong{No}, unless @code{gnus-agent-cache} is `nil'.
@end table
In short, when Gnus is unplugged, it only looks into the locally stored
-articles; when it's plugged, it only talks to your ISP.
+articles; when it's plugged, it only talks to your ISP and also uses the
+locally stored articles.
@node Scoring
@item i
Score on the @code{Message-ID} header.
+@item e
+Score on an "extra" header, that is, one of those in gnus-extra-headers,
+if your @sc{nntp} server tracks additional header data in overviews.
+
@item f
Score on followups---this matches the author name, and adds scores to
the followups to this author. (Using this key leads to the creation of
@end table
@item
-The fourth and final key says whether this is a temporary (i.e., expiring)
-score entry, or a permanent (i.e., non-expiring) score entry, or whether
-it is to be done immediately, without adding to the score file.
+The fourth and usually final key says whether this is a temporary (i.e.,
+expiring) score entry, or a permanent (i.e., non-expiring) score entry,
+or whether it is to be done immediately, without adding to the score
+file.
@table @kbd
@item t
Immediately scoring.
@end table
+@item
+If you are scoring on `e' (extra) headers, you will then be prompted for
+the header name on which you wish to score. This must be a header named
+in gnus-extra-headers, and @samp{TAB} completion is available.
+
@end enumerate
So, let's say you want to increase the score on the current author with
@code{string}, @code{exact}, and @code{word} types, which you can use
instead, if you feel like.
+@item Extra
+Just as for the standard string overview headers, if you are using
+gnus-extra-headers, you can score on these headers' values. In this
+case, there is a 5th element in the score entry, being the name of the
+header to be scored. The following entry is useful in your
+@file{all.SCORE} file in case of spam attacks from a single origin host,
+if your @sc{nntp} server tracks NNTP-Posting-Host in overviews:
+
+@lisp
+("111.222.333.444" -1000 nil s "NNTP-Posting-Host")
+@end lisp
+
@item Lines, Chars
These two headers use different match types: @code{<}, @code{>},
@code{=}, @code{>=} and @code{<=}.
@item MIME - RFC 2045-2049 etc
@cindex MIME
-All the various MIME RFCs are supported.
+All the various @sc{mime} RFCs are supported.
-@item Disposition Notifications - RFC 2289
+@item Disposition Notifications - RFC 2298
Message Mode is able to request notifications from the receiver.
@item PGP - RFC 1991 and RFC 2440
@cindex RFC 2440
RFC 1991 is the original PGP message specification, published as a
Information RFC. RFC 2440 was the follow-up, now called Open PGP, and
-put on the Standards Track. Both document a non-MIME aware PGP
+put on the Standards Track. Both document a non-@sc{mime} aware PGP
format. Gnus supports both encoding (signing and encryption) and
decoding (verification and decryption).
@item PGP/MIME - RFC 2015/3156
RFC 2015 (superceded by 3156 which references RFC 2440 instead of RFC
-1991) describes the MIME-wrapping around the RF 1991/2440 format.
+1991) describes the @sc{mime}-wrapping around the RF 1991/2440 format.
Gnus supports both encoding and decoding.
@item S/MIME - RFC 2633
-RFC 2633 describes the S/MIME format.
+RFC 2633 describes the @sc{s/mime} format.
@item IMAP - RFC 1730/2060, RFC 2195, RFC 2086, RFC 2359, RFC 2595, RFC 1731
-RFC 1730 is IMAP version 4, updated somewhat by RFC 2060 (IMAP 4
-revision 1). RFC 2195 describes CRAM-MD5 authentication for IMAP. RFC
-2086 describes access control lists (ACLs) for IMAP. RFC 2359
-describes a IMAP protocol enhancement. RFC 2595 describes the proper
-TLS integration (STARTTLS) with IMAP. RFC 1731 describes the
-GSSAPI/Kerberos4 mechanisms for IMAP.
+RFC 1730 is @sc{imap} version 4, updated somewhat by RFC 2060 (@sc{imap} 4
+revision 1). RFC 2195 describes CRAM-MD5 authentication for @sc{imap}. RFC
+2086 describes access control lists (ACLs) for @sc{imap}. RFC 2359
+describes a @sc{imap} protocol enhancement. RFC 2595 describes the proper
+TLS integration (STARTTLS) with @sc{imap}. RFC 1731 describes the
+GSSAPI/Kerberos4 mechanisms for @sc{imap}.
@end table
Getting Mail -> Mail Sources
@item
-Gnus is now a MIME-capable reader. This affects many parts of
+Gnus is now a @sc{mime}-capable reader. This affects many parts of
Gnus, and adds a slew of new commands. See the manual for details.
@item
@item
The user can now decide which extra headers should be included in
-summary buffers and NOV files.
+summary buffers and @sc{nov} files.
@item
@code{gnus-article-display-hook} has been removed. Instead, a number
again, to keep up with ever-changing layouts.
@item
-Gnus can now read IMAP mail via @code{nnimap}.
+Gnus can now read @sc{imap} mail via @code{nnimap}.
@end itemize
If this is non-@code{nil}, all threads in the summary buffer will be
hidden initially.
-This can also be a predicate specifier (@pxref{Predicate Specifiers}).
-Avaliable predicates are @code{gnus-article-unread-p} and
-@code{gnus-article-unseen-p}).
-
-Here's an example:
-
-@lisp
-(setq gnus-thread-hide-subtree
- '(or gnus-article-unread-p
- gnus-article-unseen-p))
-@end lisp
-
-(It's a pretty nonsensical example, since all unseen articles are also
-unread, but you get my drift.)
-
@item gnus-updated-mode-lines
If this is @code{nil}, Gnus will not put information in the buffer mode
sequences (lists) of article numbers, and most back ends do not support
retrieval of @code{Message-ID}s. But they should try for both.
-The result data should either be HEADs or NOV lines, and the result
+The result data should either be HEADs or @sc{nov} lines, and the result
value should either be @code{headers} or @code{nov} to reflect this.
This might later be expanded to @code{various}, which will be a mixture
-of HEADs and NOV lines, but this is currently not supported by Gnus.
+of HEADs and @sc{nov} lines, but this is currently not supported by Gnus.
If @var{fetch-old} is non-@code{nil} it says to try fetching "extra
headers", in some meaning of the word. This is generally done by
considering the highest and lowest article numbers, but some articles
may have been canceled. Gnus just discards the total-number, so
whether one should take the bother to generate it properly (if that is a
-problem) is left as an exercise to the reader.
+problem) is left as an exercise to the reader. If the group contains no
+articles, the lowest article number should be reported as 1 and the
+highest as 0.
@example
group-status = [ error / info ] eol
@end example
On each line we have a group name, then the highest article number in
-that group, the lowest article number, and finally a flag.
+that group, the lowest article number, and finally a flag. If the group
+contains no articles, the lowest article number should be reported as 1
+and the highest as 0.
@example
active-file = *active-line