From: Jouni K Seppanen <jks@iki.fi>
Subject: Re: Slow expiry with nnimap+Courier [patch]
Date: Thu, 27 Oct 2005 21:44:12 +0300 [thread overview]
Message-ID: <29hdb27qbn.fsf@itl-pc9.hut.fi> (raw)
In-Reply-To: <ilu8xwfjpur.fsf@latte.josefsson.org>
[-- Attachment #1: Type: text/plain, Size: 556 bytes --]
Simon Josefsson <jas@extundo.com> writes:
> Would you like to submit a patch for the manual as well?
Here's a patch. I also documented nnimap-nov-is-evil, or rather my
understanding of what it seems to do. It occurred to me that people to
whom slow expiry is a problem might go to the index of the manual and
look up "expiring mail". There was already one index entry for
"expiring IMAP mail", so I added this one, and in the process I added
entries on some other pages that might be relevant to people looking
up "expiring mail".
--
Jouni K Seppänen
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: doc-search-uid.patch --]
[-- Type: text/x-patch, Size: 7505 bytes --]
Index: texi/ChangeLog
===================================================================
RCS file: /usr/local/cvsroot/gnus/texi/ChangeLog,v
retrieving revision 7.184
diff -u -u -r7.184 ChangeLog
--- texi/ChangeLog 25 Oct 2005 19:00:24 -0000 7.184
+++ texi/ChangeLog 27 Oct 2005 18:28:33 -0000
@@ -1,3 +1,10 @@
+2005-10-27 Jouni K Seppanen <jks@iki.fi>
+
+ * gnus.texi: Add index terms related to expiry.
+ (IMAP): Document variables nnimap-nov-is-evil and
+ nnimap-search-uids-not-since-is-evil. Mention latter in connection
+ with nnimap-expunge-search-string and in the section on expiring.
+
2005-10-25 Reiner Steib <Reiner.Steib@gmx.de>
* gnus-coding.texi (Dependencies): Add some text.
Index: texi/gnus.texi
===================================================================
RCS file: /usr/local/cvsroot/gnus/texi/gnus.texi,v
retrieving revision 7.124
diff -u -u -r7.124 gnus.texi
--- texi/gnus.texi 17 Oct 2005 12:17:12 -0000 7.124
+++ texi/gnus.texi 27 Oct 2005 18:28:42 -0000
@@ -2822,6 +2822,7 @@
@item auto-expire
@cindex auto-expire
+@cindex expiring mail
If the group parameter has an element that looks like @code{(auto-expire
. t)}, all articles read will be marked as expirable. For an
alternative approach, @pxref{Expiring Mail}.
@@ -2830,6 +2831,7 @@
@item total-expire
@cindex total-expire
+@cindex expiring mail
If the group parameter has an element that looks like
@code{(total-expire . t)}, all read articles will be put through the
expiry process, even if they are not marked as expirable. Use with
@@ -2839,7 +2841,7 @@
See also @code{gnus-total-expirable-newsgroups}.
@item expiry-wait
-@cindex expiry-wait
+@vindex expiry-wait
@vindex nnmail-expiry-wait-function
If the group parameter has an element that looks like
@code{(expiry-wait . 10)}, this value will override any
@@ -2849,7 +2851,7 @@
symbols @code{never} or @code{immediate}.
@item expiry-target
-@cindex expiry-target
+@vindex expiry-target
Where expired messages end up. This parameter overrides
@code{nnmail-expiry-target}.
@@ -3419,6 +3421,7 @@
@item C-c C-x
@kindex C-c C-x (Group)
@findex gnus-group-expire-articles
+@cindex expiring mail
Run all expirable articles in the current group through the expiry
process (if any) (@code{gnus-group-expire-articles}). That is, delete
all expirable articles in the group that have been around for a while.
@@ -3427,6 +3430,7 @@
@item C-c C-M-x
@kindex C-c C-M-x (Group)
@findex gnus-group-expire-all-groups
+@cindex expiring mail
Run all expirable articles in all groups through the expiry process
(@code{gnus-group-expire-all-groups}).
@@ -3787,6 +3791,7 @@
@item C-c C-x
@kindex C-c C-x (Topic)
@findex gnus-topic-expire-articles
+@cindex expiring mail
Run all expirable articles in the current group or topic through the
expiry process (if any)
(@code{gnus-topic-expire-articles}). (@pxref{Expiring Mail}).
@@ -10056,6 +10061,7 @@
@item B e
@kindex B e (Summary)
@findex gnus-summary-expire-articles
+@cindex expiring mail
Run all expirable articles in the current group through the expiry
process (@code{gnus-summary-expire-articles}). That is, delete all
expirable articles in the group that have been around for a while.
@@ -10064,6 +10070,7 @@
@item B C-M-e
@kindex B C-M-e (Summary)
@findex gnus-summary-expire-articles-now
+@cindex expiring mail
Delete all the expirable articles in the group
(@code{gnus-summary-expire-articles-now}). This means that @strong{all}
articles eligible for expiry in the current group will
@@ -14553,6 +14560,7 @@
@node Expiring Mail
@subsection Expiring Mail
@cindex article expiry
+@cindex expiring mail
Traditional mail readers have a tendency to remove mail articles when
you mark them as read, in some way. Gnus takes a fundamentally
@@ -16465,6 +16473,7 @@
@item nnimap-expunge-search-string
@cindex expunging
@vindex nnimap-expunge-search-string
+@cindex expiring @acronym{IMAP} mail
This variable contain the @acronym{IMAP} search command sent to server when
searching for articles eligible for expiring. The default is
@@ -16476,6 +16485,10 @@
messages instead of the internal article date. See section 6.4.4 of
RFC 2060 for more information on valid strings.
+However, if @code{nnimap-search-uids-not-since-is-evil}
+is true, the command is @code{"UID NOT SINCE @var{date}"},
+regardless of this variable.
+
@item nnimap-authinfo-file
@vindex nnimap-authinfo-file
@@ -16501,6 +16514,47 @@
seem to need this under some circumstances; it was reported that
Courier 1.7.1 did.
+@item nnimap-nov-is-evil
+@vindex nnimap-nov-is-evil
+@cindex Courier @acronym{IMAP} server
+@cindex @acronym{NOV}
+
+Never generate or use a local @acronym{NOV} database. Defaults to the
+value of @code{gnus-agent}.
+
+Using a @acronym{NOV} database usually makes header fetching much
+faster, but it uses the @code{UID SEARCH UID} command, which is very
+slow on some servers (notably some versions of Courier). Since the Gnus
+Agent caches the information in the @acronym{NOV} database without using
+the slow command, this variable defaults to true if the Agent is in use,
+and false otherwise.
+
+@item nnimap-search-uids-not-since-is-evil
+@vindex nnimap-search-uids-not-since-is-evil
+@cindex Courier @acronym{IMAP} server
+@cindex expiring @acronym{IMAP} mail
+
+Avoid the @code{UID SEARCH UID @var{message numbers} NOT SINCE
+@var{date}} command, which is slow on some @acronym{IMAP} servers
+(notably, some versions of Courier). Instead, use @code{UID SEARCH SINCE
+@var{date}} and prune the list of expirable articles within Gnus.
+
+When Gnus expires your mail (@pxref{Expiring Mail}), it starts with a
+list of expirable articles and asks the IMAP server questions like ``Of
+these articles, which ones are older than a week?'' While this seems
+like a perfectly reasonable question, some IMAP servers take a long time
+to answer it, since they seemingly go looking into every old article to
+see if it is one of the expirable ones. Curiously, the question ``Of
+@emph{all} articles, which ones are newer than a week?'' seems to be
+much faster to answer, so setting this variable causes Gnus to ask this
+question and figure out the answer to the real question itself.
+
+This problem can really sneak up on you: when you first configure Gnus,
+everything works fine, but once you accumulate a couple thousand
+messages, you start cursing Gnus for being so slow. On the other hand,
+if you get a lot of email within a week, setting this variable will
+cause a lot of network traffic between Gnus and the IMAP server.
+
@end table
@menu
@@ -16688,7 +16742,7 @@
@node Expiring in IMAP
@subsection Expiring in IMAP
-@cindex expiring imap mail
+@cindex expiring @acronym{IMAP} mail
Even though @code{nnimap} is not a proper @code{nnmail} derived back
end, it supports most features in regular expiring (@pxref{Expiring
@@ -16707,6 +16761,9 @@
your server must support permanent storage of client specific flags on
messages. Most do, fortunately.
+If expiring @acronym{IMAP} mail seems very slow, try setting the server
+variable @code{nnimap-search-uids-not-since-is-evil}.
+
@table @code
@item nnmail-expiry-wait
@@ -18993,7 +19050,7 @@
@findex gnus-agent-expire-group
@cindex agent expiry
@cindex Gnus agent expiry
-@cindex expiry
+@cindex expiry, in Gnus agent
The Agent back end, @code{nnagent}, doesn't handle expiry. Well, at
least it doesn't handle it like other back ends. Instead, there are
next prev parent reply other threads:[~2005-10-27 18:44 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-10-26 12:41 Jouni K Seppanen
2005-10-27 8:36 ` Simon Josefsson
2005-10-27 9:01 ` Simon Josefsson
2005-10-27 18:44 ` Jouni K Seppanen [this message]
2006-12-26 17:59 ` Reiner Steib
2006-12-26 18:11 ` Jouni K. Seppänen
2006-12-29 14:22 ` Jouni K. Seppänen
2006-12-29 15:29 ` Reiner Steib
2006-12-29 16:18 ` Jouni K. Seppänen
2006-12-29 18:09 ` Reiner Steib
2005-11-01 21:19 ` Ted Zlatanov
2005-11-02 10:22 ` Simon Josefsson
2005-11-04 16:06 ` Ted Zlatanov
2005-11-07 3:10 ` Simon Josefsson
2005-11-07 6:47 ` Jouni K Seppanen
2005-11-07 10:33 ` Bjørn Mork
2005-11-07 20:23 ` Jouni K Seppanen
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=29hdb27qbn.fsf@itl-pc9.hut.fi \
--to=jks@iki.fi \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).