Subject: [imap5] Comments on draft-gulbrandsen-imap-move-01

From: Cyrus Daboo <[email-masked]>
Date: Thu, 31 May 2012 10:20:12 -0400

Hi,
Some comments on the move extension draft:

- §2: what is the problem with sequence MOVE and EXPUNGE? For what it is 
worth Mulberry has always preferred sequence over uids when online (it uses 
UID commands when doing disconnected play back). That said, mapping to uids 
is no big deal (and should not be a big deal for any other client that 
might use sequence in normal operation).

- §2: "atomically" - I would prefer not to use the term "atomic" given 
that we are allowing partial failures (i.e., some messages might not be 
moved, whilst others are). So in the first paragraph I suggest changing 
"atomically" to "using a single command".

- §3: This needs a 3501-like "formal" definition with Arguments:, 
Responses:, Results: etc. It should use the same text for describing 
preservation of flags (see note below) and internal date. We need to decide 
whether the \Recent flag is set like COPY (probably should be). Also, the 
[TRYCREATE] behavior from COPY should be re-used. Should probably note that 
this command is only valid in selected state (or include a comment to that 
effect in the formal syntax which 3501 does for the command-select syntax 
element).

- §3, ¶2: "UID EXPUNGE" - need a reference to the UIDPLUS extension.

- §3, ¶4: states that \Deleted must not be set in the target mailbox. But 
what if the messages being moved already had \Deleted set prior to the 
move? Shouldn't we just state that the flag/keywords prior to the move must 
be set on the messages in the target mailbox?

- §3: As already mentioned, EXPUNGE responses need to be present. Might be 
worth pointing out that there could be a * EXPUNGE for a message not being 
moved, but which got expunged in another session. Actually, more 
complicated is the case where a message being moved was expunged in another 
session - presumably that message is not moved? Yet it would get reported 
in a * EXPUNGE, but not be part of the COPYUID set.

- §3: Might want to make it clear that * FETCH FLAGS is NOT sent if moved 
messages have \Deleted added as part of the "internal" server 
implementation of move.

- §3: Example: change "@S:" to "S:".

- §3: COPYUID response in the argument is wrong - it should have three 
values: destination mailbox UIDVALIDITY, set of uids from source mailbox, 
set of uids in destination mailbox. Current example only shows one set of 
uids.

- §4: whilst no one may implement it, there still ought to be a reference 
to the interaction with ANNOTATE. ANNOTATE §4.6 has detailed text on the 
interaction with COPY and something similar is needed for MOVE.

- §6: "command" is not the right syntax element to extend. I would suggest 
defining a uidmove element and then use that to extend the 3501 uid element:

    uidmove =  "UID MOVE" SP set SP mailbox
    uid     =/ uidmove

-- 
Cyrus Daboo