Re: [lemonade] WGLC NOTIFY

Alexey Melnikov <alexey.melnikov@isode.com> Wed, 04 June 2008 10:28 UTC

Return-Path: <lemonade-bounces@ietf.org>
X-Original-To: lemonade-archive@optimus.ietf.org
Delivered-To: ietfarch-lemonade-archive@core3.amsl.com
Received: from [127.0.0.1] (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 000E83A6C6C; Wed, 4 Jun 2008 03:28:26 -0700 (PDT)
X-Original-To: lemonade@core3.amsl.com
Delivered-To: lemonade@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 417673A6C5A for <lemonade@core3.amsl.com>; Wed, 4 Jun 2008 03:28:26 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.103
X-Spam-Level:
X-Spam-Status: No, score=-2.103 tagged_above=-999 required=5 tests=[AWL=0.496, BAYES_00=-2.599]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id ZwCWcZ3mCdhZ for <lemonade@core3.amsl.com>; Wed, 4 Jun 2008 03:28:24 -0700 (PDT)
Received: from rufus.isode.com (rufus.isode.com [62.3.217.251]) by core3.amsl.com (Postfix) with ESMTP id 9151C3A6C65 for <lemonade@ietf.org>; Wed, 4 Jun 2008 03:24:47 -0700 (PDT)
Received: from [172.16.2.192] (shiny.isode.com [62.3.217.250]) by rufus.isode.com (submission channel) via TCP with ESMTPA id <SEZtcgBZBC1j@rufus.isode.com>; Wed, 4 Jun 2008 11:24:50 +0100
Message-ID: <484657A5.5070202@isode.com>
Date: Wed, 04 Jun 2008 09:51:49 +0100
From: Alexey Melnikov <alexey.melnikov@isode.com>
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.12) Gecko/20050915
X-Accept-Language: en-us, en
To: Timo Sirainen <tss@iki.fi>
References: <C433D277.1AB18%eburger@bea.com> <8B9B8F32-8DEF-40B9-992E-9337FB7AE344@standardstrack.com> <1210951366.9518.654.camel@hurina> <48312F7D.8090103@isode.com> <1211191304.9518.755.camel@hurina> <4835D000.4080808@isode.com> <1211745339.3904.166.camel@hurina> <483BAB35.2080806@isode.com> <1B7D968F-7A77-40FC-AFD6-ADF3C2826822@iki.fi>
In-Reply-To: <1B7D968F-7A77-40FC-AFD6-ADF3C2826822@iki.fi>
MIME-Version: 1.0
Cc: lemonade <lemonade@ietf.org>
Subject: Re: [lemonade] WGLC NOTIFY
X-BeenThere: lemonade@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: Enhancements to Internet email to support diverse service enivronments <lemonade.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/lemonade>, <mailto:lemonade-request@ietf.org?subject=unsubscribe>
List-Archive: <https://www.ietf.org/mailman/private/lemonade>
List-Post: <mailto:lemonade@ietf.org>
List-Help: <mailto:lemonade-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/lemonade>, <mailto:lemonade-request@ietf.org?subject=subscribe>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: lemonade-bounces@ietf.org
Errors-To: lemonade-bounces@ietf.org

Hi Timo,

Timo Sirainen wrote:

> On May 27, 2008, at 9:33 AM, Alexey Melnikov wrote:
>
>> Timo Sirainen wrote:
>>
>>> One more thing I thought of:
>>>
>>>> If IDLE (as well as this extension) is supported, while processing
>>>>    IDLE the server MUST send the same events as instructed by the
>>>>    client using the NOTIFY command.
>>>
>>> Does this mean EXPUNGEs must not be sent if MessageExpunge isn't
>>> included in NOTIFY SET?
>>
>> Correct.
>>
>>> That would make it impossible to create clients
>>> that use MSNs and want to be immediately notified of EXPUNGEs (while
>>> IDLEing).
>>
>> Correct. The client can either chose not to use NOTIFY at all (in which
>> case it will get expunges with MSNs), or it can chose to specify both
>> MessageNew & MessageExpunge (they are tied together as per section 5),
>> in which case it will get back UIDs.
>
This statement was incorrect (and I think your statement on which I 
commented is also incorrect). When MessageExpunge is requested, the 
server will either send EXPUNGE (with message numbers) or VANISHED (with 
UIDs). VANISHED is only sent if QRESYNC was also enabled.

