From mboxrd@z Thu Jan 1 00:00:00 1970 X-Msuck: nntp://news.gmane.io/gmane.emacs.gnus.general/64141 Path: news.gmane.org!not-for-mail From: Reiner Steib Newsgroups: gmane.emacs.gnus.general Subject: Re: Slow expiry with nnimap+Courier [patch] Date: Tue, 26 Dec 2006 18:59:35 +0100 Message-ID: References: <29ll0gpi1k.fsf@itl-pc9.hut.fi> <29hdb27qbn.fsf@itl-pc9.hut.fi> Reply-To: Reiner Steib NNTP-Posting-Host: dough.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Trace: sea.gmane.org 1167156011 18625 80.91.229.10 (26 Dec 2006 18:00:11 GMT) X-Complaints-To: usenet@sea.gmane.org NNTP-Posting-Date: Tue, 26 Dec 2006 18:00:11 +0000 (UTC) Cc: ding@gnus.org Original-X-From: ding-owner+M12664@lists.math.uh.edu Tue Dec 26 19:00:09 2006 Return-path: Envelope-to: ding-account@gmane.org Original-Received: from util0.math.uh.edu ([129.7.128.18]) by dough.gmane.org with esmtp (Exim 4.50) id 1GzGat-0005TY-2W for ding-account@gmane.org; Tue, 26 Dec 2006 19:00:07 +0100 Original-Received: from localhost ([127.0.0.1] helo=lists.math.uh.edu) by util0.math.uh.edu with smtp (Exim 4.63) (envelope-from ) id 1GzGaj-0006ze-BW; Tue, 26 Dec 2006 11:59:57 -0600 Original-Received: from mx2.math.uh.edu ([129.7.128.33]) by util0.math.uh.edu with esmtps (TLSv1:AES256-SHA:256) (Exim 4.63) (envelope-from ) id 1GzGag-0006zG-V4 for ding@lists.math.uh.edu; Tue, 26 Dec 2006 11:59:55 -0600 Original-Received: from quimby.gnus.org ([80.91.231.51]) by mx2.math.uh.edu with esmtp (Exim 4.63) (envelope-from ) id 1GzGaa-0002Wr-3g for ding@lists.math.uh.edu; Tue, 26 Dec 2006 11:59:54 -0600 Original-Received: from mail.uni-ulm.de ([134.60.1.1]) by quimby.gnus.org with esmtp (Exim 3.35 #1 (Debian)) id 1GzGaZ-0002yo-00 for ; Tue, 26 Dec 2006 18:59:47 +0100 Original-Received: from bridgekeeper.physik.uni-ulm.de (bridgekeeper.physik.uni-ulm.de [134.60.10.123]) by mail.uni-ulm.de (8.13.8/8.13.8) with ESMTP id kBQHxjGQ004996; Tue, 26 Dec 2006 18:59:45 +0100 (MET) Original-Received: from viandante.physik.uni-ulm.de (bridgekeeper.physik.uni-ulm.de [134.60.10.123]) by bridgekeeper.physik.uni-ulm.de (Postfix) with SMTP id 6406C124FC; Tue, 26 Dec 2006 18:59:45 +0100 (CET) Original-Received: (nullmailer pid 30346 invoked by uid 170); Tue, 26 Dec 2006 17:59:35 -0000 Original-To: Jouni K Seppanen X-Face: 1;h7XMU[7l}$T@J.D}5z*w8Tg'}B5ArAWc8>2X~otB;kOjKs8X%|hTC#dG:%Vpx")x7S/`v :VXU#fZW$X$zdhEU.RfVQ@<-m9IuN{Hm"fW{,5]6kR'M*vEs+{5Cj!L(JTRzA$(},?5J=sm;%Od, ding@gnus.org User-Agent: Gnus/5.110006 (No Gnus v0.6) Emacs/22.0.92 (gnu/linux) X-DCC-INFN-TO-Metrics: gemini 1233; Body=2 Fuz1=2 Fuz2=2 X-Spam-Score: -2.6 (--) List-ID: Precedence: bulk Xref: news.gmane.org gmane.emacs.gnus.general:64141 Archived-At: --=-=-= On Thu, Oct 27 2005, Jouni K Seppanen wrote: > Simon Josefsson 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. Can someone comment on this? Is Jouni's documentation correct? [1] > 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". Thanks for your patch. I'm sorry that we forgot to apply your patch upto now. I'd like to install it now in the stable branch. I'm not sure about changing @cindex to @vindex, though: ,---- | @@ -2842,7 +2844,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 | @@ -2852,7 +2854,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}. `---- I think we use @cindex for such symbols (as these are not variables). Cf. M-x @cindex RET [^gmn][a-z]+-[a-z]+ RET (*) and M-x occur RET @vindex [^gmn] RET: ,---- | 23 matches for "@cindex [^gmn][a-z]+-[a-z]+" in buffer: gnus.texi | 1487:@cindex auto-save | 2700:@cindex to-address (*) | 2723:@cindex to-list (*) | 2777:@cindex broken-reply-to (*) | 2786:@cindex to-group (*) | 2812:@cindex auto-expire (*) | 2821:@cindex total-expire (*) | 2859:@cindex admin-address (*) | 2926:@cindex ignored-charset (*) | 2934:@cindex posting-style | 2953:@cindex post-method (*) |[...] `---- I will install your patch without these @cindex -> @vindex changes. Thanks for your contribution. Bye, Reiner. [1] For convenience, I include the patch once more: --=-=-= Content-Type: text/x-patch Content-Disposition: inline; filename=jouni-gnus-imap.texi.patch Index: texi/gnus.texi =================================================================== RCS file: /usr/local/cvsroot/gnus/texi/gnus.texi,v retrieving revision 7.168 diff -u -r7.168 gnus.texi --- texi/gnus.texi 5 Apr 2006 16:40:48 -0000 7.168 +++ texi/gnus.texi 6 Apr 2006 05:53:22 -0000 @@ -2825,6 +2825,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}. @@ -2833,6 +2834,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 @@ -2842,7 +2844,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 @@ -2852,7 +2854,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}. @@ -3462,6 +3464,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. @@ -3470,6 +3473,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}). @@ -3830,6 +3834,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}). @@ -10113,6 +10118,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. @@ -10121,6 +10127,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 @@ -14674,6 +14681,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 @@ -16628,6 +16636,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 @@ -16639,6 +16648,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 @@ -16664,6 +16677,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 @@ -16851,7 +16905,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 @@ -16870,6 +16924,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 @@ -19154,7 +19211,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 --=-=-= -- ,,, (o o) ---ooO-(_)-Ooo--- | PGP key available | http://rsteib.home.pages.de/ --=-=-=--