* Mail:: Mailing and replying.
* Posting Server:: What server should you post and mail via?
+* POP before SMTP:: You cannot send a mail unless you read a mail.
* Mail and Post:: Mailing and posting at the same time.
* Archived Messages:: Where Gnus stores the messages you've sent.
* Posting Styles:: An easier way to specify who you are.
* Blackholes::
* Regular Expressions Header Matching::
* Bogofilter::
+* SpamAssassin backend::
* ifile spam filtering::
* spam-stat spam filtering::
* SpamOracle::
A string that says when you last read the group (@pxref{Group
Timestamp}).
+@item F
+The disk space used by the articles fetched by both the cache and
+agent. The value is automatically scaled to bytes(B), kilobytes(K),
+megabytes(M), or gigabytes(G) to minimize the column width. A format
+of %7F is sufficient for a fixed-width column.
+
@item u
User defined specifier. The next character in the format string should
be a letter. Gnus will call the function
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
-group. @code{dummy-variable} will be set to the result of the
-@code{(ding)} form, but who cares?
+This can also be used as a group-specific hook function. 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 group.
+@code{dummy-variable} will be set to the (meaningless) result of the
+@code{(ding)} form.
+
+Alternatively, since the VARIABLE becomes local to the group, this
+pattern can be used to temporarily change a hook. For example, if the
+following is added to a group parameter
+
+@lisp
+(gnus-summary-prepared-hook
+ '(lambda nil (local-set-key "d" (local-key-binding "n"))))
+@end lisp
+
+when the group is entered, the 'd' key will not mark the article as
+expired.
@end table
Treat quoted-printable (@code{gnus-article-de-quoted-unreadable}).
Quoted-Printable is one common @acronym{MIME} encoding employed when
sending non-@acronym{ASCII} (i.e., 8-bit) articles. It typically
-makes strings like @samp{déjà vu} look like @samp{d=E9j=E0 vu}, which
-doesn't look very readable to me. Note that this is usually done
-automatically by Gnus if the message in question has a
+makes strings like @samp{d@'ej@`a vu} look like @samp{d=E9j=E0 vu},
+which doesn't look very readable to me. Note that this is usually
+done automatically by Gnus if the message in question has a
@code{Content-Transfer-Encoding} header that says that this encoding
has been done. If a prefix is given, a charset will be asked for.
@item W A
@kindex W A (Summary)
@findex gnus-article-treat-ansi-sequences
-Translate ANSI SGR control sequences into overlays or extents
-(@code{gnus-article-treat-ansi-sequences}). ANSI sequences are used in
-some Chinese hierarchies for highlighting.
+@cindex @acronym{ANSI} control sequences
+Translate @acronym{ANSI} SGR control sequences into overlays or
+extents (@code{gnus-article-treat-ansi-sequences}). @acronym{ANSI}
+sequences are used in some Chinese hierarchies for highlighting.
@item W u
@kindex W u (Summary)
@item gnus-mime-multipart-functions
Alist of @acronym{MIME} multipart types and functions to handle them.
+@vindex gnus-mime-display-multipart-alternative-as-mixed
+@item gnus-mime-display-multipart-alternative-as-mixed
+Display "multipart/alternative" parts as "multipart/mixed".
+
+@vindex gnus-mime-display-multipart-related-as-mixed
+@item gnus-mime-display-multipart-related-as-mixed
+Display "multipart/related" parts as "multipart/mixed".
+
+If displaying "text/html" is discouraged, see
+@code{mm-discouraged-alternatives} in @ref{Display Customization,
+Display Customization, , emacs-mime, Emacs-Mime Manual}. Images or
+other material inside a "multipart/related" part might be overlooked
+when this variable is nil.
+
+@vindex gnus-mime-display-multipart-as-mixed
+@item gnus-mime-display-multipart-as-mixed
+Display "multipart" parts as "multipart/mixed". If t, it overrides nil
+values of @code{gnus-mime-display-multipart-alternative-as-mixed} and
+@code{gnus-mime-display-multipart-related-as-mixed}.
+
@vindex mm-file-name-rewrite-functions
@item mm-file-name-rewrite-functions
List of functions used for rewriting file names of @acronym{MIME} parts.
@cindex coding system aliases
@cindex preferred charset
+@xref{Encoding Customization, , Encoding Customization, emacs-mime,
+The Emacs MIME Manual}, for additional variables that control which
+MIME charsets are used when sending messages.
+
Other charset tricks that may be useful, although not Gnus-specific:
If there are several @acronym{MIME} charsets that encode the same Emacs
@vindex gnus-newsgroup-variables
@item gnus-newsgroup-variables
A list of newsgroup (summary buffer) local variables, or cons of
-variables and their default values (when the default values are not
-@code{nil}), that should be made global while the summary buffer is
-active. These variables can be used to set variables in the group
-parameters while still allowing them to affect operations done in
-other buffers. For example:
+variables and their default expressions to be evalled (when the default
+values are not @code{nil}), that should be made global while the summary
+buffer is active.
+
+Note: The default expressions will be evaluated (using function
+@code{eval}) before assignment to the local variable rather than just
+assigned to it. If the default expression is the symbol @code{global},
+that symbol will not be evaluated but the global value of the local
+variable will be used instead.
+
+These variables can be used to set variables in the group parameters
+while still allowing them to affect operations done in other
+buffers. For example:
@lisp
(setq gnus-newsgroup-variables
"^From:\\|^Newsgroups:\\|^Subject:\\|^Date:\\|^To:")))
@end lisp
+Also @pxref{Group Parameters}.
@end table
@item C-c C-n a
@kindex C-c C-n a (Summary)
-@findex gnus-mailing-list-owner
+@findex gnus-mailing-list-archive
Browse the mailing list archive, if List-Archive field exists.
@end table
@item gnus-treat-play-sounds
@item gnus-treat-translate
+@item gnus-treat-ansi-sequences (t)
@item gnus-treat-x-pgp-sig (head)
@item gnus-treat-unfold-headers (head)
@vindex gnus-article-mode-line-format
@item gnus-article-mode-line-format
This variable is a format string along the same lines as
-@code{gnus-summary-mode-line-format} (@pxref{Mode Line Formatting}). It
-accepts the same format specifications as that variable, with two
-extensions:
+@code{gnus-summary-mode-line-format} (@pxref{Summary Buffer Mode
+Line}). It accepts the same format specifications as that variable,
+with two extensions:
@table @samp
@menu
* Mail:: Mailing and replying.
* Posting Server:: What server should you post and mail via?
+* POP before SMTP:: You cannot send a mail unless you read a mail.
* Mail and Post:: Mailing and posting at the same time.
* Archived Messages:: Where Gnus stores the messages you've sent.
* Posting Styles:: An easier way to specify who you are.
@end lisp
To the thing similar to this, there is
-@code{message-smtpmail-send-it}. It is useful if your ISP requires
-the @acronym{POP}-before-@acronym{SMTP} authentication. See the
-documentation for the function @code{mail-source-touch-pop}.
+@code{message-smtpmail-send-it}. It is useful if your @acronym{ISP}
+requires the @acronym{POP}-before-@acronym{SMTP} authentication.
+@xref{POP before SMTP}.
Other possible choices for @code{message-send-mail-function} includes
@code{message-send-mail-with-mh}, @code{message-send-mail-with-qmail},
and @code{feedmail-send-it}.
+@node POP before SMTP
+@section POP before SMTP
+@cindex pop before smtp
+@findex message-smtpmail-send-it
+@findex mail-source-touch-pop
+
+Does your @acronym{ISP} require the @acronym{POP}-before-@acronym{SMTP}
+authentication? It is whether you need to connect to the @acronym{POP}
+mail server within a certain time before sending mails. If so, there is
+a convenient way. To do that, put the following lines in your
+@file{~/.gnus.el} file:
+
+@lisp
+(setq message-send-mail-function 'message-smtpmail-send-it)
+(add-hook 'message-send-mail-hook 'mail-source-touch-pop)
+@end lisp
+
+@noindent
+It means to let Gnus connect to the @acronym{POP} mail server in advance
+whenever you send a mail. The @code{mail-source-touch-pop} function
+does only a @acronym{POP} authentication according to the value of
+@code{mail-sources} without fetching mails, just before sending a mail.
+Note that you have to use @code{message-smtpmail-send-it} which runs
+@code{message-send-mail-hook} rather than @code{smtpmail-send-it} and
+set the value of @code{mail-sources} for a @acronym{POP} connection
+correctly. @xref{Mail Sources}.
+
+If you have two or more @acronym{POP} mail servers set in
+@code{mail-sources}, you may want to specify one of them to
+@code{mail-source-primary-source} as the @acronym{POP} mail server to be
+used for the @acronym{POP}-before-@acronym{SMTP} authentication. If it
+is your primary @acronym{POP} mail server (i.e., you are fetching mails
+mainly from that server), you can set it permanently as follows:
+
+@lisp
+(setq mail-source-primary-source
+ '(pop :server "pop3.mail.server"
+ :password "secret"))
+@end lisp
+
+@noindent
+Otherwise, bind it dynamically only when performing the
+@acronym{POP}-before-@acronym{SMTP} authentication as follows:
+
+@lisp
+(add-hook 'message-send-mail-hook
+ (lambda ()
+ (let ((mail-source-primary-source
+ '(pop :server "pop3.mail.server"
+ :password "secret")))
+ (mail-source-touch-pop))))
+@end lisp
+
@node Mail and Post
@section Mail and Post
host.
@end table
+Note that you may want to change the value for @code{nntp-end-of-line}
+to @samp{\n} (@pxref{Common Variables}).
+
+@item nntp-open-via-rlogin-and-netcat
+@findex nntp-open-via-rlogin-and-netcat
+Does essentially the same, but uses @samp{netcat}
+(@uref{http://netcat.sourceforge.net/}) instead of @samp{telnet} to
+connect to the real @acronym{NNTP} server from the intermediate host.
+
+@code{nntp-open-via-rlogin-and-netcat}-specific variables:
+
+@table @code
+@item nntp-via-netcat-command
+@vindex nntp-via-netcat-command
+Command used to connect to the real @acronym{NNTP} server from the
+intermediate host. The default is @samp{nc}. You can also use other
+programs like @samp{connect}
+(@uref{http://www.imasy.or.jp/~gotoh/ssh/connect.html}) instead.
+
+@item nntp-via-netcat-switches
+@vindex nntp-via-netcat-switches
+List of strings to be used as the switches to the
+@code{nntp-via-telnet-command} command. The default is @code{nil}.
+
+@item nntp-via-rlogin-command
+Command used to log in on the intermediate host. The default is
+@samp{rsh}, but @samp{ssh} is a popular alternative.
+
+@item nntp-via-rlogin-command-switches
+List of strings to be used as the switches to
+@code{nntp-via-rlogin-command}. The default is @code{nil}.
+@end table
+
@item nntp-open-via-telnet-and-telnet
@findex nntp-open-via-telnet-and-telnet
-Does essentially the same, but uses @samp{telnet} instead of
+Does essentially also the same, but uses @samp{telnet} instead of
@samp{rlogin} to connect to the intermediate host.
@code{nntp-open-via-telnet-and-telnet}-specific variables:
@end table
+Note that you may want to change the value for @code{nntp-end-of-line}
+to @samp{\n} (@pxref{Common Variables}).
@end table
@vindex nntp-end-of-line
String to use as end-of-line marker when talking to the @acronym{NNTP}
server. This is @samp{\r\n} by default, but should be @samp{\n} when
-using a non native connection function.
+using a non native telnet connection function.
@item nntp-telnet-command
@vindex nntp-telnet-command
If the search engine changes its output substantially, @code{nnweb}
won't be able to parse it and will fail. One could hardly fault the Web
-providers if they were to do this---their @emph{raison d'être} is to
+providers if they were to do this---their @emph{raison d'@^etre} is to
make money off of advertisements, not to provide services to the
community. Since @code{nnweb} washes the ads off all the articles, one
might think that the providers might be somewhat miffed. We'll see.
the following in the group buffer: @kbd{B nnrss RET y}, then
subscribe to groups.
+@cindex OPML
+You can also use the following commands to import and export your
+subscriptions from a file in @acronym{OPML} format (Outline Processor
+Markup Language).
+
+@defun nnrss-opml-import file
+Prompt for an @acronym{OPML} file, and subscribe to each feed in the
+file.
+@end defun
+
+@defun nnrss-opml-export
+Write your current @acronym{RSS} subscriptions to a buffer in
+@acronym{OPML} format.
+@end defun
+
The following @code{nnrss} variables can be altered:
@table @code
@item agent-enable-undownloaded-faces
a symbol indicating whether the summary buffer should display
-undownloaded articles using the gnus-summary-*-undownloaded-face
-faces. Any symbol other than nil will enable the use of undownloaded
-faces.
+undownloaded articles using the @code{gnus-summary-*-undownloaded-face}
+faces. Any symbol other than @code{nil} will enable the use of
+undownloaded faces.
@end table
The name of a category can not be changed once the category has been
Categories}), a Group Topic (@pxref{Topic Parameters}), or an
individual group (@pxref{Group Parameters}).
+The one problem common to all users using the agent is how quickly it
+can consume disk space. If you using the agent on many groups, it is
+even more difficult to effectively recover disk space. One solution
+is the @samp{%F} format available in @code{gnus-group-line-format}.
+This format will display the actual disk space used by articles
+fetched into both the agent and cache. By knowing which groups use
+the most space, users know where to focus their efforts when ``agent
+expiring'' articles.
+
@node Agent as Cache
@subsection Agent as Cache
@item uncompface-use-external-threshold
@vindex uncompface-use-external-threshold
-@vindex uncompface-use-external-threshold
A number of seconds to check whether the host machine is slow. If the
host takes time larger than this value for decoding an @code{X-Face}
using the internal ELisp-based @code{uncompface} program, it will be
-changed to using the external decoder.
+changed to using the external decoder. The default is 0.1 seconds.
@end table
If the internal decoder is invalidated or if you are using XEmacs,
(Note: @code{x-face} is used in the variable/function names, not
@code{xface}).
+@noindent
+Face and variable:
+
+@table @code
+@item gnus-x-face
+@vindex gnus-x-face
+Face to show X-Face. The colors from this face are used as the
+foreground and background colors of the displayed X-Faces. The
+default colors are black and white.
+
+@item gnus-face-properties-alist
+@vindex gnus-face-properties-alist
+Alist of image types and properties applied to Face (@pxref{Face}) and
+X-Face images. The default value is @code{((pbm . (:face gnus-x-face))
+(png . nil))} for Emacs or @code{((xface . (:face gnus-x-face)))} for
+XEmacs. Here are examples:
+
+@lisp
+;; Specify the altitude of Face and X-Face images in the From header.
+(setq gnus-face-properties-alist
+ '((pbm . (:face gnus-x-face :ascent 80))
+ (png . (:ascent 80))))
+
+;; Show Face and X-Face images as pressed buttons.
+(setq gnus-face-properties-alist
+ '((pbm . (:face gnus-x-face :relief -2))
+ (png . (:relief -2))))
+@end lisp
+
+@pxref{Image Descriptors, ,Image Descriptors, elisp, The Emacs Lisp
+Reference Manual} for the valid properties for various image types.
+Currently, @code{pbm} is used for X-Face images and @code{png} is used
+for Face images in Emacs. Only the @code{:face} property is effective
+on the @code{xface} image type in XEmacs if it is built with the
+@samp{libcompface} library.
+@end table
+
Gnus provides a few convenience functions and variables to allow
easier insertion of X-Face headers in outgoing messages.
See @uref{http://quimby.gnus.org/circus/face/} for the precise
specifications.
+The @code{gnus-face-properties-alist} variable affects the appearance of
+displayed Face images. @xref{X-Face}.
+
Gnus provides a few convenience functions and variables to allow
easier insertion of Face headers in outgoing messages.
* Blackholes::
* Regular Expressions Header Matching::
* Bogofilter::
+* SpamAssassin backend::
* ifile spam filtering::
* spam-stat spam filtering::
* SpamOracle::
called a @dfn{Spool File}. See @xref{Spam ELisp Package Filtering of
Incoming Mail}.
+@vindex gnus-spam-autodetect
+@vindex gnus-spam-autodetect-methods
For backends such as @code{nntp} there is no incoming mail spool, so
an alternate mechanism must be used. This may also happen for
backends where the server is in charge of splitting incoming mail, and
Gnus does not do further splitting. The @code{spam-autodetect} and
@code{spam-autodetect-methods} group parameters (accessible with
@kbd{G c} and @kbd{G p} as usual), and the corresponding variables
-@code{gnus-spam-autodetect} and
-@code{gnus-spam-autodetect-methods} (accessible with @kbd{M-x
-customize-variable} as usual).
+@code{gnus-spam-autodetect} and @code{gnus-spam-autodetect-methods}
+(accessible with @kbd{M-x customize-variable} as usual) can help.
-When @code{spam-autodetect} is used, it hooks into the process of
-entering a group. Thus, entering a group with unseen or unread
-articles becomes the substitute for checking incoming mail. Whether
-only unseen articles or all unread articles will be processed is
-determined by the @code{spam-autodetect-recheck-messages}. When set
-to @code{t}, unread messages will be rechecked.
+When @code{spam-autodetect} is used (you can turn it on for a
+group/topic or wholesale by regex, as needed), it hooks into the
+process of entering a group. Thus, entering a group with unseen or
+unread articles becomes the substitute for checking incoming mail.
+Whether only unseen articles or all unread articles will be processed
+is determined by the @code{spam-autodetect-recheck-messages}. When
+set to @code{t}, unread messages will be rechecked.
@code{spam-autodetect} grants the user at once more and less control
of spam filtering. The user will have more control over each group's
variable, which is a list of regular expressions matched with group
names (it's easiest to customize this variable with @kbd{M-x
customize-variable @key{RET} gnus-ham-process-destinations}). Each
-newsgroup specification has the format @code{(@var{regexp}
-@var{processor})} in a standard Lisp list, if you prefer to customize
-the variable manually. The ultimate location is a group name or
-names. If the @code{ham-process-destination} parameter is not set,
-ham articles are left in place. If the
+group name list is a standard Lisp list, if you prefer to customize
+the variable manually. If the @code{ham-process-destination}
+parameter is not set, ham articles are left in place. If the
@code{spam-mark-ham-unread-before-move-from-spam-group} parameter is
set, the ham articles are marked as unread before being moved.
@code{gnus-spam-process-destinations} variable, which is a list of
regular expressions matched with group names (it's easiest to
customize this variable with @kbd{M-x customize-variable @key{RET}
-gnus-spam-process-destinations}). Each newsgroup specification has
-the repeated format @code{(@var{regexp} @var{group})} and they are all
-in a standard Lisp list, if you prefer to customize the variable
-manually. The ultimate location is a group name or names. If the
+gnus-spam-process-destinations}). Each group name list is a standard
+Lisp list, if you prefer to customize the variable manually. If the
@code{spam-process-destination} parameter is not set, the spam
articles are only expired. The group name is fully qualified, meaning
that if you see @samp{nntp:servername} before the group name in the
@code{gnus-spam-process-newsgroups} variable. When this symbol is
added to a group's @code{spam-process} parameter, the senders of
ham-marked articles in @emph{ham} groups will be added to the
-whitelist. Note that this ham processor has no effect in @emph{spam}
-or @emph{unclassified} groups.
+whitelist.
@emph{WARNING}
@code{gnus-spam-process-newsgroups} variable. When this symbol is
added to a group's @code{spam-process} parameter, the senders of
ham-marked articles in @emph{ham} groups will be added to the
-BBDB. Note that this ham processor has no effect in @emph{spam}
-or @emph{unclassified} groups.
+BBDB.
@emph{WARNING}
@code{gnus-spam-process-newsgroups} variable. When this symbol is
added to a group's @code{spam-process} parameter, the ham-marked
articles in @emph{ham} groups will be added to the Bogofilter database
-of non-spam messages. Note that this ham processor has no effect in
-@emph{spam} or @emph{unclassified} groups.
+of non-spam messages.
@emph{WARNING}
used, or has already been used on the article. The 0.9.2.1 version of
Bogofilter was used to test this functionality.
+@node SpamAssassin backend
+@subsubsection SpamAssassin backend
+@cindex spam filtering
+@cindex spamassassin, spam filtering
+@cindex spam
+
+@defvar spam-use-spamassassin
+
+Set this variable if you want @code{spam-split} to use SpamAssassin.
+
+SpamAssassin assigns a score to each article based on a set of rules
+and tests, including a Bayesian filter. The Bayesian filter can be
+trained by associating the @samp{$} mark for spam articles. The
+spam score can be viewed by using the command @kbd{S t} in summary
+mode.
+
+If you set this variable, each article will be processed by
+SpamAssassin when @code{spam-split} is called. If your mail is
+preprocessed by SpamAssassin, and you want to just use the
+SpamAssassin headers, set @code{spam-use-spamassassin-headers}
+instead.
+
+You should not enable this is you use
+@code{spam-use-spamassassin-headers}.
+
+@end defvar
+
+@defvar spam-use-spamassassin-headers
+
+Set this variable if your mail is preprocessed by SpamAssassin and
+want @code{spam-split} to split based on the SpamAssassin headers.
+
+You should not enable this is you use @code{spam-use-spamassassin}.
+
+@end defvar
+
+@defvar spam-spamassassin-path
+
+This variable points to the SpamAssassin executable. If you have
+@code{spamd} running, you can set this variable to the @code{spamc}
+executable for faster processing. See the SpamAssassin documentation
+for more information on @code{spamd}/@code{spamc}.
+
+@end defvar
+
+SpamAssassin is a powerful and flexible spam filter that uses a wide
+variety of tests to identify spam. A ham and a spam processors are
+provided, plus the @code{spam-use-spamassassin} and
+@code{spam-use-spamassassin-headers} variables to indicate to
+spam-split that SpamAssassin should be either used, or has already
+been used on the article. The 2.63 version of SpamAssassin was used
+to test this functionality.
+
@node ifile spam filtering
@subsubsection ifile spam filtering
@cindex spam filtering
@code{gnus-spam-process-newsgroups} variable. When this symbol is
added to a group's @code{spam-process} parameter, the ham-marked
articles in @emph{ham} groups will be added to the spam-stat database
-of non-spam messages. Note that this ham processor has no effect in
-@emph{spam} or @emph{unclassified} groups.
+of non-spam messages.
@emph{WARNING}
@code{gnus-spam-process-newsgroups} variable. When this symbol is added
to a group's @code{spam-process} parameter, the ham-marked articles in
@emph{ham} groups will be sent to the SpamOracle as samples of ham
-messages. Note that this ham processor has no effect in @emph{spam} or
-@emph{unclassified} groups.
+messages.
@emph{WARNING}
Kevin Davidson---came up with the name @dfn{ding}, so blame him.
@item
-François Pinard---many, many interesting and thorough bug reports, as
+Fran@,{c}ois Pinard---many, many interesting and thorough bug reports, as
well as autoconf support.
@end itemize
Jesper Harder,
Paul Jarc,
Simon Josefsson,
-David Kågedal,
+David K@aa{}gedal,
Richard Pieri,
Fabrice Popineau,
Daniel Quinlan,
Richard Hoskins,
Brad Howes,
Miguel de Icaza,
-François Felix Ingrand,
+Fran@,{c}ois Felix Ingrand,
Tatsuya Ichikawa, @c Ichikawa
Ishikawa Ichiro, @c Ishikawa
Lee Iverson,
@itemize @bullet
@item
+@kbd{F} (@code{gnus-article-followup-with-original}) and @kbd{R}
+(@code{gnus-article-reply-with-original}) only yank the text in the
+region if the region is active.
+
+@item
@code{gnus-group-read-ephemeral-group} can be called interactively,
using @kbd{G M}.