[imapext] Review of draft-ietf-imapapnd-appendlimit-extension-00

Alexey Melnikov <alexey.melnikov@isode.com> Sun, 26 July 2015 14:53 UTC

Return-Path: <alexey.melnikov@isode.com>
X-Original-To: imapext@ietfa.amsl.com
Delivered-To: imapext@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id BF37A1A8A15 for <imapext@ietfa.amsl.com>; Sun, 26 Jul 2015 07:53:25 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.011
X-Spam-Level:
X-Spam-Status: No, score=-2.011 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, SPF_PASS=-0.001, T_RP_MATCHES_RCVD=-0.01] autolearn=ham
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id wcoiikv279SF for <imapext@ietfa.amsl.com>; Sun, 26 Jul 2015 07:53:24 -0700 (PDT)
Received: from statler.isode.com (statler.isode.com [217.34.220.151]) by ietfa.amsl.com (Postfix) with ESMTP id 27DB71A8A06 for <imapext@ietf.org>; Sun, 26 Jul 2015 07:53:24 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; t=1437922403; d=isode.com; s=selector; i=@isode.com; bh=YLnP7MonSMq2w62M4FRwVVlrrvO4LM5H2j4eTPZx+WA=; h=From:Sender:Reply-To:Subject:Date:Message-ID:To:Cc:MIME-Version: In-Reply-To:References:Content-Type:Content-Transfer-Encoding: Content-ID:Content-Description; b=ITk33NSWgOGC55EUHLrUw4JETVlfYWbp/8MuhE7JdQhX2gM7vV2NOVCyQKDJfCZYyzRbzP t6g5ZCKlUELoUmTRd/vjLhKS6fq8ExYqCjHKmb7z1hsduMA8XFzPHo+h8Ni+4Q/WNkHuNO Au2u2QzF4D7vVvHe2iGdseHcIiNHcVY=;
Received: from [192.168.0.5] (cpc5-nmal20-2-0-cust24.19-2.cable.virginm.net [92.234.84.25]) by statler.isode.com (submission channel) via TCP with ESMTPSA id <VbT0XwB-WKy4@statler.isode.com>; Sun, 26 Jul 2015 15:53:22 +0100
To: IMAPAPND WG <imapext@ietf.org>
From: Alexey Melnikov <alexey.melnikov@isode.com>
X-Enigmail-Draft-Status: N1110
Message-ID: <55B4F457.2050608@isode.com>
Date: Sun, 26 Jul 2015 15:53:11 +0100
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:38.0) Gecko/20100101 Thunderbird/38.0.1
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-transfer-encoding: quoted-printable
Archived-At: <http://mailarchive.ietf.org/arch/msg/imapext/zjNB7fER2VOsNNKEmhySsk-_W0k>
Subject: [imapext] Review of draft-ietf-imapapnd-appendlimit-extension-00
X-BeenThere: imapext@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: Discussion of IMAP extensions <imapext.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/imapext>, <mailto:imapext-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/imapext/>
List-Post: <mailto:imapext@ietf.org>
List-Help: <mailto:imapext-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/imapext>, <mailto:imapext-request@ietf.org?subject=subscribe>
X-List-Received-Date: Sun, 26 Jul 2015 14:53:25 -0000

Hi,
SM asked me to review the document, so I reread everything for the first
time in a couple of months. Here are my comments:


> 2. APPENDLIMIT Extension
> 
> An IMAP server that supports APPENDLIMIT advertises this by including
> the word APPENDLIMIT in its capability list.  IMAP server shall publish
> the supported mail upload size as part of CAPABILITY response.

As per the recent discussion, the above text should be amended to make
it clear that both "APPENDLIMIT" and "APPENDLIMIT=<value>" can be
advertised. As traditionally IMAP uses exact match for capabilities,
"APPENDLIMIT=..." is not going to work for a client that looks for exact
match with "APPENDLIMIT".

> The
> advertised upload limit is common across the mailboxes, but client
> can still issue SELECT/EXAMINE or LIST command to get the mailbox
> specific upload limit set by the IMAP server.  In this case,
> APPENDLIMIT value obtained as part of SELECT/EXAMINE or LIST command
> takes precedence over the value returned as part of CAPABILITY
> response.

 [snip]

