Re: [Extra] I-D Action: draft-ietf-extra-sieve-special-use-01.txt

Stephan Bosch <stephan.bosch@dovecot.fi> Wed, 18 July 2018 20:58 UTC

Return-Path: <stephan.bosch@dovecot.fi>
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 B84021271FF for <extra@ietfa.amsl.com>; Wed, 18 Jul 2018 13:58:37 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -4.2
X-Spam-Level:
X-Spam-Status: No, score=-4.2 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RCVD_IN_DNSWL_MED=-2.3, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
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 YYh6n6mz-qHF for <extra@ietfa.amsl.com>; Wed, 18 Jul 2018 13:58:35 -0700 (PDT)
Received: from mail.dovecot.fi (wursti.dovecot.fi [94.237.32.243]) by ietfa.amsl.com (Postfix) with ESMTP id 967C7130EBE for <extra@ietf.org>; Wed, 18 Jul 2018 13:58:34 -0700 (PDT)
Received: from [10.168.3.2] (klara.student.utwente.nl [130.89.162.218]) by mail.dovecot.fi (Postfix) with ESMTPSA id 58F702B3CCE; Wed, 18 Jul 2018 23:58:28 +0300 (EEST)
To: Ned Freed <ned.freed@mrochek.com>
Cc: extra@ietf.org, Bron Gondwana <brong@fastmailteam.com>
References: <151533655607.10858.793231788332492256@ietfa.amsl.com> <ce56fc8f-366a-8e1e-2f00-1ed22da28d15@dovecot.fi> <01QNLYA7BLVQ000051@mauve.mrochek.com> <83ddcadc-b756-91c1-3664-81955cd8f0d8@dovecot.fi> <01QTO3THVZ5I00AI1F@mauve.mrochek.com>
From: Stephan Bosch <stephan.bosch@dovecot.fi>
Message-ID: <53350c64-d021-7f17-86b8-f1b118791cf5@dovecot.fi>
Date: Wed, 18 Jul 2018 22:58:09 +0200
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.9.1
MIME-Version: 1.0
In-Reply-To: <01QTO3THVZ5I00AI1F@mauve.mrochek.com>
Content-Type: text/plain; charset="utf-8"; format="flowed"
Content-Transfer-Encoding: 8bit
Content-Language: en-US
Archived-At: <https://mailarchive.ietf.org/arch/msg/extra/ceCj8o5alYbxxY4au4Kxmj4QbBs>
Subject: Re: [Extra] I-D Action: draft-ietf-extra-sieve-special-use-01.txt
X-BeenThere: extra@ietf.org
X-Mailman-Version: 2.1.27
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: Wed, 18 Jul 2018 20:58:38 -0000

Hi Ned,


Op 13/06/2018 om 17:40 schreef Ned Freed:
>> > This, incidentially, is one of those places where providing the 
>> actual IMAP
>> > commands will be especially valuable: Pointing out that you should 
>> use the
>> > NAMESPACE extension and if it isn't present, fallback to LIST "" 
>> would be very
>> > helpful.
>
>> Here's my initial attempt at addressing this point (separate branch in
>> Github):
>
>> https://github.com/ietfextra/draft-ietf-extra-sieve-special-use/commit/035a1af6137a383089c8d54cd733238dc2dfebda 
>>
>
>> This adds an IMAP example for specialuse_exists.
>
>> What do you think?
>
> The first step seems fine:
>
>   C: A01 NAMESPACE
>   S: * NAMESPACE (("INBOX/" "/")("Archive/" "/")) NIL (("Public/" "/"))
>   S: A01 OK NAMESPACE command completed
>
> In the next step:
>
>    Subsequently, when no particular mailbox is of interest (i.e., the
>    "specialuse_exists" test has no mailbox argument), the client lists
>    all mailboxes with special-use flags in the two returned personal
>    namespaces:
>
>    C: A02 LIST (SPECIAL-USE) "" ("INBOX/*" "Archive/*") RETURN 
> (SPECIAL-USE)
>    S: * LIST (\Drafts) "/" INBOX/Drafts
>    S: * LIST (\Trash) "/" INBOX/Trash
>    S: * LIST (\Sent) "/" INBOX/Sent
>    S: * LIST (\Archive) "/" Archive/Default
>
> It should be noted that this depends on extended list being available.

