PP13: Toward a Simpler Message Access Architecture
Lisa Dusseault <lisa@osafoundation.org> Sun, 27 January 2008 19:51 UTC
Return-path: <discuss-bounces@apps.ietf.org>
Received: from [127.0.0.1] (helo=stiedprmman1.va.neustar.com) by megatron.ietf.org with esmtp (Exim 4.43) id 1JJDXY-0008Hi-RS; Sun, 27 Jan 2008 14:51:40 -0500
Received: from discuss by megatron.ietf.org with local (Exim 4.43) id 1JJDXX-0008G9-8G for discuss-confirm+ok@megatron.ietf.org; Sun, 27 Jan 2008 14:51:39 -0500
Received: from [10.91.34.44] (helo=ietf-mx.ietf.org) by megatron.ietf.org with esmtp (Exim 4.43) id 1JJDXW-0008F5-UG for discuss@apps.ietf.org; Sun, 27 Jan 2008 14:51:38 -0500
Received: from laweleka.osafoundation.org ([204.152.186.98]) by ietf-mx.ietf.org with esmtp (Exim 4.43) id 1JJDXU-00045j-2z for discuss@apps.ietf.org; Sun, 27 Jan 2008 14:51:38 -0500
Received: from localhost (laweleka.osafoundation.org [127.0.0.1]) by laweleka.osafoundation.org (Postfix) with ESMTP id 7366D142217 for <discuss@apps.ietf.org>; Sun, 27 Jan 2008 11:51:36 -0800 (PST)
X-Virus-Scanned: by amavisd-new and clamav at osafoundation.org
Received: from laweleka.osafoundation.org ([127.0.0.1]) by localhost (laweleka.osafoundation.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id MD+6ITSZdxIP for <discuss@apps.ietf.org>; Sun, 27 Jan 2008 11:51:29 -0800 (PST)
Received: from [192.168.1.101] (unknown [74.95.2.169]) (using TLSv1 with cipher AES128-SHA (128/128 bits)) (No client certificate requested) by laweleka.osafoundation.org (Postfix) with ESMTP id D62E8142203 for <discuss@apps.ietf.org>; Sun, 27 Jan 2008 11:51:28 -0800 (PST)
Mime-Version: 1.0 (Apple Message framework v752.3)
To: Apps Discuss <discuss@apps.ietf.org>
Message-Id: <18F9E6E9-2AD4-4491-BEFD-FCEBCF62FB7D@osafoundation.org>
Content-Type: multipart/alternative; boundary="Apple-Mail-10--182015883"
References: <p06250110c395980aa95b@[74.134.5.163]>
From: Lisa Dusseault <lisa@osafoundation.org>
Subject: PP13: Toward a Simpler Message Access Architecture
Date: Sun, 27 Jan 2008 11:51:23 -0800
X-Mailer: Apple Mail (2.752.3)
X-Spam-Score: -4.0 (----)
X-Scan-Signature: 231d7929942febf3be8fd5be2903302f
X-BeenThere: discuss@apps.ietf.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: general discussion of application-layer protocols <discuss.apps.ietf.org>
List-Unsubscribe: <https://www1.ietf.org/mailman/listinfo/discuss>, <mailto:discuss-request@apps.ietf.org?subject=unsubscribe>
List-Post: <mailto:discuss@apps.ietf.org>
List-Help: <mailto:discuss-request@apps.ietf.org?subject=help>
List-Subscribe: <https://www1.ietf.org/mailman/listinfo/discuss>, <mailto:discuss-request@apps.ietf.org?subject=subscribe>
Errors-To: discuss-bounces@apps.ietf.org
Begin forwarded message: > From: Pete Resnick <presnick@qualcomm.com> > > Toward a Simpler Message Access Architecture > > The architecture for the transport of mail messages embodies a core > principle: Messages move through the Internet simply, without > examination or transformation of their contents, and that they are > transported according to envelope information that is separate from > the contents. The Simple Mail Transfer Protocol (SMTP) and its > implementations live up to this principle to greater or lesser > degrees, but this is certainly the ideal that we strive for, and we > use it as a benchmark for SMTP design and extension. In addition, > when it comes to the contents of messages, the Internet Message > Format (IMF) and Multipurpose Internet Mail Extensions (MIME) have > a canonical format that is specifically independent of any > particular storage or user interface constraints. Again, > implementations keep storage and user interface constraints from > appearing to differing degrees, but we still strive toward this > platform independence in implementation and protocol development. > However, the structure has given us the ability to have relatively > complex messages (sometimes with a great deal of structure and > representing all sorts of complex data types) transported in a > relatively simple fashion. This architecture lends itself to > relatively simple implementation for both clients and servers: > Clients prepare the message object (however complex) and the > envelope, convert the message from any local conventions to > canonical format, and transmit the message using the independent > envelope information. End-to-end, the transport is relatively simple. > > In contrast to message transport, message access has not fared as > well in these regards. The only two message access protocols we > have, the Post Office Protocol (POP) and the Internet Message > Access Protocol (IMAP), sit at opposite ends of a spectrum with > regard to simplicity of implementation and operation, ability to > deal with complexity in message structures, and platform > independence. Of course, with regard to simplicity of > implementation and operation, POP shines: For a client to simply > connect to a server and download messages in their entirety, POP is > very straightforward. However, this simplicity pushes a great deal > of complexity and some computing horsepower requirements from > servers onto clients. Clients must have enough bandwidth to get > messages, enough local storage to manipulate and interpret the > messages they have downloaded, and enough compute power to locally > parse through complex message structures. In this time of smaller > client devices with less compute, bandwidth, and storage, this > makes POP use problematic. Of course, assorted extensions have been > added to POP to facilitate use by smaller devices, but they are > generally ad-hoc specialized extensions that do not address more > general issues for lower capability clients. > > IMAP on the other hand does not suffer POP's problems. IMAP servers > parse the structure of messages for the client and present only > those parts (or parts of parts) that the client requests. Recent > extensions have made access to and manipulation of message parts > even easier for lower capability clients. There is, of course, an > increase in protocol complexity in IMAP as compared to POP. Some of > that is counter-balanced by the fact that the client does not have > to do much of the parsing work locally, but can instead rely on the > server to do so. However, IMAP's central shortcoming, due to a > design principle that was necessary at the time of its creation, is > that clients have to deal with a great deal of complexity because > IMAP exposes much of the semantics of the server's local > environment to the client. IMAP was designed such that protocol > constructs map relatively easily to extant servers' message storage > models. (It should be noted that failure to have this design > principle at the time would have resulted in an undeployable > protocol.) The result is a protocol where messages are stored > grouped in mailboxes (which paralleled existing implementations' > file storage structure), much of the ancillary data associated with > messages is stored in the mailboxes themselves (requiring a small > set of data), and operations may be either synchronous or > asynchronous in nature depending on the particular operation. These > design choices introduce interesting and unexpected implementation > complexities on clients. IMAP's support of a hierarchical store of > messages (as against POP, which has a single flat spool of > messages) means that even if a client only wants to present a > simple one-dimensional view of messages, it still must support > IMAP's hierarchical store in order to discover all of the messages > on the server. In particular, in order to discover changes to the > mail store, clients must SELECT those mailboxes in which the client > has interest and can not get information about changes to arbitrary > parts of the store. With regard to the data storage model, clients > that perform operations outside of IMAP's architectural model that > might need to store and retrieve ancillary data with messages to > support those operations (for instance, a particular messages > display size and screen positioning) must either rely on the server > to implement such functionality (which is not a requirement for > servers) or must store that information locally (which is > infeasible for some clients). Finally, the mixture of synchronous > and asynchronous operation sometimes makes for tricky > implementation choices. Of course, there are the well-understood > examples of certain command sequences that cannot run concurrently, > but restrictions on untagged EXPUNGE responses also make > implementation difficult. > > Server technology has come a long way in the past 20 years. In > particular, scalable multiple-access database storage > implementations are now widely available and in use. Not only does > this mean that arbitrary data can be easily stored and retrieved > (including by multiple simultaneous users), but it also means that > hierarchical file structure needn't be maintained by the > application in order to obtain decent performance. Use of such a > system as a backend for a message access protocol simplifies design > significantly and greatly aids flexibility. I suggest that a new > message access architecture could maintain all of the advantages > that IMAP has over POP, yet remove some of the difficulties > associated with reflection of underlying design constraints in > protocol considerations. > > What follows is a rough outline of such an architecture. It maps > onto current technologies in such a way that transition to the > architecture would be more straightforward, sometimes at the > expense of simplicity. (Consider this a target at which to shoot > rather than a fully-fleshed out solution. In particular, neither > access control nor end-to-end security issues are discussed in this > proposal.) > > 1. A message access store will contain three sorts of objects: > message objects, multipart objects, and terminal objects. All > objects have attributes. The objects are comprised as follows: > a. Message objects must contain one multipart or one terminal > object. Each message must have a "unique identifier" attribute > which is unique within the message store. A message will normally > also have a series of attributes that contain message source and > transport information. (This would normally consist of things > normally found in RFC 822 headers. However, it will not include > MIME information.) > b. Multipart objects are an ordered collection containing one or > more message, multipart, or terminal objects. Each multipart will > have a type attribute, indicating the type of collection, and may > have attributes corresponding to MIME disposition, description, or > identifier information. > c. Terminal objects contain data that comprises the object. > Terminal objects have a type attribute, indicating the type of data > contained in the object, and may have attributes corresponding to > MIME disposition, description, or identifier information. > > All of the attributes mentioned above are read-only. Message store > objects may also have writeable attributes associated with them. > These are talked about below with regard to message access clients. > In any event, these attributes are for clients only. Message access > servers do not add or change them. > > Multiple objects may contain a given object. The deletion of a > container object only deletes once instance of a shared contained > object. > > A message access server will likely house several message stores. > These message stores may share data, in which case unique > identifiers must remain unique and object instances must be > maintained across all message stores. > > 2. A message access client may perform the following functions with > regard to the message store: > a. Authenticate itself to the message store server. > b. Search for messages with particular attributes, receiving a > list of message identifiers. (The client may request that the > results of searches be sorted by any particular attribute. The > client may request to be returned only a particular portion of the > search results.) > c. Retrieve any message or object contained therein (or portion > thereof). > d. Retrieve the attributes of any message or object contained > therein (including a list of objects contained in the message or > object, recursively if desired). > e. Store a message (allowing that message to contain parts already > in the message store). > f. Store or change writeable attributes. (Writeable attributes are > arbitrary in nature; that is, an arbitrary attribute name may be > used and it may be given an arbitrary value. Although there may be > a registry of such attributes, they are strictly for client use.) > g. Given an attribute, search for all unique values of that > attribute across the message store. > h. Delete a message. > > All client actions are sent and completed asynchronously. Responses > to client actions are tagged to indicate the order in which they > were completed. A client will receive responses regarding storage, > deletion, and changes of objects and attributes even if the > particular client in question did not initiate those actions. > > It is imagined that a message delivery agent is just another > message access client. > > > -- > Pete Resnick <http://www.qualcomm.com/~presnick/> > Qualcomm Incorporated - Direct phone: (858)651-4478, Fax: (858) > 651-1102
- PP13: Toward a Simpler Message Access Architecture Lisa Dusseault