Re: [Extra] AD Review of draft-ietf-extra-imap4rev2

Alexey Melnikov <alexey.melnikov@isode.com> Tue, 05 January 2021 13:56 UTC

Return-Path: <alexey.melnikov@isode.com>
X-Original-To: extra@ietfa.amsl.com
Delivered-To: extra@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id D11D43A0EC4 for <extra@ietfa.amsl.com>; Tue, 5 Jan 2021 05:56:18 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.35
X-Spam-Level:
X-Spam-Status: No, score=-2.35 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, HTML_MESSAGE=0.001, NICE_REPLY_A=-0.262, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_KAM_HTML_FONT_INVALID=0.01, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (1024-bit key) header.d=isode.com
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 4KREdqexBaLV for <extra@ietfa.amsl.com>; Tue, 5 Jan 2021 05:56:16 -0800 (PST)
Received: from statler.isode.com (Statler.isode.com [62.232.206.189]) by ietfa.amsl.com (Postfix) with ESMTP id 7B3133A0EDA for <extra@ietf.org>; Tue, 5 Jan 2021 05:56:16 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; t=1609854975; d=isode.com; s=june2016; i=@isode.com; bh=tRk6DNxWtYB2bb9K51xJvypOhIhToOIWhJfCqZc1e38=; 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=M7kWJfXwfkL+9JGFMYgvonrGg/Mw68xjHIxMYRjIOOA5X8WVHK0qWQhH/fVNGqYh583JuF QxnuQViVBNLVT/ngNsOZcLX7LLbmbRX6rOVOIHoBtEPKeKw2MjXB773404+/f47kiqhZ+k R0J38vj+c8n0qpbeonC0B/G1DpSdlWQ=;
Received: from [172.27.255.49] (connect.isode.net [172.20.0.72]) by statler.isode.com (submission channel) via TCP with ESMTPSA id <X=Rv=gBqmsNd@statler.isode.com>; Tue, 5 Jan 2021 13:56:15 +0000
To: "Murray S. Kucherawy" <superuser@gmail.com>
Cc: extra@ietf.org
References: <CAL0qLwaLa+PuGWRrKTbpmDa_SWKT9ZQUEQ9dsPgXfUmTzcYAYw@mail.gmail.com> <bb662e64-626c-914b-de59-f85ef18ee5e3@isode.com> <CAL0qLwYXht2r_83PCZo6+tJUJAoYCd0EoGyCHm6BQEQ=YhWT-A@mail.gmail.com>
From: Alexey Melnikov <alexey.melnikov@isode.com>
Message-ID: <5bd4c4e9-4414-e9b5-48f4-520f3185239b@isode.com>
Date: Tue, 05 Jan 2021 13:56:14 +0000
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:78.0) Gecko/20100101 Thunderbird/78.5.0
In-Reply-To: <CAL0qLwYXht2r_83PCZo6+tJUJAoYCd0EoGyCHm6BQEQ=YhWT-A@mail.gmail.com>
MIME-Version: 1.0
Content-Type: multipart/alternative; boundary="------------E2DEF9962040B409C0E811F1"
Content-Language: en-GB
Archived-At: <https://mailarchive.ietf.org/arch/msg/extra/60JNwzTvB7doaKiGJtLLhn8O_yY>
Subject: Re: [Extra] AD Review of draft-ietf-extra-imap4rev2
X-BeenThere: extra@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Email mailstore and eXtensions To Revise or Amend <extra.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/extra>, <mailto:extra-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/extra/>
List-Post: <mailto:extra@ietf.org>
List-Help: <mailto:extra-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/extra>, <mailto:extra-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 05 Jan 2021 13:56:19 -0000

Hi Murray,

On 04/01/2021 17:21, Murray S. Kucherawy wrote:
> On Mon, Jan 4, 2021 at 6:05 AM Alexey Melnikov 
> <alexey.melnikov@isode.com <mailto:alexey.melnikov@isode.com>> wrote:
>
>>
>>     Section 2.2.1
>>
>>       Clients MUST follow the syntax outlined in this specification
>>
>>        strictly.  It is a syntax error to send a command with missing or
>>
>>        extraneous spaces or arguments.
>>
>>
>>     It seems unnecessary to say this in a standards track document. 
>>     There’s a similar paragraph in Section 2.2.2.
>>
>     I think the text is there due to various bugs in implementations,
>     so I would rather keep it as is.
>
> I would use "need to" instead of "MUST" here.  It's otherwise a bit 
> hand-wavy for use of BCP 14 language.  But I'll leave this to the WG.
Barry replied to this and I think you are Ok with MUST staying as is.
>
>>     Section 2.2.2
>>
>>        In the case of certain server data, the data MUST be recorded.
>>
>>
>>     This seems misplaced; the MUST should be in the descriptions for
>>     the specific cases where this requirement exists.
>>
>     I think this text is actually Ok where it is, as it warns/requires
>     the client to implement proper cashing. It is more a statement of
>     intent.
>
>     If you think use of RFC 2119 language here is not right, we can
>     discuss that.
>
> Similar to the previous case, I suggest "needs to" here, and then 
> wherever you talk about certain server data, that's where the BCP 14 
> language should go.
The latter would be difficult, because there are several responses like 
EXISTS and EXPUNGE that needs to be remembered by clients, but this list 
is not exhaustive.
>
> I also didn't think you meant caching when you said "recorded"; I took 
> that to refer to logging.  Possibly something else to clarify.

