\input texinfo @c -*-texinfo-*-
@setfilename gnus
-@settitle Pterodactyl Gnus 0.73 Manual
+@settitle Pterodactyl Gnus 0.77 Manual
@synindex fn cp
@synindex vr cp
@synindex pg cp
\thispagestyle{empty}
-Copyright \copyright{} 1995,96,97,98 Free Software Foundation, Inc.
+Copyright \copyright{} 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
This file documents Gnus, the GNU Emacs newsreader.
-Copyright (C) 1995,96 Free Software Foundation, Inc.
+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
@tex
@titlepage
-@title Pterodactyl Gnus 0.73 Manual
+@title Pterodactyl Gnus 0.77 Manual
@author by Lars Magne Ingebrigtsen
@page
@vskip 0pt plus 1filll
-Copyright @copyright{} 1995,96,97 Free Software Foundation, Inc.
+Copyright @copyright{} 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
spool or your mbox file. All at the same time, if you want to push your
luck.
-This manual corresponds to Pterodactyl Gnus 0.73.
+This manual corresponds to Pterodactyl Gnus 0.77.
@end ifinfo
* Decoding Articles:: Gnus can treat series of (uu)encoded articles.
* Article Treatment:: The article buffer can be mangled at will.
* MIME Commands:: Doing MIMEy things with the articles.
+* Charsets:: Character set issues.
* Article Commands:: Doing various things with the article buffer.
* Summary Sorting:: Sorting the summary buffer in various ways.
* Finding the Parent:: No child support? Get the parent.
Exclude all dormant articles from the limit
(@code{gnus-summary-limit-exclude-dormant}).
+@item / M
+@kindex / M (Summary)
+@findex gnus-summary-limit-exclude-marks
+Exclude all marked articles (@code{gnus-summary-limit-exclude-marks}).
+
@item / T
@kindex / T (Summary)
@findex gnus-summary-limit-include-thread
say something like:
@lisp
(setq gnus-uu-user-view-rules
- (list '(\"\\\\.au$\" \"sox %s -t .aiff > /dev/audio\")))
+ (list '("\\\\.au$" "sox %s -t .aiff > /dev/audio")))
@end lisp
@item gnus-uu-user-view-rules-end
Hide @sc{pem} (privacy enhanced messages) cruft
(@code{gnus-article-hide-pem}).
+@item W W B
+@kindex W W B (Summary)
+@findex gnus-article-strip-banner
+Strip the banner specified by the @code{banner} group parameter
+(@code{gnus-article-strip-banner}). This is mainly used to hide those
+annoying banners and/or signatures that some mailing lists and moderated
+groups adds to all the messages. The way to use this function is to add
+the @code{banner} group parameter (@pxref{Group Parameters}) to the
+group you want banners stripped from. The parameter either be a string,
+which will be interpreted as a regulax expression matching text to be
+removed, or the symbol @code{signature}, meaning that the (last)
+signature should be removed.
+
@item W W c
@kindex W W c (Summary)
@findex gnus-article-hide-citation
You can give the command a numerical prefix to specify the width to use
when filling.
+@item W q
+@kindex W q (Summary)
+@findex gnus-article-fill-long-lines
+Fill long lines (@code{gnus-article-fill-long-lines}).
+
+@item W C
+@kindex W C (Summary)
+@findex gnus-article-capitalize-sentencse
+Capitalize the first word in each sentence
+(@code{gnus-article-capitalize-sentences}).
+
@item W c
@kindex W c (Summary)
@findex gnus-article-remove-cr
@end table
+@node Charsets
+@section Charsets
+@cindex charsets
+
+People use different charsets, and we have @sc{mime} to let us know what
+charsets they use. Or rather, we wish we had. Many people use
+newsreaders and mailers that do not understand or use @sc{mime}, and
+just send out messages without saying what character sets they use. To
+help a bit with this, some local news hierarchies have policies that say
+what character set is the default. For instance, the @samp{fj}
+hierarchy uses @code{iso-2022-jp-2}.
+
+@vindex gnus-group-charset-alist
+This knowledge is encoded in the @code{gnus-group-charset-alist}
+variable, which is an alist of regexps (to match group names) and
+default charsets to be used when reading these groups.
+
+In addition, some people do use soi-disant @sc{mime}-aware agents that
+aren't. These blitely mark messages as being in @code{iso-8859-1} even
+if they really are in @code{koi-8}. To help here, the
+@code{gnus-newsgroup-ignored-charsets} variable can be used. The
+charsets that are listed here will be ignored. The variable can be set
+on a group-by-group basis using the group parameters (@pxref{Group
+Parameters}). The default value is @code{(unknown-8bit)}, which is
+something some agents insist on having in there.
+
+
@node Article Commands
@section Article Commands
than this number.
@item
-A sexp: Do this treatment on all body parts where the sexp evals to a
-non-@code{nil} value.
+A list:
+
+The list is evaluated recursively. The first element of the list is a
+predicate. The following predicates are recognized: @code{or},
+@code{and}, @code{not} and @code{typep}. Here's an example:
+
+@lisp
+(or last
+ (typep "text/x-vcard"))
+@end lisp
@end enumerate
want to, but by default, only @samp{text/plain} parts are given the
treatment. This is controlled by the @code{gnus-article-treat-types}
variable, which is a list of regular expressions that are matched to the
-type of the part.
+type of the part. This variable is ignored if the value of the
+controlling variable is a predicate list, as described above.
The following treatment options are available. The easiest way to
customize this is to examine the @code{gnus-article-treat} customization
@menu
* Getting Started Reading Mail:: A simple cookbook example.
* Splitting Mail:: How to create mail groups.
+* Mail Sources:: How to tell Gnus where to get mail from.
* Mail Backend Variables:: Variables for customizing mail handling.
* Fancy Mail Splitting:: Gnus can do hairy splitting of incoming mail.
-* Mail and Procmail:: Reading mail groups that procmail create.
* Incorporating Old Mail:: What about the old mail you have?
* Expiring Mail:: Getting rid of unwanted mail.
* Washing Mail:: Removing gruft from the mail you get.
month's rent money.
-@node Mail Backend Variables
-@subsection Mail Backend Variables
+@node Mail Sources
+@subsection Mail Sources
+
+Mail can be gotten from many different sources---the mail spool, from a
+POP mail server, or from a procmail directory, for instance.
+
+@menu
+* Mail Source Specifiers:: How to specify what a mail source is.
+* Mail Source Customization:: Some variables that influence things.
+* Fetching Mail:: Using the mail source specifiers.
+@end menu
-These variables are (for the most part) pertinent to all the various
-mail backends.
+
+@node Mail Source Specifiers
+@subsubsection Mail Source Specifiers
+@cindex POP
+@cindex mail server
+@cindex procmail
+@cindex mail spool
+@cindex mail source
+
+You tell Gnus how to fetch mail by creating a @dfn{mail source
+specifier}.
+
+Here's an example:
+
+@lisp
+(pop :server "pop3.mailserver.com" :user "myname")
+@end lisp
+
+As can be observed, a mail source specifier is a list where the first
+element is a @dfn{mail source type}, followed by an arbitrary number of
+@dfn{keywords}. Keywords that are not explicitly specified are given
+default values.
+
+The following mail source types are available:
@table @code
-@vindex nnmail-read-incoming-hook
-@item nnmail-read-incoming-hook
-The mail backends all call this hook after reading new mail. You can
-use this hook to notify any mail watch programs, if you want to.
+@item file
+Get mail from a single file; typically from the mail spool.
+
+Keywords:
+
+@table @code
+@item :path
+The path of the file. Defaults to the value of the @code{MAIL}
+environment variable or @file{/usr/mail/spool/user-name}.
+@end table
+
+An example file mail source:
+
+@lisp
+(file :path "/usr/spool/mail/user-name")
+@end lisp
+
+Or using the default path:
+
+@lisp
+(file)
+@end lisp
+
+@item directory
+Get mail from several files in a directory. This is typically used when
+you have procmail split the incoming mail into several files.
+
+Keywords:
+
+@table @code
+@item :path
+The path of the directory where the files are. There is no default
+value.
+
+@item :suffix
+Only files ending with this suffix are used. The default is
+@samp{.spool}.
+
+@item :predicate
+Only files that have this predicate return non-@code{nil} are returned.
+The default is @code{identity}. This is used as an additional
+filter---only files that have the right suffix @emph{and} satisfy this
+predicate are considered.
+
+@end table
+
+An example directory mail source:
+
+@lisp
+(directory :path "/home/user-name/procmail-dir/"
+ :suffix ".prcml")
+@end lisp
+
+@item pop
+Get mail from a POP server.
+
+Keywords:
+
+@table @code
+@item :server
+The name of the POP server. The default is taken from the
+@code{MAILHOST} environment variable.
+
+@item :port
+The port number of the POP server. The default is @samp{pop3}.
+
+@item :user
+The user name to give to the POP server. The default is the login
+name.
+
+@item :password
+The password to give to the POP server. If not specified, the user is
+prompted.
+
+@item :program
+The program to use to fetch mail from the POP server. This is should be
+a @code{format}-like string. Here's an example:
+
+@example
+fetchmail %u@@%s -P %p %t
+@end example
+
+The valid format specifier characters are:
+
+@table @samp
+@item t
+The name of the file the mail is to be moved to. This must always be
+included in this string.
+
+@item s
+The name of the server.
+
+@item P
+The port number of the server.
+
+@item u
+The user name to use.
+
+@item p
+The password to use.
+@end table
+
+The values used for these specs are taken from the values you give the
+corresponding keywords.
+
+@item :prescript
+A script to be run before fetching the mail. The syntax is the same as
+the @code{:program} keyword. This can also be a function to be run.
+
+@item :postscript
+A script to be run after fetching the mail. The syntax is the same as
+the @code{:program} keyword. This can also be a function to be run.
+
+@item :function
+The function to use to fetch mail from the POP server. The function is
+called with one parameter---the name of the file where the mail should
+be moved to.
+
+@item :authentication
+This can be either the symbol @code{password} or the symbol @code{apop}
+and says what authentication scheme to use. The default is
+@code{password}.
+
+@end table
+
+If the @code{:program} and @code{:function} keywords aren't specified,
+@code{pop3-movemail} will be used.
+
+Here are some examples. Fetch from the default POP server, using the
+default user name, and default fetcher:
+
+@lisp
+(pop)
+@end lisp
+
+Fetch from a named server with a named user and password:
+
+@lisp
+(pop :server "my.pop.server"
+ :user "user-name" :password "secret")
+@end lisp
+
+Use @samp{movemail} to move the mail:
+
+@lisp
+(pop :program "movemail"
+ :args (format "po:%s %s %s" user mail-source-crash-box password))
+@end lisp
+
+@item maildir
+Get mail from a maildir. This is a type of mailbox currently only
+supported by qmail, where each file in a special directory contains
+exactly one mail.
+
+Keywords:
+
+@table @code
+@item :path
+The path of the directory where the mails are stored. The default is
+@samp{~/Maildir/new}.
+
+If you sometimes look at your mail through a pop3 daemon before fetching
+them with Gnus, you may also have to fetch your mails from the
+@code{cur} directory inside the maildir, like in the following example.
+
+@end table
+
+An example maildir mail source:
+
+@lisp
+(maildir :path "/home/user-name/Maildir/cur")
+@end lisp
+
+@end table
+
+
+@node Mail Source Customization
+@subsubsection Mail Source Customization
+
+The following is a list of variables that influence how the mail is
+fetched. You would normally not need to set or change any of these
+variables.
+
+@table @code
+@item mail-source-movemail-program
+@vindex mail-source-movemail-program
+A command to be executed to move mail from the inbox. The default is
+@samp{movemail}.
+
+This can also be a function. In that case, the function will be
+called with two parameters -- the name of the INBOX file, and the file
+to be moved to.
+
+@item mail-source-movemail-args
+@vindex mail-source-movemail-args
+Extra arguments to give to the command described above.
+
+@item mail-source-crash-box
+@vindex mail-source-crash-box
+File where mail will be stored while processing it. The default is
+@file{~/.emacs-mail-crash-box}.
+
+@item mail-source-delete-incoming
+@vindex mail-source-delete-incoming
+If non-@code{nil}, delete incoming files after handling them.
+
+@item mail-source-directory
+@vindex mail-source-directory
+Directory where files (if any) will be stored. The default is
+@file{~/Mail/}. At present, the only thing this is used for is to say
+where the incoming files will be stored if the previous variable 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.
+
+@end table
+
+
+@node Fetching Mail
+@subsubsection Fetching Mail
+
+The way to actually tell Gnus where to get new mail from is to set
+@code{nnmail-spool-file} to a list of mail source specifiers
+(@pxref{Mail Source Specifiers}).
+
+If this variable is @code{nil}, the mail backends will never attempt to
+fetch mail by themselves.
+
+If you want to fetch mail both from your local spool as well as a POP
+mail server, you'd say something like:
+
+@lisp
+(setq nnmail-spool-file
+ '((file)
+ (pop :server "pop3.mail.server"
+ :password "secret")))
+@end lisp
+
+Or, if you don't want to use any of the keyword defaults:
+
+@lisp
+(setq nnmail-spool-file
+ '((file :path "/var/spool/mail/user-name")
+ (pop :server "pop3.mail.server"
+ :user "user-name"
+ :port "pop3"
+ :password "secret")))
+@end lisp
-@vindex nnmail-spool-file
-@item nnmail-spool-file
-@cindex POP mail
-@cindex MAILHOST
-@cindex movemail
-@vindex nnmail-pop-password
-@vindex nnmail-pop-password-required
-The backends will look for new mail in this file. If this variable is
-@code{nil}, the mail backends will never attempt to fetch mail by
-themselves. If you are using a POP mail server and your name is
-@samp{larsi}, you should set this variable to @samp{po:larsi}. If
-your name is not @samp{larsi}, you should probably modify that
-slightly, but you may have guessed that already, you smart & handsome
-devil! You can also set this variable to @code{pop}, and Gnus will try
-to figure out the POP mail string by itself. In any case, Gnus will
-call @code{movemail} which will contact the POP server named in the
-@code{MAILHOST} environment variable. If the POP server needs a
-password, you can either set @code{nnmail-pop-password-required} to
-@code{t} and be prompted for the password, or set
-@code{nnmail-pop-password} to the password itself.
-
-@code{nnmail-spool-file} can also be a list of mailboxes.
-
-Your Emacs has to have been configured with @samp{--with-pop} before
-compilation. This is the default, but some installations have it
-switched off.
When you use a mail backend, Gnus will slurp all your mail from your
inbox and plonk it down in your home directory. Gnus doesn't move any
pentagram, lightened the candles, and sacrificed the goat, you really
shouldn't be too surprised when Gnus moves your mail.
-@vindex nnmail-use-procmail
-@vindex nnmail-procmail-suffix
-@item nnmail-use-procmail
-If non-@code{nil}, the mail backends will look in
-@code{nnmail-procmail-directory} for incoming mail. All the files in
-that directory that have names ending in @code{nnmail-procmail-suffix}
-will be considered incoming mailboxes, and will be searched for new
-mail.
-@vindex nnmail-crash-box
-@item nnmail-crash-box
-When a mail backend reads a spool file, mail is first moved to this
-file, which is @file{~/.gnus-crash-box} by default. If this file
-already exists, it will always be read (and incorporated) before any
-other spool files.
+
+@node Mail Backend Variables
+@subsection Mail Backend Variables
+
+These variables are (for the most part) pertinent to all the various
+mail backends.
+
+@table @code
+@vindex nnmail-read-incoming-hook
+@item nnmail-read-incoming-hook
+The mail backends all call this hook after reading new mail. You can
+use this hook to notify any mail watch programs, if you want to.
@vindex nnmail-split-hook
@item nnmail-split-hook
(lambda () (set-default-file-modes 551)))
@end lisp
-@item nnmail-tmp-directory
-@vindex nnmail-tmp-directory
-This variable says where to move incoming mail to -- while processing
-it. This is usually done in the same directory that the mail backend
-inhabits (e.g., @file{~/Mail/}), but if this variable is non-@code{nil},
-it will be used instead.
-
-@item nnmail-movemail-program
-@vindex nnmail-movemail-program
-This program is executed to move mail from the user's inbox to her home
-directory. The default is @samp{movemail}.
-
-This can also be a function. In that case, the function will be called
-with two parameters -- the name of the inbox, and the file to be moved
-to.
-
-@item nnmail-delete-incoming
-@vindex nnmail-delete-incoming
-@cindex incoming mail files
-@cindex deleting incoming files
-If non-@code{nil}, the mail backends will delete the temporary incoming
-file after splitting mail into the proper groups. This is @code{t} by
-default.
-
-@c This is @code{nil} by
-@c default for reasons of security.
-
-@c Since Red Gnus is an alpha release, it is to be expected to lose mail.
-(No Gnus release since (ding) Gnus 0.10 (or something like that) have
-lost mail, I think, but that's not the point. (Except certain versions
-of Red Gnus.)) By not deleting the Incoming* files, one can be sure not
-to lose mail -- if Gnus totally whacks out, one can always recover what
-was lost.
-
-You may delete the @file{Incoming*} files at will.
-
@item nnmail-use-long-file-names
@vindex nnmail-use-long-file-names
If non-@code{nil}, the mail backends will use long file and directory
groupings 1 through 9.
-@node Mail and Procmail
-@subsection Mail and Procmail
-@cindex procmail
-
-@cindex slocal
-@cindex elm
-Many people use @code{procmail} (or some other mail filter program or
-external delivery agent---@code{slocal}, @code{elm}, etc) to split
-incoming mail into groups. If you do that, you should set
-@code{nnmail-spool-file} to @code{procmail} to ensure that the mail
-backends never ever try to fetch mail by themselves.
-
-If you have a combined @code{procmail}/POP/mailbox setup, you can do
-something like the following:
-
-@vindex nnmail-use-procmail
-@lisp
-(setq nnmail-use-procmail t)
-(setq nnmail-spool-file
- '("/usr/spool/mail/my-name" "po:my-name"))
-@end lisp
-
-This also means that you probably don't want to set
-@code{nnmail-split-methods} either, which has some, perhaps, unexpected
-side effects.
-
-When a mail backend is queried for what groups it carries, it replies
-with the contents of that variable, along with any groups it has figured
-out that it carries by other means. None of the backends, except
-@code{nnmh}, actually go out to the disk and check what groups actually
-exist. (It's not trivial to distinguish between what the user thinks is
-a basis for a newsgroup and what is just a plain old file or directory.)
-
-This means that you have to tell Gnus (and the backends) by hand what
-groups exist.
-
-Let's take the @code{nnmh} backend as an example:
-
-The folders are located in @code{nnmh-directory}, say, @file{~/Mail/}.
-There are three folders, @file{foo}, @file{bar} and @file{mail.baz}.
-
-Go to the group buffer and type @kbd{G m}. When prompted, answer
-@samp{foo} for the name and @samp{nnmh} for the method. Repeat
-twice for the two other groups, @samp{bar} and @samp{mail.baz}. Be sure
-to include all your mail groups.
-
-That's it. You are now set to read your mail. An active file for this
-method will be created automatically.
-
-@vindex nnmail-procmail-suffix
-@vindex nnmail-procmail-directory
-If you use @code{nnfolder} or any other backend that store more than a
-single article in each file, you should never have procmail add mails to
-the file that Gnus sees. Instead, procmail should put all incoming mail
-in @code{nnmail-procmail-directory}. To arrive at the file name to put
-the incoming mail in, append @code{nnmail-procmail-suffix} to the group
-name. The mail backends will read the mail from these files.
-
-@vindex nnmail-resplit-incoming
-When Gnus reads a file called @file{mail.misc.spool}, this mail will be
-put in the @code{mail.misc}, as one would expect. However, if you want
-Gnus to split the mail the normal way, you could set
-@code{nnmail-resplit-incoming} to @code{t}.
-
-@vindex nnmail-keep-last-article
-If you use @code{procmail} to split things directly into an @code{nnmh}
-directory (which you shouldn't do), you should set
-@code{nnmail-keep-last-article} to non-@code{nil} to prevent Gnus from
-ever expiring the final article (i.e., the article with the highest
-article number) in a mail newsgroup. This is quite, quite important.
-
-Here's an example setup: The incoming spools are located in
-@file{~/incoming/} and have @samp{""} as suffixes (i.e., the incoming
-spool files have the same names as the equivalent groups). The
-@code{nnfolder} backend is to be used as the mail interface, and the
-@code{nnfolder} directory is @file{~/fMail/}.
-
-@lisp
-(setq nnfolder-directory "~/fMail/")
-(setq nnmail-spool-file 'procmail)
-(setq nnmail-procmail-directory "~/incoming/")
-(setq gnus-secondary-select-methods '((nnfolder "")))
-(setq nnmail-procmail-suffix "")
-@end lisp
-
-
@node Incorporating Old Mail
@subsection Incorporating Old Mail
@findex nnmail-remove-tabs
Translate all @samp{TAB} characters into @samp{SPACE} characters.
+@item nnmail-fix-eudora-headers
+@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.
+
@end table
@item nnmail-prepare-incoming-message-hook
If you have lots of @code{nnfolder}-like files you'd like to read with
@code{nnfolder}, you can use the @kbd{M-x nnfolder-generate-active-file}
command to make @code{nnfolder} aware of all likely files in
-@code{nnfolder-directory}.
+@code{nnfolder-directory}. This only works if you use long file names,
+though.
@node Other Sources
Forwarded articles.
@item mime-parts
-MIME multipart messages, besides digests.
-
-@item mime-digest
-@cindex digest
-@cindex MIME digest
-@cindex 1153 digest
-@cindex RFC 1153 digest
-@cindex RFC 341 digest
-MIME (RFC 1341) digest format.
+MIME multipart messages.
@item standard-digest
The standard (RFC 1153) digest format.
@vindex nndoc-article-type
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{mime-digest},
-@code{standard-digest}, @code{slack-digest}, @code{clari-briefs} or
-@code{guess}.
+@code{rfc822-forward}, @code{mime-parts}, @code{standard-digest},
+@code{slack-digest}, @code{clari-briefs} or @code{guess}.
@item nndoc-post-type
@vindex nndoc-post-type
Score on the subject line.
@item x
-Score on the Xref line---i.e., the cross-posting line.
+Score on the @code{Xref} line---i.e., the cross-posting line.
@item r
-Score on the References line.
+Score on the @code{References} line.
@item d
Score on the date.
Score on the number of lines.
@item i
-Score on the Message-ID.
+Score on the @code{Message-ID} header.
@item f
-Score on followups.
+Score on followups---this matches the author name, and adds scores to
+the followups to this author.
@item b
Score on the body.
@table @emph
@item X-Newsreader
-This is considered to be a ``vanity header'', while I consider it to be
-consumer information. After seeing so many badly formatted articles
-coming from @code{tin} and @code{Netscape} I know not to use either of
-those for posting articles. I would not have known that if it wasn't
-for the @code{X-Newsreader} header.
+@itemx User-Agent
+These are considered to be ``vanity headers'', while I consider them
+to be consumer information. After seeing so many badly formatted
+articles coming from @code{tin} and @code{Netscape} I know not to use
+either of those for posting articles. I would not have known that if
+it wasn't for the @code{X-Newsreader} header.
@end table
@item USEFOR