True. I thought LIST-EXTENDED is pretty much required for SPECIAL-USE, 
but the specification doesn't actually mention anything like that. Is 
there another way to obtain information on which mailboxes have a 
particular special-use flag assigned?

> The final step is:
>
>    C: A03 SELECT Archive/Default
>    S: * FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
>    S: * OK [PERMANENTFLAGS (\Answered \Deleted \Seen \Draft \*)] Flags 
> permitted.
>    S: * 11211 EXISTS
>    S: * 3 RECENT
>    S: * OK [UIDVALIDITY 1526903163] UIDs valid
>    S: * OK [UIDNEXT 11278] Predicted next UID
>    S: A03 OK [READ-WRITE] SELECT command completed
>
> There are several issues here.
>
> First, if you're going to use SELECT it's probably worth noting that 
> since
> inclusion of [READ-WRITE] for writable mailboxes is a SHOULD in RFC 
> 3501 while
> inclusion of [READ-ONLY] for non-writable is a MUST, a writability 
> check really
> needs to based on the absence of [READ-ONLY]. (RFC 5490 3.1.a appears 
> incorrect
> to me in this regard - should I file an errata?)

Agreed.

> However, I think use of SELECT for this purpose is problematic: It's
> potentially expensive and worse, may cause undesireable state changes. 
> Why
> not use the MYRIGHTS command to obtain the access rights (and check 
> for "p" or
> "i") without having to select the mailbox?

Sure, if the ACL capability is available. I can mention that. If it is 
not available, there is really no alternative to using SELECT, right?

> And as a bonus, if it's available you could use the just-standardized
> LIST-MYRIGHTS extension to piggyback getting the rights while getting 
> the list
> of special-use mailboxes.

Sure.

> More generally, this is why documenting the things necessary to 
> implement the
> necessary semantics of an extension is helpful - there may be 
> optimizations and
> concerns that should be called out lest implementors miss them.
>
> It also helps clarify overall implementation difficulty. And while this
> extension may be easy to implement in the Sieve-in-IMAP case, from the
> perspective of an MTA/MDA implementation, even if all of the steps can 
> be done
> efficiently, there's still the question of IMAP server availability 
> and the
> handling of temporary errors.
>

Yeah.

> All of which is roundabout way of saying I now think that we may want a
> capability for specialuse_exists that's separate from
> "special-use"/:specialuse. Or better still, since we already have the 
> "mailbox"
> capability for "mailbox access stuff", I think we should require the 
> presence
> of both "mailbox" and "special-use" capabilities in order to use
> specialuse_exists.

Can you clarify this point? I don't see how this leads to requiring the 
mailbox extension.

> I also reviewed the rest of the revised draft, and it's looking good. 
> My one
> remaining concern is with the handling of multiple mailboxes having the
> same special-use flag assigned. The draft currently says:
>
>   More than one mailbox in the user's personal namespace can have a
>   particular special-use flag assigned.  In case of such ambiguity, the
>   mailbox that is chosen for delivery is implementation-defined.
>   However, while the set of mailboxes to which the involved special-use
>   flags are assigned remains unchanged, implementations MUST ensure
>   that the mailbox choice is made consistently, so that the same
>   mailbox is used every time.  Conversely, the chosen mailbox MAY
>   change once the special-use flag assignments that are relevant for
>   the mailbox choice are changed (usually by user interaction).
>
> I don't see a way I can reasonably implement this MUST via IMAP unless 
> the IMAP server always returns the list of special-use mailboxes in 
> the same order.
> Sure, I can cache the user/special-use-attribute/actual-mailbox-list 
> tuple
> somewhere, but caches can always be lost. And mailbox metadata is (a)
> Potentially much too expensive and (b) Subject to the vagarities of user
> actions.
>
> I'm not happy about it, but I think this needs to become a SHOULD.

Ok. I am not too attached to the MUST anyway.

> Another possibility is to use the default mailbox name as a means of
> disambiguating multiple mailboxes with the same special-use attribute:
> If the default mailbox is one of these deliver to it preferentially,
> otherwise the behavior is implementation-defined. Not perfect, but it
> provides a bit more consistent behavior that's easily achievable.
>

Sounds like a good idea. I'll give this a closer look for the next revision.

> Aside from these issues, this draft looks good to go to me.

I still need to make an IMAP example for "fileinto :specialuse".

I should be able to work on this next week.

Regards,

STepham.