@synindex fn cp
@synindex vr cp
@synindex pg cp
-@c @direntry
-@c * Gnus: (gnus). The newsreader Gnus.
-@c @end direntry
+@dircategory Editors
+@direntry
+* Gnus: (gnus). The newsreader Gnus.
+@end direntry
@iftex
@finalout
@end iftex
\thispagestyle{empty}
-Copyright \copyright{} 1995,96,97,98,99 Free Software Foundation, Inc.
+Copyright \copyright{} 1995,96,97,98,99,2000 Free Software Foundation, Inc.
-Permission is granted to make and distribute verbatim copies of
-this manual provided the copyright notice and this permission notice
-are preserved on all copies.
-Permission is granted to copy and distribute modified versions of this
-manual under the conditions for verbatim copying, provided that the
-entire resulting derived work is distributed under the terms of a
-permission notice identical to this one.
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.1 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, with the Front-Cover texts being ``A GNU
+Manual'', and with the Back-Cover Texts as in (a) below. A copy of the
+license is included in the section entitled ``GNU Free Documentation
+License'' in the Emacs manual.
-Permission is granted to copy and distribute translations of this manual
-into another language, under the above conditions for modified versions.
+(a) The FSF's Back-Cover Text is: ``You have freedom to copy and modify
+this GNU Manual, like GNU software. Copies published by the Free
+Software Foundation raise funds for GNU development.''
+This document is part of a collection distributed under the GNU Free
+Documentation License. If you want to distribute this document
+separately from the collection, you can do so by adding a copy of the
+license to the document, as described in section 6 of the license.
\newpage
\end{titlepage}
@end iflatex
@end iftex
-@ifinfo
+@ifnottex
This file documents Gnus, the GNU Emacs newsreader.
-Copyright (C) 1995,96,97,98,99 Free Software Foundation, Inc.
-
-Permission is granted to make and distribute verbatim copies of
-this manual provided the copyright notice and this permission notice
-are preserved on all copies.
+Copyright (C) 1995,96,97,98,99,2000 Free Software Foundation, Inc.
-@ignore
-Permission is granted to process this file through Tex and print the
-results, provided the printed document carries copying permission
-notice identical to this one except for the removal of this paragraph
-(this paragraph not being relevant to the printed manual).
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.1 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being none, with the Front-Cover texts being ``A GNU
+Manual'', and with the Back-Cover Texts as in (a) below. A copy of the
+license is included in the section entitled ``GNU Free Documentation
+License'' in the Emacs manual.
-@end ignore
-Permission is granted to copy and distribute modified versions of this
-manual under the conditions for verbatim copying, provided also that the
-entire resulting derived work is distributed under the terms of a
-permission notice identical to this one.
+(a) The FSF's Back-Cover Text is: ``You have freedom to copy and modify
+this GNU Manual, like GNU software. Copies published by the Free
+Software Foundation raise funds for GNU development.''
-Permission is granted to copy and distribute translations of this manual
-into another language, under the above conditions for modified versions.
-@end ifinfo
+This document is part of a collection distributed under the GNU Free
+Documentation License. If you want to distribute this document
+separately from the collection, you can do so by adding a copy of the
+license to the document, as described in section 6 of the license.
+@end ifnottex
@tex
@page
@vskip 0pt plus 1filll
-Copyright @copyright{} 1995,96,97,98,99 Free Software Foundation, Inc.
+Copyright @copyright{} 1995,96,97,98,99,2000 Free Software Foundation, Inc.
-Permission is granted to make and distribute verbatim copies of
-this manual provided the copyright notice and this permission notice
-are preserved on all copies.
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.1 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, with the Front-Cover texts being ``A GNU
+Manual'', and with the Back-Cover Texts as in (a) below. A copy of the
+license is included in the section entitled ``GNU Free Documentation
+License'' in the Emacs manual.
-Permission is granted to copy and distribute modified versions of this
-manual under the conditions for verbatim copying, provided that the
-entire resulting derived work is distributed under the terms of a
-permission notice identical to this one.
+(a) The FSF's Back-Cover Text is: ``You have freedom to copy and modify
+this GNU Manual, like GNU software. Copies published by the Free
+Software Foundation raise funds for GNU development.''
-Permission is granted to copy and distribute translations of this manual
-into another language, under the above conditions for modified versions.
+This document is part of a collection distributed under the GNU Free
+Documentation License. If you want to distribute this document
+separately from the collection, you can do so by adding a copy of the
+license to the document, as described in section 6 of the license.
@end titlepage
@page
Reply, Followup and Post
-* Summary Mail Commands:: Sending mail.
-* Summary Post Commands:: Sending news.
-* Summary Message Commands:: Other Message-related commands.
-* Canceling and Superseding:: ``Whoops, I shouldn't have called him that.''
+* Summary Mail Commands:: Sending mail.
+* Summary Post Commands:: Sending news.
+* Summary Message Commands:: Other Message-related commands.
+* Canceling and Superseding:: ``Whoops, I shouldn't have called him that.''
Marking Articles
-* Unread Articles:: Marks for unread articles.
-* Read Articles:: Marks for read articles.
-* Other Marks:: Marks that do not affect readedness.
-
-Marking Articles
-
-* Setting Marks:: How to set and remove marks.
-* Generic Marking Commands:: How to customize the marking.
-* Setting Process Marks:: How to mark articles for later processing.
+* Unread Articles:: Marks for unread articles.
+* Read Articles:: Marks for read articles.
+* Other Marks:: Marks that do not affect readedness.
+* Setting Marks:: How to set and remove marks.
+* Generic Marking Commands:: How to customize the marking.
+* Setting Process Marks:: How to mark articles for later processing.
Threading
-* Customizing Threading:: Variables you can change to affect the threading.
-* Thread Commands:: Thread based commands in the summary buffer.
+* Customizing Threading:: Variables you can change to affect the threading.
+* Thread Commands:: Thread based commands in the summary buffer.
Customizing Threading
* Agent Categories:: How to tell the Gnus Agent what to download.
* Agent Commands:: New commands for all the buffers.
* Agent Expiry:: How to make old articles go away.
+* Agent and IMAP:: How to use the Agent with IMAP.
* Outgoing Messages:: What happens when you post/mail something?
* Agent Variables:: Customizing is fun.
* Example Setup:: An example @file{.gnus.el} file for offline people.
@item to-list
@cindex to-list
-Address used when doing a @kbd{a} in that group.
+Address used when doing @kbd{a} in that group.
@example
(to-list . "some@@where.com")
(@code{gnus-topic-copy-group}). This command uses the process/prefix
convention (@pxref{Process/Prefix}).
+@item T h
+@kindex T h (Topic)
+@findex gnus-topic-hide-topic
+Hide the current topic (@code{gnus-topic-hide-topic}). If given
+a prefix, hide the topic permanently.
+
+@item T s
+@kindex T s (Topic)
+@findex gnus-topic-show-topic
+Show the current topic (@code{gnus-topic-show-topic}). If given
+a prefix, show the topic permanently.
+
@item T D
@kindex T D (Topic)
@findex gnus-topic-remove-group
@kindex W W l (Summary)
@findex gnus-article-hide-list-identifiers
@vindex gnus-list-identifiers
-Strip list identifiers specified in @code{gnus-list-identifiers}.
-These are strings some mailing list servers add to the beginning of
-all @code{Subject} headers---for example, @samp{[zebra 4711]}. Any
-leading @samp{Re: } is skipped before stripping.
+Strip list identifiers specified in @code{gnus-list-identifiers}. These
+are strings some mailing list servers add to the beginning of all
+@code{Subject} headers---for example, @samp{[zebra 4711]}. Any leading
+@samp{Re: } is skipped before stripping. @code{gnus-list-identifiers}
+may not contain @code{\\(..\\)}.
@table @code
group you want banners stripped from. The parameter either be a string,
which will be interpreted as a regular expression matching text to be
removed, or the symbol @code{signature}, meaning that the (last)
-signature should be removed.
+signature should be removed, or other symbol, meaning that the
+corresponding regular expression in @code{gnus-article-banner-alist} is
+used.
@item W W c
@kindex W W c (Summary)
@node MIME Commands
@section @sc{mime} Commands
@cindex MIME decoding
+@cindex attachments
+@cindex viewing attachments
The following commands all understand the numerical prefix. For
instance, @kbd{3 b} means ``view the third @sc{mime} part''.
@findex gnus-mime-inline-part
@item i (Article)
-Insert the raw contents of the @sc{mime} object into the buffer
-(@code{gnus-mime-inline-part}).
+Insert the contents of the @sc{mime} object into the buffer
+(@code{gnus-mime-inline-part}) as text/plain. If given a prefix, insert
+the raw contens without decoding. If given a numerical prefix, you can
+do semi-manual charset stuff (see
+@code{gnus-summary-show-article-charset-alist} in @pxref{Paging the
+Article}).
+
+@findex gnus-mime-action-on-part
+@item . (Article)
+Interactively run an action on the @sc{mime} object
+(@code{gnus-mime-action-on-part}).
@end table
(signature my-quote-randomizer))
((message-news-p)
(signature my-news-signature))
- (header "From.*To" "larsi.*org"
+ (header "From\\|To" "larsi.*org"
(Organization "Somewhere, Inc."))
((posting-from-work-p)
(signature-file "~/.work-signature")
# flu@@iki.fi
MOVEMAIL=/usr/lib/emacs/20.3/i386-redhat-linux/movemail
-TMP=~/Mail/tmp
+TMP=$HOME/Mail/tmp
rm -f $TMP; $MOVEMAIL $MAIL $TMP >/dev/null && cat $TMP
@end example
complete list of predicates, see RFC 2060 §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
+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.
@end table
@end table
+@subsubheading Function Interface
+
+Some of the above keywords specify a Lisp function to be executed.
+For each keyword @code{:foo}, the Lisp variable @code{foo} is bound to
+the value of the keyword while the function is executing. For example,
+consider the following mail-source setting:
+
+@lisp
+(setq mail-sources '((pop :user "jrl"
+ :server "pophost" :function fetchfunc)))
+@end lisp
+
+While the function @code{fetchfunc} is executing, the symbol @code{user}
+is bound to @code{"jrl"}, and the symbol @code{server} is bound to
+@code{"pophost"}. The symbols @code{port}, @code{password},
+@code{program}, @code{prescript}, @code{postscript}, @code{function},
+and @code{authentication} are also bound (to their default values).
+
+See above for a list of keywords for each type of mail source.
+
+
@node Mail Source Customization
@subsubsection Mail Source Customization
where the incoming files will be stored if the previous variable is
@code{nil}.
+@item mail-source-incoming-file-prefix
+@vindex mail-source-incoming-file-prefix
+Prefix for file name for storing incoming mail. The default is
+@file{Incoming}, in which case files will end up with names like
+@file{Incoming30630D_} or @file{Incoming298602ZD}. This is really only
+relevant if @code{mail-source-delete-incoming} is @code{nil}.
+
@item mail-source-default-file-modes
@vindex mail-source-default-file-modes
All new mail files will get this file mode. The default is 384.
be called as a function with @var{args} given as arguments. The
function should return a @var{split}.
+For instance, the following function could be used to split based on the
+body of the messages:
+
+@lisp
+(defun split-on-body ()
+ (save-excursion
+ (set-buffer " *nnmail incoming*")
+ (goto-char (point-min))
+ (when (re-search-forward "Some.*string" nil t)
+ "string.group")))
+@end lisp
+
@item
@code{(! @var{func} @var{split})}: If the split is a list, and the first
element is @code{!}, then SPLIT will be processed, and FUNC will be
@vindex nnmail-expiry-target
The normal action taken when expiring articles is to delete them.
However, in some circumstances it might make more sense to move them to
-other groups instead of deleting them. The @code{nnmail-expiry-target}
+other groups instead of deleting them. The variable @code{nnmail-expiry-target}
(and the @code{expiry-target} group parameter) controls this. The
+variable supplies a default value for all groups, which can be
+overridden for specific groups by the group parameter.
default value is @code{delete}, but this can also be a string (which
should be the name of the group the message should be moved to), or a
function (which will be called in a buffer narrowed to the message in
question, and with the name of the group being moved from as its
parameter) which should return a target -- either a group name or
-@code{delete}.
+@code{delete}.
+
+Here's an example for specifying a group name:
+@lisp
+(setq nnmail-expiry-target "nnml:expired")
+@end lisp
+
@vindex nnmail-keep-last-article
If @code{nnmail-keep-last-article} is non-@code{nil}, Gnus will never
beginning of all @code{Subject} headers. I'm sure that's nice for
people who use stone age mail readers. This function will remove
strings that match the @code{nnmail-list-identifiers} regexp, which can
-also be a list of regexp.
+also be a list of regexp. @code{nnmail-list-identifiers} may not contain
+@code{\\(..\\)}.
For instance, if you want to remove the @samp{(idm)} and the
@samp{nagnagnag} identifiers:
@vindex nnimap-server-port
Port on server to contact. Defaults to port 143, or 993 for SSL.
+Note that this should be a integer, example server specification:
+
+@lisp
+(nnimap "mail.server.com"
+ (nnimap-server-port 4711))
+@end lisp
+
@item nnimap-list-pattern
@vindex nnimap-list-pattern
String or list of strings of mailboxes to limit available groups to.
Washington server it's a directory that will be concatenated with the
mailbox.
-Example:
+Example server specification:
@lisp
-("INBOX" "Mail/*" "alt.sex.*" ("~friend/Mail/" . "list/*"))
+(nnimap "mail.server.com"
+ (nnimap-list-pattern ("INBOX" "Mail/*" "alt.sex.*"
+ ("~friend/Mail/" . "list/*"))))
@end lisp
@item nnimap-stream
of SSL. (SSL is being replaced by STARTTLS, which can be automatically
detected, but it's not widely deployed yet).
+Example server specification:
+
+@lisp
+(nnimap "mail.server.com"
+ (nnimap-stream ssl))
+@end lisp
+
+Please note that the value of @code{nnimap-stream} is a symbol!
+
@itemize @bullet
@item
@dfn{gssapi:} Connect with GSSAPI (usually kerberos 5). Require the
The authenticator used to connect to the server. By default, nnimap
will use the most secure authenticator your server is capable of.
+Example server specification:
+
+@lisp
+(nnimap "mail.server.com"
+ (nnimap-authenticator anonymous))
+@end lisp
+
+Please note that the value of @code{nnimap-authenticator} is a symbol!
+
@itemize @bullet
@item
@dfn{gssapi:} GSSAPI (usually kerberos 5) authentication. Require
When closing mailboxes, nnimap will ask if you wish to expunge deleted
articles or not.
+@end table
+
@item nnimap-authinfo-file
@vindex nnimap-authinfo-file
is (almost) the same as the @code{ftp} @file{~/.netrc} file. See
`nntp-authinfo-file' for exact syntax.
-@end table
+A file containing credentials used to log in on servers. The format is
+(almost) the same as the @code{ftp} @file{~/.netrc} file. See the
+variable @code{nntp-authinfo-file} for exact syntax; also see
+@xref{NNTP}.
@end table
disabled!
@lisp
-(setq nnimap-split-inbox '("INBOX" ("~/friend/Mail" . "lists/*") "lists.imap"))
+(setq nnimap-split-inbox
+ '("INBOX" ("~/friend/Mail" . "lists/*") "lists.imap"))
@end lisp
No nnmail equivalent.
@lisp
(setq nnimap-split-rule
- '(("INBOX.nnimap" "^Sender: owner-nnimap@@vic20.globalcom.se")
- ("INBOX.junk" "^Subject:.*MAKE MONEY")
- ("INBOX.private" "")))
+ '(("INBOX.nnimap" "^Sender: owner-nnimap@@vic20.globalcom.se")
+ ("INBOX.junk" "^Subject:.*MAKE MONEY")
+ ("INBOX.private" "")))
@end lisp
This will put all articles from the nnimap mailing list into mailbox
* Agent Categories:: How to tell the Gnus Agent what to download.
* Agent Commands:: New commands for all the buffers.
* Agent Expiry:: How to make old articles go away.
+* Agent and IMAP:: How to use the Agent with IMAP.
* Outgoing Messages:: What happens when you post/mail something?
* Agent Variables:: Customizing is fun.
* Example Setup:: An example @file{.gnus.el} file for offline people.
You then decide to see whether any new news has arrived. You connect
your machine to the net (using PPP or whatever), and then hit @kbd{J j}
to make Gnus become @dfn{plugged} and use @kbd{g} to check for new mail
-as usual.
+as usual. To check for new mail in unplugged mode, see (@pxref{Mail
+Source Specifiers}).
@item
You can then read the new news immediately, or you can download the news
-onto your local machine. If you want to do the latter, you press @kbd{J
+onto your local machine. If you want to do the latter, you press @kbd{g}
+to check if there are any new news and then @kbd{J
s} to fetch all the eligible articles in all the groups. (To let Gnus
know which articles you want to download, @pxref{Agent Categories}.)
(@code{gnus-agent-remove-group}). This command understands the
process/prefix convention (@pxref{Process/Prefix}).
+@item J Y
+@kindex J Y (Agent Group)
+@findex gnus-agent-synchronize-flags
+Synchronize flags changed while unplugged with remote server, if any.
+
+
@end table
unread, ticked and dormant articles will be kept indefinitely.
+@node Agent and IMAP
+@subsection Agent and IMAP
+
+The Agent work with any Gnus backend, including nnimap. However, since
+there are some conceptual differences between NNTP and IMAP, this
+section (should) provide you with some information to make Gnus Agent
+work smoother as a IMAP Disconnected Mode client.
+
+The first thing to keep in mind is that all flags (read, ticked, etc)
+are kept on the IMAP server, rather than in @code{.newsrc} as is the
+case for nntp. Thus Gnus need to remember flag changes when
+disconnected, and synchronize these flags when you plug back in.
+
+Gnus keep track of flag changes when reading nnimap groups under the
+Agent by default. When you plug back in, by default Gnus will check if
+you have any changed any flags and ask if you wish to synchronize theese
+with the server. This behaviour is customizable with
+@code{gnus-agent-synchronize-flags}.
+
+@vindex gnus-agent-synchronize-flags
+If @code{gnus-agent-synchronize-flags} is @code{nil}, the Agent will
+never automatically synchronize flags. If it is @code{ask}, the
+default, the Agent will check if you made any changes and if so ask if
+you wish to synchronize these when you re-connect. If it has any other
+value, all flags will be synchronized automatically.
+
+If you do not wish to automatically synchronize flags when you
+re-connect, this can be done manually with the
+@code{gnus-agent-synchronize-flags} command that is bound to @kbd{J Y}
+in the group buffer by default.
+
+Some things are currently not implemented in the Agent that you'd might
+expect from a disconnected IMAP client, including:
+
+@itemize @bullet
+
+@item
+Copying/moving articles into nnimap groups when unplugged.
+
+@item
+Creating/deleting nnimap groups when unplugged.
+
+@end itemize
+
+Technical note: the synchronization algorithm does not work by "pushing"
+all local flags to the server, but rather incrementally update the
+server view of flags by changing only those flags that were changed by
+the user. Thus, if you set one flag on a article, quit the group and
+re-select the group and remove the flag; the flag will be set and
+removed from the server when you "synchronize". The queued flag
+operations can be found in the per-server @code{flags} file in the Agent
+directory. It's emptied when you synchronize flags.
+
+
@node Outgoing Messages
@subsection Outgoing Messages
@findex gnus-score-find-hierarchical
Apply all score files from all the parent groups. This means that you
can't have score files like @file{all.SCORE}, but you can have
-@file{SCORE}, @file{comp.SCORE} and @file{comp.emacs.SCORE}.
+@file{SCORE}, @file{comp.SCORE} and @file{comp.emacs.SCORE} for each
+server.
@end table
This variable can also be a list of functions. In that case, all these
-functions will be called, and all the returned lists of score files will
-be applied. These functions can also return lists of score alists
-directly. In that case, the functions that return these non-file score
-alists should probably be placed before the ``real'' score file
-functions, to ensure that the last score file returned is the local
-score file. Phu.
+functions will be called with the group name as argument, and all the
+returned lists of score files will be applied. These functions can also
+return lists of score alists directly. In that case, the functions that
+return these non-file score alists should probably be placed before the
+``real'' score file functions, to ensure that the last score file
+returned is the local score file. Phu.
+
+For example, to do hierarchical scoring but use a non-server-specific
+overall score file, you could use the value
+@example
+(list (lambda (group) ("all.SCORE")) 'gnus-score-find-hierarchical)
+@end example
@item gnus-score-expiry-days
@vindex gnus-score-expiry-days
The kill to score conversion package isn't included in Gnus by default.
You can fetch it from
-@file{http://www.stud.ifi.uio.no/~larsi/ding-other/gnus-kill-to-score}.
+@file{http://www.stud.ifi.uio.no/~larsi/ding-various/gnus-kill-to-score.el}.
If your old kill files are very complex---if they contain more
non-@code{gnus-kill} forms than not, you'll have to convert them by
(body "whatever.text")
@end lisp
+@item
+Be able to run `J u' from summary buffers.
+
@item
Solve the halting problem.