Having said that, if the client specifies MessageExpunge and QRESYNC was 
not enabled, it will get MSNs immediately.

> "get back UIDs"? Do you mean VANISHED? Doesn't that depend on the 
> server if it or EXPUNGE is sent?
>
> What happens if NOTIFY SET is used, but SELECTED isn't specified? I 
> can't seem to find this from the draft. I'm guessing it'll use the 
> defaults? Or does it use the first other matching rule?

Good question. I think this needs to be clarified.

> Anyway I think this is too restrictive if using NOTIFY basically 
> requires the client to drop using MSNs.

After rereading some portions of draft-ietf-lemonade-imap-notify, I 
would like to correct this: a client using NOTIFY can't use MSNs in 
commands it is issuing. However it will still be using MSNs to process 
server responses.

> Some use cases for clients which want to keep using MSNs and IDLE:
>
> 1. Client just wants to use NOTIFY to see changes in other mailboxes, 
> so it specifies NOTIFY SET (personal (messagenew messageexpunge)).

I assume the client still wants to immediately see changes in the 
current mailbox? In this case it should also include (selected 
(MessageNew MessageExpunge)) and things should work as before.

> 2. Client wants to use NOTIFY to ignore annotation changes, so it uses 
> NOTIFY SET (selected (FlagChange)).

FlagChange is tied to MessageNew and MessageExpunge, so this should 
really be "NOTIFY SET (selected (FlagChange MessageNew MessageExpunge))"

> EXISTS and EXPUNGEs are still sent in command replies, but not during 
> IDLE?

They will be sent in IDLE as well, as per my previous comment.

> 3. Client wants to get pushed information about new messages' contents 
> (MessageNew (uid ..)), but it still wants to keep using MSNs.

Can you elaborate on this use case?
Your MessageNew already contains "uid", so clearly the client is already 
capable of using UIDs anyway.

> Since MessageNew and MessageExpunge must specified together, this is 
> impossible .
>
> Is there even any other reason for client to even run IDLE unless it 
> wants to keep using MSNs + see EXPUNGEs immediately? I think IDLE 
> could be specified as sending EXPUNGEs immediately regardless of 
> whether MessagExpunge has been specified.

I would rather not special case IDLE, so that we can keep server logic 
consistent.
In light of my corrected statement above, can you double check that 
there is any issue?

> 3. is also problematic. Is it really necessary to give MessageExpunge 
> if MessageNew is given? The (well-behaving) servers already have to 
> handle the case when a message is expunged and a new message arrives 
> during FETCH/STORE/SEARCH command. The client is notified about the 
> new message but not about the expunge.

True.
The reason why we have MessageExpunge and MessageNew tied together is 
because representative of a certain company kept moaning that he can't 
implement them separately. The WG couldn't find any use cases where this 
would make a difference for a client.

>> It is possible that some servers that support IDLE don't send
>> MessageExpunge events while idling, but I haven't seen any such server.
>> We could mandate that all servers advertising the NOTIFY capability send
>> MessageExpunge during IDLE if NOTIFY wasn't issued on the connection?!
>
> I don't think that really matters since well-behaving servers already 
> do that. I'm more concerned that well-behaving servers aren't allowed 
> to do that when NOTIFY is used..



_______________________________________________
lemonade mailing list
lemonade@ietf.org
https://www.ietf.org/mailman/listinfo/lemonade
Supplemental Web Site:
http://www.standardstrack.com/ietf/lemonade