* Editing IMAP ACLs:: Limiting/enabling other users access to a mailbox.
* Expunging mailboxes:: Equivalent of a ``compress mailbox'' button.
* A note on namespaces:: How to (not) use @acronym{IMAP} namespace in Gnus.
+* Debugging IMAP:: What to do when things don't work.
Other Sources
to a particular group by using a match string like
@samp{shaving group:alt.sysadmin.recovery}.
+@item G R
+@kindex G R (Group)
+@findex gnus-group-make-rss-group
+Make a group based on an @acronym{RSS} feed
+(@code{gnus-group-make-rss-group}). You will be prompted for an URL.
+@xref{RSS}.
+
@item G DEL
@kindex G DEL (Group)
@findex gnus-group-delete-group
actually delete all the articles in the group, and forcibly remove the
group itself from the face of the Earth. Use a prefix only if you are
absolutely sure of what you are doing. This command can't be used on
-read-only groups (like @code{nntp} group), though.
+read-only groups (like @code{nntp} groups), though.
@item G V
@kindex G V (Group)
(nnweb "google" (nnweb-type google))))
@end lisp
-Most of the mail back ends support fetching by @code{Message-ID}, but
-do not do a particularly excellent job at it. That is, @code{nnmbox},
-@code{nnbabyl}, and @code{nnmaildir} are able to locate articles from
-any groups, while @code{nnml}, @code{nnfolder}, and @code{nnimap} are
+Most of the mail back ends support fetching by @code{Message-ID}, but do
+not do a particularly excellent job at it. That is, @code{nnmbox},
+@code{nnbabyl}, @code{nnmaildir}, @code{nnml}, are able to locate
+articles from any groups, while @code{nnfolder}, and @code{nnimap} are
only able to locate articles that have been posted to the current group.
(Anything else would be too time consuming.) @code{nnmh} does not
support this at all.
You can hide further boring headers by setting
@code{gnus-treat-hide-boring-headers} to @code{head}. What this function
does depends on the @code{gnus-boring-article-headers} variable. It's a
-list, but this list doesn't actually contain header names. Instead is
+list, but this list doesn't actually contain header names. Instead it
lists various @dfn{boring conditions} that Gnus can check and remove
from sight.
Remove the @code{Followup-To} header if it is identical to the
@code{Newsgroups} header.
@item reply-to
-Remove the @code{Reply-To} header if it lists the same address as the
-@code{From} header, or if the @code{broken-reply-to} group parameter is
-set.
+Remove the @code{Reply-To} header if it lists the same addresses as
+the @code{From} header, or if the @code{broken-reply-to} group
+parameter is set.
@item newsgroups
Remove the @code{Newsgroups} header if it only contains the current group
name.
@item nnslashdot-active-url
@vindex nnslashdot-active-url
-The @sc{url} format string that will be used to fetch the information on
-news articles and comments. The default is@*
+The @acronym{URL} format string that will be used to fetch the
+information on news articles and comments. The default is@*
@samp{http://slashdot.org/search.pl?section=&min=%d}.
@item nnslashdot-comments-url
@vindex nnslashdot-comments-url
-The @sc{url} format string that will be used to fetch comments.
+The @acronym{URL} format string that will be used to fetch comments.
@item nnslashdot-article-url
@vindex nnslashdot-article-url
-The @sc{url} format string that will be used to fetch the news article. The
-default is
+The @acronym{URL} format string that will be used to fetch the news
+article. The default is
@samp{http://slashdot.org/article.pl?sid=%s&mode=nocomment}.
@item nnslashdot-threshold
The easiest way to get started with @code{nnultimate} is to say
something like the following in the group buffer: @kbd{B nnultimate RET
-http://www.tcj.com/messboard/ubbcgi/ RET}. (Substitute the @sc{url}
+http://www.tcj.com/messboard/ubbcgi/ RET}. (Substitute the @acronym{URL}
(not including @samp{Ultimate.cgi} or the like at the end) for a forum
you're interested in; there's quite a list of them on the Ultimate web
site.) Then subscribe to the groups you're interested in from the
@cindex nnrss
@cindex RSS
-Some sites have RDF site summary (RSS)
-@uref{http://purl.org/rss/1.0/spec}. It has a quite regular and nice
-interface, and it's possible to get the information Gnus needs to keep
-groups updated.
+Some web sites have an RDF Site Summary (@acronym{RSS}).
+@acronym{RSS} is a format for summarizing headlines from news related
+sites (such as BBC or CNN). But basically anything list-like can be
+presented as an @acronym{RSS} feed: weblogs, changelogs or recent
+changes to a wiki (e.g. @url{http://cliki.net/recent-changes.rdf}).
-The easiest way to get started with @code{nnrss} is to say something
-like the following in the group buffer: @kbd{B nnrss RET RET}, then
-subscribe groups.
+@acronym{RSS} has a quite regular and nice interface, and it's
+possible to get the information Gnus needs to keep groups updated.
+
+Use @kbd{G R} from the summary buffer to subscribe to a feed---you
+will be prompted for the location of the feed.
+
+An easy way to get started with @code{nnrss} is to say something like
+the following in the group buffer: @kbd{B nnrss RET y}, then
+subscribe to groups.
The following @code{nnrss} variables can be altered:
The directory where @code{nnrss} stores its files. The default is
@file{~/News/rss/}.
+@item nnrss-use-local
+@vindex nnrss-use-local
+@findex nnrss-generate-download-script
+If you set @code{nnrss-use-local} to @code{t}, @code{nnrss} will read
+the feeds from local files in @code{nnrss-directory}. You can use
+the command @code{nnrss-generate-download-script} to generate a
+download script using @command{wget}.
@end table
The following code may be helpful, if you want to show the description in
* Editing IMAP ACLs:: Limiting/enabling other users access to a mailbox.
* Expunging mailboxes:: Equivalent of a ``compress mailbox'' button.
* A note on namespaces:: How to (not) use @acronym{IMAP} namespace in Gnus.
+* Debugging IMAP:: What to do when things don't work.
@end menu
for more information on how to use the prefixes. They are a power
tool and should be used only if you are sure what the effects are.
+@node Debugging IMAP
+@subsection Debugging IMAP
+@cindex IMAP debugging
+@cindex protocol dump (IMAP)
+
+@acronym{IMAP} is a complex protocol, more so than @acronym{NNTP} or
+@acronym{POP3}. Implementation bugs are not unlikely, and we do our
+best to fix them right away. If you encounter odd behaviour, chances
+are that either the server or Gnus is buggy.
+
+If you are familiar with network protocols in general, you will
+probably be able to extract some clues from the protocol dump of the
+exchanges between Gnus and the server. Even if you are not familiar
+with network protocols, when you include the protocol dump in
+@acronym{IMAP}-related bug reports you are helping us with data
+critical to solving the problem. Therefore, we strongly encourage you
+to include the protocol dump when reporting IMAP bugs in Gnus.
+
+
+@vindex imap-log
+Because the protocol dump, when enabled, generates lots of data, it is
+disabled by default. You can enable it by setting @code{imap-log} as
+follows:
+
+@lisp
+(setq imap-log t)
+@end lisp
+
+This instructs the @code{imap.el} package to log any exchanges with
+the server. The log is stored in the buffer @samp{*imap-log*}. Look
+for error messages, which sometimes are tagged with the keyword
+@code{BAD} - but when submitting a bug, make sure to include all the
+data.
+
@node Other Sources
@section Other Sources
@lisp
(defun gnus-decay-score (score)
- "Decay SCORE.
-This is done according to `gnus-score-decay-constant'
+ "Decay SCORE according to `gnus-score-decay-constant'
and `gnus-score-decay-scale'."
- (floor
- (- score
- (* (if (< score 0) 1 -1)
- (min (abs score)
- (max gnus-score-decay-constant
- (* (abs score)
- gnus-score-decay-scale)))))))
+ (let ((n (- score
+ (* (if (< score 0) -1 1)
+ (min (abs score)
+ (max gnus-score-decay-constant
+ (* (abs score)
+ gnus-score-decay-scale)))))))
+ (if (and (featurep 'xemacs)
+ ;; XEmacs' floor can handle only the floating point
+ ;; number below the half of the maximum integer.
+ (> (abs n) (lsh -1 -2)))
+ (string-to-number
+ (car (split-string (number-to-string n) "\\.")))
+ (floor n))))
@end lisp
@vindex gnus-score-decay-scale
First of all, you @strong{must} run the function
@code{spam-initialize} to autoload @code{spam.el} and to install the
-@code{spam.el} hooks:
+@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}:
@example
+(setq spam-use-stat t) ;; if needed
(spam-initialize)
@end example
-So, what happens when you load @file{spam.el}?
+So, what happens when you load @file{spam.el}?
You get the following keyboard commands:
parameter or a match in the @code{gnus-ham-process-destinations}
variable, which is a list of regular expressions matched with group
names (it's easiest to customize this variable with
-@code{customize-variable gnus-ham-process-destinations}). The ultimate
-location is a group name. If the @code{ham-process-destination}
-parameter is not set, ham articles are left in place. If the
+@code{customize-variable gnus-ham-process-destinations}). Each
+newsgroup specification has the format (REGEXP PROCESSOR) in a
+standard Lisp list, if you prefer to customize the variable manually.
+The ultimate location is a group name. 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 @code{customize-variable
-gnus-spam-process-destinations}). The ultimate location is a group
-name. If the @code{spam-process-destination} parameter is not set,
-the spam articles are only expired.
+gnus-spam-process-destinations}). Each newsgroup specification has
+the repeated format (REGEXP PROCESSOR) and they are all in a standard
+Lisp list, if you prefer to customize the variable manually. The
+ultimate location is a group name. If the
+@code{spam-process-destination} parameter is not set, the spam
+articles are only expired.
To use the @file{spam.el} facilities for incoming mail filtering, you
must add the following to your fancy split list
The @code{spam-split} function will process incoming mail and send the
mail considered to be spam into the group name given by the variable
@code{spam-split-group}. By default that group name is @samp{spam},
-but you can customize @code{spam-split-group}.
+but you can customize @code{spam-split-group}. Make sure the contents
+of @code{spam-split-group} are an @emph{unqualified} group name, for
+instance in an @code{nnimap} server @samp{your-server} the value
+@samp{spam} will turn out to be @samp{nnimap+your-server:spam}. The
+value @samp{nnimap+server:spam}, therefore, is wrong and will
+actually give you the group
+@samp{nnimap+your-server:nnimap+server:spam} which may or may not
+work depending on your server's tolerance for strange group names.
You can also give @code{spam-split} a parameter,
e.g. @samp{'spam-use-regex-headers} or @samp{"maybe-spam"}. Why is
@item
Try doing an @kbd{M-x gnus-version}. If you get something that looks
like @samp{T-gnus 6.16.* (based on Gnus v5.10.*; for SEMI 1.1*, FLIM
-1.1*)} you have the right files loaded. If, on the other hand, you get
-something like @samp{NNTP 3.x} or @samp{nntp flee}, you have some old
+1.1*)} you have the right files loaded. Otherwise you have some old
@file{.el} files lying around. Delete these.
@item