> 3. Mailbox specific APPENDLIMIT
> 
> IMAP server can still have mailbox specific APPENDLIMIT restriction,
> which may not be advertised as part of CAPABILITY response.  In this
> case, client can issue SELECT/EXAMINE command to get the per mailbox
> specific limit set by the server.  Similarly, if client wish to know
> the mailbox specific limit in authenticated state, can be done by
> issuing the LIST command in combination with STATUS command.

I think you should clarify here that a standalone STATUS command can
also be used.

> 3.1 SELECT response
> 
> Client can get the per mailbox append limit by issuing the SELECT/
> EXAMINE command.  APPENDLIMIT size to this mailbox is obtained as part
> of untagged OK response.  In this case, this APPENDLIMIT value will
> supersede the value received as part of CAPABILITY response.  If no
> per-mailbox APPENDLIMIT is specified for a folder, but the server did
> specify a common APPENDLIMIT in the CAPABILITY response, then the
> common APPENDLIMIT applies to that folder.
> 
> C: t2 SELECT INBOX
> S: * 172 EXISTS
> S: * OK [APPENDLIMIT 257890] Maximum upload limit
> S: [...]
> S: t2 OK [READ-WRITE] SELECT completed

After Chris Newman's comment that a new SELECT/EXAMINE response code
going to waste lots of bandwidth as most of the time it would be
returned and the client is not going to care, I am wondering again if we
should remove the SELECT response. But I don't have strong feelings on this.

> In the above example, APPENDLIMIT represents the maximum upload size for
> this mailbox.
> 
> OK [APPENDLIMIT <n>] Maximum upload limit for this mailbox, in bytes.
>                      Refer to section 5 for more information.  If this
>                      is missing, the client can always honour the
>                      value received as part of CAPABILITY response.

It occurred to me that this response code can also be returned in a NO
response on a failed APPEND. It might be worth saying that. (This would
cover a slightly different case from TOOBIG response code.)

> 3.2 LIST response
> 
> IMAP client can get the mailbox specific APPENDLIMIT in authenticated
> state, where it do not need to issue SELECT/EXAMINE command.  LIST
> command in combination with STATUS command can be issued to get the per
> mailbox specific APPENDLIMIT set by the server. 

> Refer RFC 5819 for the
> usage of LIST command in combination with STATUS command.  Note that a
> server implementing this extension, is syntactically compatible with
> RFC 5819, however support for RFC 5258 or RFC 5819 is not required,
> when implementing this extension.

After the discussion with Jamie I am wondering if we have to require use
of extended LIST with the new APPENDLIMIT STATUS item. Maybe we can just
require implementation of the APPENDLIMIT STATUS item, and
STATUS-in-LIST will take care of this, if also advertised?

> 5. Formal syntax
> 
> The following syntax specification uses the Augmented Backus-Naur
> Form (ABNF) notation as specified in [RFC5234] including the core
> rules in Appendix B.1.  [RFC3501] defines the non-terminals
> "capability", "resp-text-code" and "status-att".
> Except as noted otherwise, all alphabetic characters are case-
> insensitive.  The use of upper or lower case characters to define
> token strings is for editorial clarity only.  Implementations MUST
> accept these strings in a case-insensitive fashion.
>     
> appendlimit-cap = "APPENDLIMIT" ["=" append-limit-value]
> capability /= appendlimit-cap
> 
> appendlimit-respcode = "APPENDLIMIT" SP append-limit-value
> resp-text-code /= appendlimit-respcode
> 
> append-limit-value = 1*DIGIT
>                      ; Unsigned 64-bit integer
>                      ; (0 <= n < 18,446,744,073,709,551,615)

After thinking more about this, I think we should revert to 32 bit
limits, because if a message is >= 2**32 octets, FETCH RFC822.SIZE would
be unable to return the message size, so other things would break.

So I think we should have a separate extension that takes care of 64bit
message/body part sizes.

Best Regards,
Alexey