So this paragraph says:

    Server data SHOULD
    be recorded, so that the client can reference its recorded copy
    rather than sending a command to the server to request the data.  In
    the case of certain server data, the data MUST be recorded.

I think caching is intended here. Is "remembered" better that "recorded" 
above?

>>
>>     The text surrounding $Phishing goes further into human factors
>>     work than other working groups have felt appropriate.  (DKIM and
>>     DMARC come to mind.)  Are we sure that belongs here?
>>
>     Yes, considering this is a security consideration, a good example
>     of UI is necessary here.
>
>
> I'm curious to see if anyone else raises this given how much energy 
> those other WGs used in the past to resist providing any UI advice at all.
There are obvious counter examples in recent history, like TLS and OAUTH WG.

>>     Should this section mention whether the system flags are
>>     permanent?  \Seen, for example, is clearly a system flag, but it
>>     could also be a session flag.
>>
>     No, implementations differ and sometimes even \Seen is not
>     permanent. (The last sentence of the first paragraph already says
>     "A flag of either type can also be permanent or session-only.")
>
> Yep, that's what caused me to make the comment.
Basically I don't think we can say anything useful about system flags in 
this respect. They may or may not be permanent, same as keywords. So I 
think no change for this one.
>
>
>>     Section 2.3.3
>>
>>
>>     All the SHOULDs in here make me wonder when an implementor might
>>     legitimately choose to do something different.  Or maybe instead
>>     of “SHOULD be”, just say “is”?
>>
>     I think for delivery by SMTP, I agree. For COPY/MOVE there is
>     actually a posibility that some mailstores wouldn't preserve
>     original values, so this is asking them to really think hard about
>     preserving it.
>
>     And for APPEND, this is a similar requirement on MUAs to preserve
>     this information. (Some don't and it is very awkward.)
>
>     So I prefer to keep the last 2 SHOULDs.
>
> I guess I'm wondering if those implementations chose not to for some 
> reason you think is valid, or was it purely an oversight on their part 
> and you're using SHOULD to grandfather them in?  Would it be fine to 
> say MUST here and just say that an implementation not doing this is 
> therefore not compliant with rev2?

I think I already gave an example of limited mailstores that are not 
able to preserve some information on COPY/MOVE. (For example they might 
be gatewaying data to other more restrictive formats). I don't think we 
want to make them non compliant at this time.

In regards to clients preserving internaldates on APPEND. If they use 
APPEND to migrate/copy data between 2 different IMAP servers or between 
a local and remote mailstore, they must preserve it. But APPEND can also 
be used for other creating modifications, so again I think SHOULD is 
fine as is.

>>
>>     Section 6.1.2
>>
>>
>>     This section says NOOP can be used to reset the autologout timer
>>     (which seems definite), but Section 5.1.4 says any command only
>>     SHOULD reset the timer.  Do these line up?
>>
>     (I assume you meant 5.4)
>
>     Well spotted. I changed text in 5.4 to readL
>
>      The receipt of any command from the client during that interval
>     resets the autologout timer.
>
> Why would a command deviate from the SHOULD and not reset the timer?
There is no reason I can think of, so the new text I suggested above no 
longer uses "SHOULD". I think that addresses your issue. Do you disagree?

>      [snip]
>
>>     This section should make it more explicit, up front, that the
>>     response names the extensions that were successfully enabled. 
>>     Right now the lede is buried in about the 7th paragraph.
>     I didn't move the paragraph that talks about ENABLED response, but
>     I clarified it.
>
>
> It seems like a pretty important aspect of the response, so I thought 
> it was strange that it wasn't presented until so late in the section.  
> Your call though.
I think the new text is clear, as it explains what appears in the 
ENABLED response the first time ENABLED response is mentioned. So have a 
look at -23 and let me know.
>
>>
>>     It’s weird to say “renaming INBOX is permitted”
>>
>     This is saying that the server wouldn't return "BAD" to it.
>>
>>     followed immediately by “some servers don’t let you do this”.
>>
>     But this is saying that the server can still return "NO".
>>
>>     Which is the standard for this version of IMAP?  If it’s an
>>     implementation choice, I think that’s what this should say.
>>
>     Yes, it is.
>
>
> That's fine, then, if this is clarified.  I just found that bit to be 
> self-contradicting as written in -22.

I think IMAP is a bit subtle in places, as NO and BAD have very 
different semantics. "BAD" means that the client shouldn't have tried 
this. "NO" means some other reason why this fails, which can be entirely 
server specific.

Anyway, I clarified this.


Best Regards,

Alexey