* Direct Functions:: Connecting directly to the server.
* Indirect Functions:: Connecting indirectly to the server.
* Common Variables:: Understood by several connection functions.
+* NNTP marks:: Storing marks for @acronym{NNTP} servers.
Getting Mail
* Blackholes::
* Regular Expressions Header Matching::
* Bogofilter::
-* SpamAssassin backend::
+* SpamAssassin back end::
* ifile spam filtering::
* spam-stat spam filtering::
* SpamOracle::
(setq gnus-secondary-select-methods '((nnmbox "")))
@end lisp
+Note: the @acronym{NNTP} back end stores marks in marks files
+(@pxref{NNTP marks}). This feature makes it easy to share marks between
+several Gnus installations, but may slow down things a bit when fetching
+new articles. @xref{NNTP marks}, for more information.
+
@node The First Time
@section The First Time
(@code{gnus-summary-limit-to-author}). If given a prefix, exclude
matching articles.
+@item / R
+@kindex / R (Summary)
+@findex gnus-summary-limit-to-recipient
+Limit the summary buffer to articles that match some recipient
+(@code{gnus-summary-limit-to-recipient}). If given a prefix, exclude
+matching articles.
+
@item / x
@kindex / x (Summary)
@findex gnus-summary-limit-to-extra
@findex gnus-thread-sort-by-score
@findex gnus-thread-sort-by-subject
@findex gnus-thread-sort-by-author
+@c @findex gnus-thread-sort-by-recipient
@findex gnus-thread-sort-by-number
@findex gnus-thread-sort-by-random
@vindex gnus-thread-sort-functions
@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.
+when this variable is @code{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
+Display "multipart" parts as "multipart/mixed". If @code{t}, it
+overrides @code{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
@findex gnus-summary-sort-by-author
Sort by author (@code{gnus-summary-sort-by-author}).
+@item C-c C-s C-t
+@kindex C-c C-s C-t (Summary)
+@findex gnus-summary-sort-by-recipient
+Sort by recipient (@code{gnus-summary-sort-by-recipient}).
+
@item C-c C-s C-s
@kindex C-c C-s C-s (Summary)
@findex gnus-summary-sort-by-subject
@item gnus-use-idna
This variable controls whether Gnus performs IDNA decoding of
internationalized domain names inside @samp{From}, @samp{To} and
-@samp{Cc} headers. This requires
+@samp{Cc} headers. @xref{IDNA, ,IDNA,message, The Message Manual},
+for how to compose such messages. This requires
@uref{http://www.gnu.org/software/libidn/, GNU Libidn}, and this
variable is only enabled if you have installed it.
* Direct Functions:: Connecting directly to the server.
* Indirect Functions:: Connecting indirectly to the server.
* Common Variables:: Understood by several connection functions.
+* NNTP marks:: Storing marks for @acronym{NNTP} servers.
@end menu
Regexp matching the shell prompt on the intermediate host. The default
is @samp{bash\\|\$ *\r?$\\|> *\r?}.
-@item nntp-marks-is-evil
-@vindex nntp-marks-is-evil
-If non-@code{nil}, this back end will ignore any @sc{marks} files. The
-default is @code{nil}.
-
-@item nntp-marks-directory
-@vindex nntp-marks-directory
-The directory where @sc{marks} for nntp groups will be stored.
-
@end table
Note that you may want to change the value for @code{nntp-end-of-line}
@end table
+@node NNTP marks
+@subsubsection NNTP marks
+@cindex storing NNTP marks
+
+Gnus stores marks (@pxref{Marking Articles}) for @acronym{NNTP}
+servers in marks files. A marks file records what marks you have set
+in a group and each file is specific to the corresponding server.
+Marks files are stored in @file{~/News/marks}
+(@code{nntp-marks-directory}) under a classic hierarchy resembling
+that of a news server, for example marks for the group
+@samp{gmane.discuss} on the news.gmane.org server will be stored in
+the file @file{~/News/marks/news.gmane.org/gmane/discuss/.marks}.
+
+Marks files are useful because you can copy the @file{~/News/marks}
+directory (using rsync, scp or whatever) to another Gnus installation,
+and it will realize what articles you have read and marked. The data
+in @file{~/News/marks} has priority over the same data in
+@file{~/.newsrc.eld}.
+
+Note that marks files are very much server-specific: Gnus remembers
+the article numbers so if you don't use the same servers on both
+installations things are most likely to break (most @acronym{NNTP}
+servers do not use the same article numbers as any other server).
+However, if you use servers A, B, C on one installation and servers A,
+D, E on the other, you can sync the marks files for A and then you'll
+get synchronization for that server between the two installations.
+
+Using @acronym{NNTP} marks can possibly incur a performance penalty so
+if Gnus feels sluggish, try setting the @code{nntp-marks-is-evil}
+variable to @code{t}. Marks will then be stored in @file{~/.newsrc.eld}.
+
+Related variables:
+
+@table @code
+
+@item nntp-marks-is-evil
+@vindex nntp-marks-is-evil
+If non-@code{nil}, this back end will ignore any marks files. The
+default is @code{nil}.
+
+@item nntp-marks-directory
+@vindex nntp-marks-directory
+The directory where marks for nntp groups will be stored.
+
+@end table
+
@node News Spool
@subsection News Spool
argument. It should return a non-@code{nil} value if it thinks that the
mail belongs in that group.
+@cindex @samp{bogus} group
The last of these groups should always be a general one, and the regular
-expression should @emph{always} be @samp{*} so that it matches any mails
+expression should @emph{always} be @samp{""} so that it matches any mails
that haven't been matched by any of the other regexps. (These rules are
-processed from the beginning of the alist toward the end. The first
-rule to make a match will ``win'', unless you have crossposting enabled.
-In that case, all matching rules will ``win''.) When new groups are
-created by splitting mail, you may want to run
-@code{gnus-group-find-new-groups} to see the new groups.
+processed from the beginning of the alist toward the end. The first rule
+to make a match will ``win'', unless you have crossposting enabled. In
+that case, all matching rules will ``win''.) If no rule matched, the mail
+will end up in the @samp{bogus} group. When new groups are created by
+splitting mail, you may want to run @code{gnus-group-find-new-groups} to
+see the new groups. This also applies to the @samp{bogus} group.
If you like to tinker with this yourself, you can set this variable to a
function of your choice. This function will be called without any
The mail back ends all support cross-posting. If several regexps match,
the mail will be ``cross-posted'' to all those groups.
@code{nnmail-crosspost} says whether to use this mechanism or not. Note
-that no articles are crossposted to the general (@samp{*}) group.
+that no articles are crossposted to the general (@samp{""}) group.
@vindex nnmail-crosspost-link-function
@cindex crosspost
The buffer is narrowed to the message in question when @var{function}
is run. That's why @code{(widen)} needs to be called after
@code{save-excursion} and @code{save-restriction} in the example
-above. Also note that with the nnimap backend, message bodies will
+above. Also note that with the nnimap back end, message bodies will
not be downloaded by default. You need to set
@code{nnimap-split-download-body} to @code{t} to do that
(@pxref{Splitting in IMAP}).
@vindex gnus-agent
Is the agent enabled? The default is @code{t}. When first enabled,
the agent will use @code{gnus-agent-auto-agentize-methods} to
-automatically mark some backends as agentized. You may change which
-backends are agentized using the agent commands in the server buffer.
+automatically mark some back ends as agentized. You may change which
+back ends are agentized using the agent commands in the server buffer.
To enter the server buffer, use the @kbd{^}
(@code{gnus-group-enter-server-mode}) command in the group buffer.
If you have never used the Agent before (or more technically, if
@file{~/News/agent/lib/servers} does not exist), Gnus will
automatically agentize a few servers for you. This variable control
-which backends should be auto-agentized. It is typically only useful
-to agentize remote backends. The auto-agentizing has the same effect
+which back ends should be auto-agentized. It is typically only useful
+to agentize remote back ends. The auto-agentizing has the same effect
as running @kbd{J a} on the servers (@pxref{Server Agent Commands}).
If the file exist, you must manage the servers manually by adding or
removing them, this variable is only applicable the first time you
"spam"))))
@end lisp
-Note that with the nnimap backend, message bodies will not be
+Note that with the nnimap back end, message bodies will not be
downloaded by default. You need to set
@code{nnimap-split-download-body} to @code{t} to do that
(@pxref{Splitting in IMAP}).
@item hashcash-path
@vindex hashcash-path
Where the @code{hashcash} binary is installed. This variable should
-be automatically set by @code{executable-find}, but if it's nil
+be automatically set by @code{executable-find}, but if it's @code{nil}
(usually because the @code{hashcash} binary is not in your path)
you'll get a warning when you check hashcash payments and an error
when you generate hashcash payments.
hand customized mail filtering scripts. To verify a hashcash cookie
in a message, use the @code{mail-check-payment} function in the
@code{hashcash.el} library. You can also use the @code{spam.el}
-package with the @code{spam-use-hashcash} backend to validate hashcash
+package with the @code{spam-use-hashcash} back end to validate hashcash
cookies in incoming mail and filter mail accordingly (@pxref{Anti-spam
Hashcash Payments}).
Make sure you read the section on the @code{spam.el} sequence of
events. See @xref{Spam ELisp Package Sequence of Events}.
+@cindex spam-initialize
To use @code{spam.el}, you @strong{must} run the function
-@code{spam-initialize} to autoload @code{spam.el} and to install the
+@code{spam-initialize} to autoload @file{spam.el} and to install the
@code{spam.el} hooks. There is one exception: if you use the
@code{spam-use-stat} (@pxref{spam-stat spam filtering}) setting, you
should turn it on before @code{spam-initialize}:
(spam-initialize)
@end example
-So, what happens when you load @code{spam.el}?
+So, what happens when you load @file{spam.el}?
First, some hooks will get installed by @code{spam-initialize}. There
are some hooks for @code{spam-stat} so it can save its databases, and
@end table
-Also, when you load @code{spam.el}, you will be able to customize its
+Also, when you load @file{spam.el}, you will be able to customize its
variables. Try @code{customize-group} on the @samp{spam} variable
group.
* Blackholes::
* Regular Expressions Header Matching::
* Bogofilter::
-* SpamAssassin backend::
+* SpamAssassin back end::
* ifile spam filtering::
* spam-stat spam filtering::
* SpamOracle::
split your incoming mail or you can classify new articles as ham or
spam when you enter the group.
-Splitting incoming mail is better suited to mail backends such as
+Splitting incoming mail is better suited to mail back ends such as
@code{nnml} or @code{nnimap} where new mail appears in a single file
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
+For back ends 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
+back ends 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{spam-process-destination} is @code{nil}, the spam is marked as
expired, which is usually the right thing to do.
-If spam can not be moved---because of a read-only backend such as
+If spam can not be moved---because of a read-only back end such as
@acronym{NNTP}, for example, it will be copied.
If a ham mail is found in a ham group, as determined by the
necessary, which is what most people want. More on this in
@xref{Spam ELisp Package Configuration Examples}.
-If ham can not be moved---because of a read-only backend such as
+If ham can not be moved---because of a read-only back end such as
@acronym{NNTP}, for example, it will be copied.
If all this seems confusing, don't worry. Soon it will be as natural
You should still have specific checks such as
@code{spam-use-regex-headers} set to @code{t}, even if you
specifically invoke @code{spam-split} with the check. The reason is
-that when loading @code{spam.el}, some conditional loading is done
+that when loading @file{spam.el}, some conditional loading is done
depending on what @code{spam-use-xyz} variables you have set. This
is usually not critical, though.
e.g. @code{spam-check-bogofilter}, @code{spam-check-ifile}, or
@code{spam-check-stat} (the splitters that can benefit from the full
message body), this variable will be set automatically. It is not set
-for non-statistical backends by default because it will slow
+for non-statistical back ends by default because it will slow
@acronym{IMAP} down.
@xref{Splitting in IMAP}.
@code{spam-mark-ham-unread-before-move-from-spam-group} parameter is
set, the ham articles are marked as unread before being moved.
-If ham can not be moved---because of a read-only backend such as
+If ham can not be moved---because of a read-only back end such as
@acronym{NNTP}, for example, it will be copied.
Note that you can use multiples destinations per group or regular
that if you see @samp{nntp:servername} before the group name in the
group buffer then you need it here as well.
-If spam can not be moved---because of a read-only backend such as
+If spam can not be moved---because of a read-only back end such as
@acronym{NNTP}, for example, it will be copied.
Note that you can use multiples destinations per group or regular
You can display the spam score of articles in your summary buffer, and
you can sort articles by their spam score.
-First you need to decide which backend you will be using. If you use
+First you need to decide which back end you will be using. If you use
the @code{spam-use-spamassassin},
@code{spam-use-spamassassin-headers}, or @code{spam-use-regex-headers}
-backend, the @code{X-Spam-Status} header will be used. If you use
+back end, the @code{X-Spam-Status} header will be used. If you use
@code{spam-use-bogofilter}, the @code{X-Bogosity} header will be used.
If you use @code{spam-use-crm114}, any header that matches the CRM114
-score format will be used. As long as you set the appropriate backend
-variable to t @emph{before} you load @code{spam.el}, you will be
+score format will be used. As long as you set the appropriate back end
+variable to t @emph{before} you load @file{spam.el}, you will be
fine. @code{spam.el} will automatically add the right header to the
internal Gnus list of required headers.
While @code{spam-use-BBDB-exclusive} @emph{can} be used as an alias
for @code{spam-use-BBDB} as far as @code{spam.el} is concerned, it is
-@emph{not} a separate backend. If you set
+@emph{not} a separate back end. If you set
@code{spam-use-BBDB-exclusive} to t, @emph{all} your BBDB splitting
will be exclusive.
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
+@node SpamAssassin back end
+@subsubsection SpamAssassin back end
@cindex spam filtering
@cindex spamassassin, spam filtering
@cindex spam
@item
@code{spam-install-backend-alias}
-This function will simply install an alias for a backend that does
-everything like the original backend. It is currently only used to
+This function will simply install an alias for a back end that does
+everything like the original back end. It is currently only used to
make @code{spam-use-BBDB-exclusive} act like @code{spam-use-BBDB}.
@item
@code{spam-install-nocheck-backend}
-This function installs a backend that has no check function, but can
-register/unregister ham or spam. The @code{spam-use-gmane} backend is
-such a backend.
+This function installs a back end that has no check function, but can
+register/unregister ham or spam. The @code{spam-use-gmane} back end is
+such a back end.
@item
@code{spam-install-checkonly-backend}
-This function will install a backend that can only check incoming mail
+This function will install a back end that can only check incoming mail
for spam contents. It can't register or unregister messages.
@code{spam-use-blackholes} and @code{spam-use-hashcash} are such
-backends.
+back ends.
@item
@code{spam-install-statistical-checkonly-backend}
-This function installs a statistical backend (one which requires the
+This function installs a statistical back end (one which requires the
full body of a message to check it) that can only check incoming mail
for contents. @code{spam-use-regex-body} is such a filter.
@item
@code{spam-install-statistical-backend}
-This function install a statistical backend with incoming checks and
+This function install a statistical back end with incoming checks and
registration/unregistration routines. @code{spam-use-bogofilter} is
set up this way.
@item
@code{spam-install-backend}
-This is the most normal backend installation, where a backend that can
+This is the most normal back end installation, where a back end that can
check and register/unregister messages is set up without statistical
-abilities. The @code{spam-use-BBDB} is such a backend.
+abilities. The @code{spam-use-BBDB} is such a back end.
@item
@code{spam-install-mover-backend}
-Mover backends are internal to @code{spam.el} and specifically move
+Mover back ends are internal to @code{spam.el} and specifically move
articles around when the summary is exited. You will very probably
-never install such a backend.
+never install such a back end.
@end enumerate
@end enumerate