Re: Communciator 4.02 Imap EXPUNGE problem

"Barry Leiba, Multimedia Messaging" <leiba@watson.ibm.com> Tue, 26 August 1997 18:05 UTC

Received: from cnri by ietf.org id aa11559; 26 Aug 97 14:05 EDT
Received: from lists.u.washington.edu (root@lists.u.washington.edu [140.142.56.13]) by cnri.reston.va.us (8.8.5/8.7.3) with ESMTPid OAA07276 for <ietf-archive@CNRI.Reston.VA.US>; Tue, 26 Aug 1997 14:08:30 -0400 (EDT)
Received: from host (server@lists.u.washington.edu [140.142.56.13]) by lists.u.washington.edu (8.8.4+UW97.07/8.8.4+UW97.05) with SMTP id KAA31568; Tue, 26 Aug 1997 10:55:55 -0700
Received: from mx5.u.washington.edu (mx5.u.washington.edu [140.142.32.6]) by lists.u.washington.edu (8.8.4+UW97.07/8.8.4+UW97.05) with ESMTP id KAA24646 for <imap@lists.u.washington.edu>; Tue, 26 Aug 1997 10:55:19 -0700
Received: from mx1.cac.washington.edu (mx1.cac.washington.edu [140.142.32.1]) by mx5.u.washington.edu (8.8.4+UW97.07/8.8.4+UW97.04) with ESMTP id KAA07157 for <imap@u.washington.edu>; Tue, 26 Aug 1997 10:55:17 -0700
Received: from igw3.watson.ibm.com (igw3.watson.ibm.com [198.81.209.18]) by mx1.cac.washington.edu (8.8.4+UW97.07/8.8.4+UW97.04) with ESMTP id KAA23880 for <imap@cac.washington.edu>; Tue, 26 Aug 1997 10:55:14 -0700
Received: from mailhub2.watson.ibm.com (mailhub2.watson.ibm.com [9.2.250.15]) by igw3.watson.ibm.com (8.8.7/07-11-97) with ESMTP id NAA14274 for <imap@cac.washington.edu>; Tue, 26 Aug 1997 13:48:34 -0400
Received: from uranus.diz.watson.ibm.com (uranus.diz.watson.ibm.com [9.2.35.85]) by mailhub2.watson.ibm.com (8.8.2/07-14-97) with SMTP id NAA16467 for <imap@cac.washington.edu>; Tue, 26 Aug 1997 13:55:12 -0400
Message-Id: <SIMEON.9708261337.F@uranus.diz.watson.ibm.com>
Date: Tue, 26 Aug 1997 13:54:37 -0400
Sender: IMAP-owner@u.washington.edu
Precedence: bulk
From: "Barry Leiba, Multimedia Messaging" <leiba@watson.ibm.com>
To: imap <imap@cac.washington.edu>
Subject: Re: Communciator 4.02 Imap EXPUNGE problem
In-Reply-To: <MailManager.872609987.19274.mrc@Tomobiki-Cho.CAC.Washington.EDU>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; CHARSET="US-ASCII"
X-Authentication: none
X-Listprocessor-Version: 8.1 beta -- ListProcessor(tm) by CREN

We're starting to get closer to agreement.  :-)

On Tue, 26 Aug 97 08:39:47 -0700 Mark Crispin <MRC@cac.washington.edu> 
wrote:
> However, RFC 2060 doesn't quite state that as strongly as you suggest.

OK; I accept that.  I think, though, that most implementers *think of* IMAP 
as a protocol that allows simultaneous access to the same mailbox, and that 
it would be useful to state explicitly that some servers, under some 
conditions, do not, and that a client should not assume such capability.

> The bottom line is that there is an official documented mechanism to have
> multiple operations in progress on the mailbox, and that mechanism should be
> used.  Kludges just get you into trouble.

I most certainly agree with this.

> This suggests to me that you do not understand the data model behind IMAP;

No, I do understand it, but I contend that it's muddy.  First, the spec 
specifically refers to some things as "required responses".  Second, some 
responses (such as those to SEARCH) are very clearly attached to the 
commands that generated them.  Third, the lack of tags on the responses 
makes other things (like the indication that a message has gone away) more
difficult than it should be.  But never mind; this isn't central to the 
point at hand.

> > Perhaps we should add a CAPABILITY token for this -- some token that the
> > server returns in the CAPABILITY response that indicates its support for
> > multiple concurrent commands in the same session.
> 
> My contention is that a client that wants to use this facility should always
> use it, unconditionally.  This will work with either type of server.

Fair enough in the case we're talking about, but there are other cases when 
a client will want to know.  For instance, maybe I want to do a "FETCH 
1:50 ALL" to populate the screen, wait for the response, and then "FETCH 
51:* ALL" to let the rest of the data come through in the background.  But 
I still want to be able to get a "FETCH 5 BODY[1]" through if the user 
wants to read an item.  If I know that the server supports the parallelism, 
I can do that.  If not, I can't do it safely.  What you're saying (and I 
understand why) is that all clients have to be coded to assume that the 
server doesn't support this.  What I'm saying is that that means that in 
some cases I can't do certain optimizing that I might want to do.

> > A *message* can disappear, but a sequence number can't.
> 
> Not true.  If you expunge 100 messages from a 150 message mailbox, then
> sequence numbers 51:150 are history.

Only after the EXPUNGE responses come back.  But if I send a FETCH before 
then, the message numbers are still valid, and if I'm fetching data for a 
message that hasn't been expunged (which will be the case here if the UI is 
reasonably), its old message number is fine.

> I'd be rather disappointed in a database back end that had a slow EXPUNGE!
> That would lose 95% of the advantage of a database back end.

I can't agree with this: expunging hundreds of messages may take a 
significant amount of time, no matter what method you use for it -- even if 
for no other reason than that the server has to build and send all the 
EXPUNGE responses, in addition to whatever work is involved with 
invalidating the database records.

> I guess the problem I have with this is that it states the obvious!

Yes, and I think it doesn't; I think it's not obvious until we have a 
discussion like this.  Remember that you've been doing this for a long time 
and you have more than one implementation behind you.  Someone getting into 
this for the first time will reasonably assume that she can do these sorts 
of things, unless we say otherwise and point out why not.

> It certainly does not belong in the specification, which is large and 

Oh, absolutely.  I'm suggesting an "Implementer's Guide".  Perhaps I'll try 
putting together a draft of one, and let people beat on it and add their 
favourite stumbles.  I think such a document will be useful -- because if 
this stuff were really all as obvious as you say, not so many people would 
be stumbling over it.

Barry Leiba, Multimedia Messaging  (leiba@watson.ibm.com)
http://www.research.ibm.com/people/l/leiba