[lemonade] SUBMITTED keyword, Outbox and Sent folders, and CATENATE/BURL
Peter Coates <peter.coates@sun.com> Thu, 21 February 2008 21:50 UTC
Return-Path: <lemonade-bounces@ietf.org>
X-Original-To: ietfarch-lemonade-archive@core3.amsl.com
Delivered-To: ietfarch-lemonade-archive@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id E322B28CAB2; Thu, 21 Feb 2008 13:50:50 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: 0.502
X-Spam-Level:
X-Spam-Status: No, score=0.502 tagged_above=-999 required=5 tests=[AWL=-0.261, BAYES_00=-2.599, FH_RELAY_NODNS=1.451, HELO_MISMATCH_ORG=0.611, J_CHICKENPOX_36=0.6, J_CHICKENPOX_46=0.6, RDNS_NONE=0.1]
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 OvvMPPyuCGNd; Thu, 21 Feb 2008 13:50:45 -0800 (PST)
Received: from core3.amsl.com (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id A544028CA70; Thu, 21 Feb 2008 13:50:45 -0800 (PST)
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 9F1F528CA9F for <lemonade@core3.amsl.com>; Thu, 21 Feb 2008 13:50:43 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
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 RAMpm0KT0B4D for <lemonade@core3.amsl.com>; Thu, 21 Feb 2008 13:50:42 -0800 (PST)
Received: from brmea-mail-3.sun.com (brmea-mail-3.Sun.COM [192.18.98.34]) by core3.amsl.com (Postfix) with ESMTP id 0B92228CA45 for <lemonade@ietf.org>; Thu, 21 Feb 2008 13:50:38 -0800 (PST)
Received: from fe-amer-10.sun.com ([192.18.109.80]) by brmea-mail-3.sun.com (8.13.6+Sun/8.12.9) with ESMTP id m1LLoYPG000754 for <lemonade@ietf.org>; Thu, 21 Feb 2008 21:50:34 GMT
Received: from conversion-daemon.mail-amer.sun.com by mail-amer.sun.com (Sun Java System Messaging Server 6.2-8.04 (built Feb 28 2007)) id <0JWL00I01WQIW500@mail-amer.sun.com> (original mail from peter.coates@sun.com) for lemonade@ietf.org; Thu, 21 Feb 2008 14:50:34 -0700 (MST)
Received: from kluane ([199.247.229.42]) by mail-amer.sun.com (Sun Java System Messaging Server 6.2-8.04 (built Feb 28 2007)) with ESMTPSA id <0JWL00D5CZBQMHA0@mail-amer.sun.com> for lemonade@ietf.org; Thu, 21 Feb 2008 14:50:21 -0700 (MST)
Date: Thu, 21 Feb 2008 13:50:03 -0800
From: Peter Coates <peter.coates@sun.com>
To: lemonade@ietf.org
Message-id: <033901c874d3$bb7bbfb0$32733f10$%coates@sun.com>
MIME-version: 1.0
X-Mailer: Microsoft Office Outlook 12.0
Content-language: en-ca
Thread-index: Ach007b3OE7eCJLbToKvMBzDyqC3mQ==
Subject: [lemonade] SUBMITTED keyword, Outbox and Sent folders, and CATENATE/BURL
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: <http://www.ietf.org/mailman/listinfo/lemonade>, <mailto:lemonade-request@ietf.org?subject=unsubscribe>
List-Post: <mailto:lemonade@ietf.org>
List-Help: <mailto:lemonade-request@ietf.org?subject=help>
List-Subscribe: <http://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
Within IMAP, the "proper" way to mark a message as draft is to use the \draft flag. Similarly the way tentatively to delete a message is to use the \deleted flag. Many clients instead use "Drafts" and "Deleted" folders for this purpose. Other special purpose folders that are commonly used are "Outbox" and "Sent". And perhaps "Spam", but I do not want to go there for the moment. There are no "proper" IMAP ways to mark a message as "Sent" analogous to the \draft or \deleted flags, still less one meaning queued for submission, or being submitted. When I said the "Drafts", "Deleted", "Outbox", and "Sent" are commonly used folders, I overstate. Special folders are used for these four functions, but the names vary. This can and does cause both interoperability issues between clients, and confusion on the part of users. Actually, the "Outbox" folder has historically not caused issues for IMAP servers as this has almost always been a folder that was local to the client, and it is obvious why. With CATENATE and BURL the outbox function, or perhaps I should say the outbox state moves to the server. Let me go through the life cycle of a message being sent from a couple of putative lemonade compliant client which have chosen two different models. The first model is to mark the messages to show state, the other uses different folders for this purpose. I will then start a discussion about what a client should do to achieve the best possible interoperability, and what needs defining for interoperability. Client model 1 (messages marked with state) Define three flags (keywords) for the state of outbound messages: QUEUED (to be submitted as soon as possible) SUBMITTED (successfully submitted to the submit server) 1. The client constructs a message to be sent, eg C: 1 APPEND INBOX (QUEUED) CATENATE (.....) S: 1 OK [APPENDUID 1192256 321] done 2. construct a URL for this message, eg C: 2 GENURLAUTH IMAP://userid@mail.domain.com/INBOX;UIDVALIDITY=1192256/;UID=321;UTLAUTH=SUB MIT+userid INTERNAL S: * IMAP://userid@mail.domain.com/INBOX;UIDVALIDITY=1192256/;UID=321;URLAUTH=SUB MIT+userid:internal:12345678 S: 2 OK done 3. submit the message c: mail from: <userid@mail.domain.com> s: 250 2.5.0 OK c: rcpt to: <otheruser@otherdomain.com> s: 250 2.5.0 OK c: burl IMAP://userid@mail.domain.com/INBOX;UIDVALIDITY=1192256/;UID=321;URLAUTH=SUB MIT+userid:internal:12345678 last s: 250 2.5.0 OK 4. mark the message as having been submitted C: 4 UID STORE 321 flags SUBMITTED <done> Next, the equivalent using Outbox and Sent folders: 1. The client constructs a message to be sent, eg C: 1 APPEND Outbox CATENATE (.....) S: 1 OK [APPENDUID 1192256 321] done 2. construct a URL for this message, eg C: 2 GENURLAUTH IMAP://userid@mail.domain.com/Outbox;UIDVALIDITY=1192256/;UID=321;URLAUTH=SU BMIT+userid INTERNAL S: * IMAP://userid@mail.domain.com/Outbox;UIDVALIDITY=1192256/;UID=321;URLAUTH=SU BMIT+userid:internal:12345678 S: 2 OK done 3. submit the message c: mail from: <userid@mail.domain.com> s: 250 2.5.0 OK c: rcpt to: <otheruser@otherdomain.com> s: 250 2.5.0 OK c: burl IMAP://userid@mail.domain.com/Outbox;UIDVALIDITY=1192256/;UID=321;URLAUTH=SU BMIT+userid:internal:12345678 last s: 250 2.5.0 OK 4. Move the message to the Sent folder C: 4A SELECT Outbox C: 4B UID COPY 321 Sent S: 4B OK [APPENDUID 1418141 198] done C: 4C UID STORE 321 +flags \deleted C: 4D UID EXPUNGE 321 <done> I believe that users will be more comfortable with the second approach than the former, but that the former is more in the spirit of IMAP than the latter. There is nothing to stop a client using a hybrid approach: 1. The client constructs a message to be sent, eg C: 1 APPEND Outbox (QUEUED) CATENATE (.....) S: 1 OK [APPENDUID 1192256 321] done 2. construct a URL for this message, eg C: 2 GENURLAUTH IMAP://userid@mail.domain.com/Outbox;UIDVALIDITY=1192256/;UID=321;URLAUTH=SU BMIT+userid INTERNAL S: * IMAP://userid@mail.domain.com/Outbox;UIDVALIDITY=1192256/;UID=321;URLAUTH=SU BMIT+userid:internal:12345678 S: 2 OK done 3. submit the message c: mail from: <userid@mail.domain.com> s: 250 2.5.0 OK c: rcpt to: <otheruser@otherdomain.com> s: 250 2.5.0 OK c: burl IMAP://userid@mail.domain.com/Outbox;UIDVALIDITY=1192256/;UID=321;URLAUTH=SU BMIT+userid:internal:12345678 last s: 250 2.5.0 OK 4. Move the message to the Sent folder C: 4A SELECT Outbox C: 4B UID COPY 321 Sent S: 4B OK [APPENDUID 1418141 198] done C: 4C UID STORE 321 +flags \deleted C: 4D UID EXPUNGE 321 C: 4E SELECT Sent C: 4F UID STORE 198 flags SUBMITTED <done> The Obvious down side to both the approaches using multiple folders is that it requires extra selects which are relatively expensive commands and which lose any CONTEXTS that might be active for the user, and which change the meaning of any NOTIFY command that might be outstanding. One solution to that might be to use a second IMAP session for manipulating the message that is being submitted. These has been some discussion as to whether a third state, a SUBMITTING keyword, is desirable. This all hinges on recovery after a crash, and avoiding having multiple clients all submitting queued messages at the same time. It is asserted that a combination of the SUBMITTING keyword and the CONDSTORE semantics can be used to avoid that scenario. I am not convinced by having a shared Outbox folder being used by multiple clients. I think this might lead to surprises for the user. It might be better for each client to construct a unique name for its outbox. On the other hand, having several Send folders is a known problem. It would be nice if we could suggest that if a client is going to use a folder for sent messages that it use the folder "Sent". That does not preclude the client displaying it as whatever it wants, much as INBOX is displayed as various things in languages other than English. Peter _______________________________________________ lemonade mailing list lemonade@ietf.org http://www.ietf.org/mailman/listinfo/lemonade Supplemental Web Site: http://www.standardstrack.com/ietf/lemonade
- [lemonade] SUBMITTED keyword, Outbox and Sent fol… Peter Coates
- Re: [lemonade] SUBMITTED keyword, Outbox and Sent… Dave Cridland
- Re: [lemonade] SUBMITTED keyword, Outbox and Sent… Dave Cridland