Internet DRAFT - draft-dusseault-httpmail
draft-dusseault-httpmail
Internet Engineering Task Force L. Dusseault
Internet-Draft CommerceNet
Intended status: Standards Track October 24, 2008
Expires: April 27, 2009
HTTP Access to Email Stores
draft-dusseault-httpmail-00
Status of this Memo
By submitting this Internet-Draft, each author represents that any
applicable patent or other IPR claims of which he or she is aware
have been or will be disclosed, and any of which he or she becomes
aware will be disclosed, in accordance with Section 6 of BCP 79.
Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF), its areas, and its working groups. Note that
other groups may also distribute working documents as Internet-
Drafts.
Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress."
The list of current Internet-Drafts can be accessed at
http://www.ietf.org/ietf/1id-abstracts.txt.
The list of Internet-Draft Shadow Directories can be accessed at
http://www.ietf.org/shadow.html.
This Internet-Draft will expire on April 27, 2009.
Abstract
This document proposes a standard format and a standard navigation
mechanism so that mail stores can provide interoperable access to
mailboxes and messages over HTTP. Mailbox contents and listings of
mailboxes are exposed as Atom Feeds, while messages themselves are
downloaded as a document of type message/822. Each mailbox and each
message is assigned an HTTP URL, and if permissions checks are
satisfied, each message may be downloaded independently.
Dusseault Expires April 27, 2009 [Page 1]
Internet-Draft HTTPMail October 2008
Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.1. Summary of Requirements . . . . . . . . . . . . . . . . . 4
1.2. Existing Work. . . . . . . . . . . . . . . . . . . . . . . 5
1.3. Applicability . . . . . . . . . . . . . . . . . . . . . . 6
1.4. Issues in this Specification . . . . . . . . . . . . . . . 8
2. Message Downloads in HTTP . . . . . . . . . . . . . . . . . . 8
2.1. Example Message Download . . . . . . . . . . . . . . . . . 9
3. Message listings as Atom feeds . . . . . . . . . . . . . . . . 10
3.1. Complete Example . . . . . . . . . . . . . . . . . . . . . 10
3.2. Elements describing the feed . . . . . . . . . . . . . . . 12
3.2.1. 'title' element . . . . . . . . . . . . . . . . . . . 12
3.2.2. 'id' element . . . . . . . . . . . . . . . . . . . . . 12
3.2.3. 'author' element . . . . . . . . . . . . . . . . . . . 12
3.2.4. 'link' elements . . . . . . . . . . . . . . . . . . . 13
3.3. Elements describing an entry/message . . . . . . . . . . . 13
3.3.1. 'id' element . . . . . . . . . . . . . . . . . . . . . 13
3.3.2. 'title element . . . . . . . . . . . . . . . . . . . . 14
3.3.3. 'updated' element . . . . . . . . . . . . . . . . . . 14
3.3.4. 'published' element . . . . . . . . . . . . . . . . . 14
3.3.5. 'summary' element . . . . . . . . . . . . . . . . . . 14
3.3.6. 'link' elements . . . . . . . . . . . . . . . . . . . 14
3.4. Feed History . . . . . . . . . . . . . . . . . . . . . . . 15
3.5. Attachments . . . . . . . . . . . . . . . . . . . . . . . 16
4. Navigating mailboxes . . . . . . . . . . . . . . . . . . . . . 16
4.1. Example feed document listing mailboxes . . . . . . . . . 17
5. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 17
6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 17
7. Security Considerations . . . . . . . . . . . . . . . . . . . 18
8. Informative References . . . . . . . . . . . . . . . . . . . . 18
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 19
Intellectual Property and Copyright Statements . . . . . . . . . . 20
Dusseault Expires April 27, 2009 [Page 2]
Internet-Draft HTTPMail October 2008
1. Introduction
Email access via the Web is ubiquitous. The most common situation
seen in deployment is for a mail server administrator to setup IMAP,
POP and Web access to the same mail store, giving users choice. The
Web-based access seen today is referred to in this document as "Web
mail UI" to distinguish from HTTP mail access as defined in this
document. Note that HTTP use in Internet mail already goes beyond
Web mail UIs and can be quite sophisticated. See "Existing Work".
IMAP, POP and Web mail UIs already co-exist, and this proposal makes
no attempt to replace any of these, but instead to augment them.
Different situations require different tools. HTTP access will
enable new use cases for both users and administrators, and foster
new clients and helper applications. Adoption may be found far from
traditional rich email applications: in status bar applications,
client utilities, administrative utilities, server-to-server
communication or even mashups. See "Applicability".
The functionality specified here is quite limited and cannot, by
itself, replace POP or IMAP even if that were the intent. The
approach here is to combine what is easiest and most natural to do in
HTTP with a quick analysis of use cases and take the intersection.
The features found in that intersection:
o A persistent HTTP URL used to download a single message/rfc822
[RFC5322] object
o HTTP URLs and response formats to download full or partial mailbox
content listings
o Persistent URLs and response formats to discover what mailboxes
exist
o Use of DELETE to instruct the server to remove the email from
normal visibility.
o Use of POST, together with a mailbox URL, to add an email to an
existing mailbox.
The choice of how to provide mailbox content listings in HTTP
responses is a difficult decision. While some deployed systems
already use WebDAV PROPFIND responses for message listings, we
believe that a few conventions for using Atom will be more easily
implemented and used by clients and servers that do not already have
this functionality. Atom offers more control to the server over how,
and even what entries to present in a feed, and can support search
folders as well as traditional mailboxes. Simple operations are very
Dusseault Expires April 27, 2009 [Page 3]
Internet-Draft HTTPMail October 2008
simple indeed with Atom: a GET request leading to a single document
in a well-known XML format. This document's current mappings even
makes it possible for a unmodified newsreader to browse mailboxes.
Support for Atom does not preclude more sophisticated support for
WebDAV PROPFIND, REPORT or for HTTP-based search operations. Indeed,
if this proposal sees any adoption, further work will likely be
needed depending on which use cases crop up.
Skip ahead to section 2 and the rest of this specification for
further technical details on these allegedly easily accomplished
features.
1.1. Summary of Requirements
Servers MUST support:
HTTP [RFC2616], including REQUIRED support for strong ETags
Atom Feed documents [RFC4287], generated to show listings of
messages
Downloading messages in message/822 format [RFC5322]
Atom Feed history [RFC5005], to break up listings of messages
TLS [RFC4346], REQUIRED unless all messages and mailboxes are
publicly readable.
Clients MUST support:
HTTP 1.1 [RFC2616], including chunked transfer-encoding and all
other required HTTP 1.1 features.
Clients MUST support TLS [RFC4346] in order to be able to
communicate with secure servers.
Client support for other features depends on the usage. For example,
a status monitoring client might only need to know a bit of summary
information about new or unread messages, and would not need to
support message/822. Some examples of optional client features and
consequences:
If the client does not support the Atom Feed format, it will be
unable to parse message listings. It may still be able to access
individual messages but finding the URLs to these messages would
have to be done in some other way.
Dusseault Expires April 27, 2009 [Page 4]
Internet-Draft HTTPMail October 2008
If the client does not support message/822, it will be unable to
read messages on all servers, but may still be able to see message
listings, and read messages if other formats are available.
HTTP Cookies [RFC2109] MAY be used to maintain authentication
status if the transport is secure.
If the client does not support feed history [RFC5005], it can only
see some of the most recent messages in each mailbox.
1.2. Existing Work.
[Note: This section should be deleted if this document is adopted by
a WG or published as an RFC. Information in this section may become
inaccurate over time and is useful mainly to motivate starting this
work in the form proposed.]
Web access to email, as commonly experienced in 2008, involves
presentation information (HTML, CSS, images and links) as well as
mail content.
Some Web mail UIs do separate presentation from content under the
surface. For example, some servers support an AJAX-like programming
pattern so that the Web browser can be instructed to download message
listings or message bodies separately from downloading templates,
images or scripts. With this architecture, different server
processes or even different servers can handle the tasks of serving
presentation logic, presentation formats and mail store contents.
Some commercial mail stores already have HTTP interfaces that are
predictable to the point of being machine-readable. Sometimes this
interface is called a third-party programming interface, an interface
that allows third-party or add-on applications to access the mail
store and provide some auxiliary service that the site administrators
wish to offer users.
Microsoft did some early work on HTTP access to email. The Outlook
Express client application uses a fully HTTP-based interface to do
all mail functions on Exchange mail stores as well as Hotmail. At
the time, Hotmail could or did not support IMAP. The Microsoft API
uses PROPFIND to list mailbox contents (this mechanism predated Atom
by several years).
The Yahoo Mail Web Service uses SOAP or JSON-RPC. This adds a layer
of complexity even to operations such as downloading an email body,
which is retrieved inside a SOAP envelope. In an indication that
email providers see value in enabling mashups, Yahoo announced this
API at Yahoo Hack Day "so programmers can develop extensions and new
Dusseault Expires April 27, 2009 [Page 5]
Internet-Draft HTTPMail October 2008
interfaces for Yahoo Mail".
Google's mail API is undocumented. However, Google does have the
GData API, which extends Atom for access to many different types of
user content other than email, and GData is similarly available for
third-party developers.
SquirrelMail is a Web mail UI that can work with a number of IMAP
backends. This is interesting, and related, because it is a generic
gateway from IMAP to an HTTP interface, albeit a human-readable one.
A machine-readable HTTP interface would be even more natural than
IMAP as an interface for a front-end like SquirrelMail.
1.3. Applicability
The focus in this specification is on read-only access to the mailbox
contents and message contents stored in a mail store. This
specification does not cover sending email or handling email delivery
status, managing spam or other filters on the server, creating
mailboxes, moving messages or even marking them as read. These
limitations clearly rule out many complex applications. Still, there
are many situations where this work may be applicable, and further
work can build on this base.
Associated clients and utilities: Users may install applications or
utilities which are not full-fledged email clients, but can benefit
from access to mailbox listings and mail messages. Some examples:
o A user might install a Challenge/Response spam-limiting system as
a client tool, rather than use a server-hosted system. The
Challenge/Response utility can scan the Inbox periodically for
mail from new senders. It can use SMTP with the user's normal
credentials to send the Challenge message, along with some Turing
test such as an image to identify or describe. The same Inbox
scans allow it to find responses from validating senders. The
main problem that this specification does not help with is how the
Challenge/Response utility can then deal with the message that is
now considered valid -- this specification does not explain how to
use HTTP to change the message flags or move it to another
mailbox.
o A calendar client might poll the Inbox for messages containing
calendar contents or calendar attachments, and automatically add
these as "tentative" meetings.
o A productivity client (e.g. Chandler) may scan special folders
that the user sets up to contain emails describing tasks or task
information.
Dusseault Expires April 27, 2009 [Page 6]
Internet-Draft HTTPMail October 2008
o A custom spam detection engine, tuned or trained by the user, may
be able to poll the user's Inbox and delete spam before the user
gets to it. This can help in situations when the user is required
to use an otherwise-adequate mail client/server with an
insufficiently accurate spam filter. While there are many spam
solutions within the traditional email framework, we (as protocol
designers) have no reason to artificially limit the means by which
users attempt to manage spam in their own mailboxes.
The next category is third-party server applications and server
'mashups', where the user's existing email store and its
functionality is augmented by a separate service. The major
differentiator within this category is whether the augmenting service
is setup and trusted by email administrators or not.
o There already exist mail to Twitter gateways. These could be
easier to use with (authorized) access to the user's own email
account. This kind of service is currently adopted by individual
users, without assistance from email administrators.
o Third-party applications to archive email, and apply email
retention policies, are sometimes offered by different vendors
than the email server itself. This is an example of a service
setup and trusted by the email administrator.
The final category is new services: places where mail standards have
not yet penetrated.
o We see silos of personal messages in social interaction sites,
career networking sites, volunteer coordination sites and even
knitting sites. Perhaps some of these sites can offer a standard
API as long as it's simple enough and under sufficient server
control to be low-cost and low-risk for the site management. The
good news is that the functionality required by such sites can be
very small: list email, read email, and delete (which may or may
not be implemented moving to trash.) Marking messages as 'read'
may also be a requirement, and sending new messages may involve a
POST to a well-known mailbox. The benefit to users of even
partial support by these sites may simply mean that with a local
client able to poll and access site messages, the user would be
better able to keep abreast of conversations and maintain
participation.
o Mailing list postings are delivered via SMTP, but the access to
the public mailing list archive is as-yet unstandardized. Most
mailing list software comes with HTTP access to archives, but
these vary widely and don't allow easy "mashup" access. A
machine-readable HTTP interface to public mailing list archives
Dusseault Expires April 27, 2009 [Page 7]
Internet-Draft HTTPMail October 2008
would allow users to catch up on mailing list history and choose
between Web UIs, email-style client UIs and newsreader style
client UIs.
1.4. Issues in this Specification
Analysis of use cases for helper applications and mashups (anything
other than a full, rich mail reader) shows that marking messages as
"read" may be the most common requirement so far unmet by this
specification. Using IMAP to mark a message as "read" would involve
a number of operations: establishing the session and logging in if
that's not already done, selecting the correct folder, selecting the
correct message (e.g. in a SEARCH command), and storing the correct
"Seen" flag.
Note: Other message flag operations involve the same steps, but do
not seem to be as commonly required in the use cases. One might
consider removing the "Seen" flag to be necessary to undo user
errors in marking as "read".
The next most common use case requirement is that of submitting
messages. While SMTP is a reasonable simple approach for many use
cases, it is not universally acceptable. For example, the social
networking sites that offer site-specific messaging and mailboxes may
have significant trouble operating a fully standards-compliant SMTP
server in order to provide mail sending to their site members. In
RESTful HTTP email interfaces, message submission has been modeled as
the action of putting a message into an outbox, possibly a write-once
"Sent" folder. This operation does not fit as nicely into HTTP's
methods as one would like.
The third most common unmet use case is marking a message as spam.
2. Message Downloads in HTTP
The message/rfc822 content type is registered and discussed in
[RFC2045] and [RFC2046], but the format itself is defined in
[RFC5322]. [RFC2045] registers the MIME types message/rfc822 and
message/partial.
Servers supporting this specification MUST offer messages in the
message/rfc822 format, and MUST use this format if it is mentioned in
an Accept header in a GET request for the message. Servers MUST also
serve the message as a Atom Entry document that can be used in
clients such as existing newsreaders that do not accept message/
rfc822. The Atom Entry document is handy as a default link to the
message, which can be used to find other links like the message/
Dusseault Expires April 27, 2009 [Page 8]
Internet-Draft HTTPMail October 2008
rfc822 version. Servers MAY offer other formats which can be
obtained through content negotiation (HTTP headers) or by offering
alternate URLs in message metadata.
In addition to returning the entire message/rfc822 document, with
headers as well as text body and other attachments, servers MUST
support direct GET access to attachments. This is described further
in the section on entries in mailbox feed documents.
2.1. Example Message Download
The request specifies that the user agent prefers message/rfc822.
Request
GET /progrium/msgs/48DA4852.8080707@example.net HTTP/1.1
User-Agent: curl/7.16.3 (powerpc-apple-darwin9.0) libcurl/7.16.3
Accept: message/rfc822
Host: example.com
Accept: */*
Response
HTTP/1.1 200 OK
Date: Thu, 09 Oct 2008 23:50:25 GMT
Server: Apache-Coyote/1.1
Accept-Ranges: bytes
Last-Modified: Thu, 09 Oct 2008 23:48:49 GMT
ETag: "3095486-3331683"
Cache-Control: private
Content-Type: message/rfc822
Content-Length: 592
Connection: close
Received: from mail.example.com ([64.170.98.32])
Message-ID: <48DA4852.8080707@example.net>
Date: Wed, 24 Sep 2008 10:01:54 -0400
From: Participant <participant@example.net>
MIME-Version: 1.0
To: ietf@example.com
Subject: Re: Call for review of proposed IESG Statement on Examples
References: <48D584879F297C944CE2D568@JCK-ACR.example.com>
In-Reply-To: <002C61D09CE7B135B04EFCA@p3.example.com>
List-Id: IETF-Discussion <ietf.example.com>
Content-Transfer-Encoding: 7bit
Content-Type: text/plain; charset="us-ascii"; Format="flowed"
+1
Dusseault Expires April 27, 2009 [Page 9]
Internet-Draft HTTPMail October 2008
The same request without specifying message/822 format, results in an
Atom entry instead.
<?xml version="1.0" encoding="UTF-8"?>
<entry>
<title>Re: Last Call for proposed IESG Statement on Examples</title>
<id>48DA4852.8080707@example.net</id>
<updated>2008-08-24T10:01:54-04:00</updated>
<link type="application/atom+xml" rel="self"
href="http://progrium/msgs/48DA4852.8080707@example.net/atom"/>
<link type="application/atom+xml" rel="related"
href="http://progrium/msgs/002C61D09CE7B135B04EFCA@p3.example.com"/>
<link type="message/rfc822" rel="alternate"
href="http://progrium/msgs/48DA4852.8080707@example.net/rfc822"/>
<summary>
+1
</summary>
<content>
+1
</content>
</entry>
3. Message listings as Atom feeds
A list of messages, which may be the contents of a mailbox, is
represented as an Atom document with the 'feed' root element. Within
'feed', there are separate 'entry' elements for each mail. In
addition, a number of elements directly inside 'feed' describe the
feed itself, in this context the mailbox or list of messages.
In Atom, the server can choose how many entries to put in a feed
document.
3.1. Complete Example
With this basic structure explained, here is an example:
<?xml version="1.0" encoding="UTF-8"?>
<feed xml:lang="en-US" xmlns="http://www.w3.org/2005/Atom">
<title>INBOX</title>
<id>123456789321</id>
<link type="application/atom+xml" rel="self"
href="http://example.com/progrium/INBOX.atom"/>
Dusseault Expires April 27, 2009 [Page 10]
Internet-Draft HTTPMail October 2008
<entry>
<title>Short notes to help you set up your presentation</title>
<id>000e0cd47d9@example.org</id>
<published>2008-10-18T05:08:13-07:00</published>
<link type="message/rfc822" rel="self"
href="http://example.com/progrium/msgs/000e0cd47d9@example.org/rfc822"/>
<link type="text/plain" rel="alternate"
href="http://example.com/progrium/msgs/000e0cd47d9@example.org/txt"/>
<link type="text/html" rel="alternate"
href="http://example.com/progrium/msgs/000e0cd47d9@example.org/html"/>
<summary>Dear Jim,
Here a few short notes, based on our experiences so far,
to help you set up you ...</summary>
<content type="text">Dear Jim,
Here a few short notes, based on our experiences so far,
to help you set up your presentation:
* Please do not move, resize, close, or open pods in the
rooms. The rooms have been setup for the conference.
* If you haven't had a chance to, please watch the speaker
orientation video, it will answer a number of common questions.
</content>
<author>
<name>alvin@example.org</email>
<email>alvin@example.org</email>
</author>
</entry>
<entry>
<title>Re: Intro: Web Hooks</title>
<id>4304feb30810181219s322f27bcs570b8c80826a7da1@example.com</id>
<published>2008-10-18T12:19:45-07:00</published>
<link type="message/rfc822" rel="self"
href="http://example.com/progrium/msgs/4304feb3081@example.com/rfc822"/>
<link type="text/plain" rel="alternate"
href="http://example.com/progrium/msgs/4304feb3081@example.com/txt"/>
<link type="text/html" rel="alternate"
href="http://example.com/progrium/msgs/4304feb3081@example.com/html"/>
<summary>Joe,
Let's setup a time to talk about the role. we don't have many
slides believe it or ...</summary>
<content type="text">Joe,
Let's setup a time to talk about the role. we don't have many
slides believe it or not :-).
Red
</content>
Dusseault Expires April 27, 2009 [Page 11]
Internet-Draft HTTPMail October 2008
<author>
<name>Red Herring</name>
<email>red@example.com</email>
</author>
</entry>
</feed>
3.2. Elements describing the feed
3.2.1. 'title' element
If the listing of messages maps directly to the contents of a single
mailbox, the feed title MUST be the mailbox name. In IMAP this is
limited to UTF7 and will always be a valid Atom title.
Example: "FORK"
If the listing of messages is from a search or filter, the feed title
should contain a descriptive name.
Example: "Mail filtered by Sender containing 'leslie'"
3.2.2. 'id' element
Required by Atom to be permanent and universally unique. Since IMAP
allows users to RENAME mailboxes, it would be best if the id were
based off something more permanent than the mailbox name. In gateway
use cases where the gateway can't tell the difference between a
renamed mailbox and a new mailbox, the gateway MUST treat the mailbox
as new. Effectively this creates a new feed (or more than one if the
mailbox has inferior hierarchical names) and one or more old feeds
are coincidentally removed.
3.2.3. 'author' element
When the listing of messages is from a personal mailbox, the 'author'
element SHOULD identify the owner of the mailbox. This helps
distinguish from public mail archives. When the mailbox does have an
owner or account represented in an 'author' element, the 'email'
element MUST contain the full email address. In some cases, the name
will contain the email address again (it is used for display), but it
MUST be present.
Dusseault Expires April 27, 2009 [Page 12]
Internet-Draft HTTPMail October 2008
Example author element:
<author>
<name>Jeffrey Lebowski</name>
<email>dude@example.com</email>
</author>
Example for mailbox of messages sent to support@example.com:
<author>
<name>support@example.com</name>
<email>support@example.com</email>
</author>
3.2.4. 'link' elements
The feed itself contains several 'link' elements, with different
'rel' attribute values.
o rel=self: The URL to this feed.
o rel=alternate: MAY provide an IMAP mailbox URL if this feed
represents a mailbox listing.. Other URLs and multiple values are
also appropriate.
o rel=service: The URL to the document that describes server
features and other mailboxes (see Section 4).
The following link relations are from Feed paging [RFC5005], see
Section 3.4:
o rel=current: The URL to the most recent entries in this feed
o rel=next: the URL to the next section of entries in this feed
o rel=prev: the URL to the previous section of entries in this feed
3.3. Elements describing an entry/message
Within the feed, a number of 'entry' elements each contain further
elements. The minimal legal Atom entry consists of a 'title', a
'link', 'id', 'updated' and 'summary'.
3.3.1. 'id' element
This MUST contain the core of the message-id used in IMAP and SMTP,
and generated by the originator of the message. The 'message-id'
syntax in [RFC5322] has surrounding whitespace and angle-brackets,
Dusseault Expires April 27, 2009 [Page 13]
Internet-Draft HTTPMail October 2008
which MUST be omitted.
Example: <id>d691a2530810071141y757@mail.example.net</id>
3.3.2. 'title element
This MUST contain the subject of the message. It MUST be empty if
the subject of the message is empty.
3.3.3. 'updated' element
For email received and unchanged, this contains the date received.
Otherwise, it should represent the last time the item was changed.
Given that some email systems allow users to modify received
messages, the inside of the message needs to be examined to get an
accurate date received.
3.3.4. 'published' element
Contains the sent date.
3.3.5. 'summary' element
This SHOULD be present and contain a piece of the body of the
message. 100 characters or less is RECOMMENDED.
3.3.6. 'link' elements
The link elements provide both a link to a machine-readable version
of the complete email, to support rich and smart applications, and a
human-readable version, so that this interface can be reasonably
browsed in extant newsreader software. Newsreaders display the
rel=alternate link as the main link to the entry itself. Attachments
and other messages related by threading should also be represented
with link elements.
self The 'self' link is used for the link to the message in its
default human-readable format.
alternate At least one 'alternate' link provides access to the
message/rfc822 format. Other formats can be provided in
additional 'alternate' links.
enclosure Attachments are linked as enclosures.
Dusseault Expires April 27, 2009 [Page 14]
Internet-Draft HTTPMail October 2008
related Maps directly to messages in the "References" header.
in-reply-to Maps directly to messages in the "In-Reply-To" header.
Defined in [RFC4685]
The 'related' and 'in-reply-to' messages might be available on the
same server store, but they might not be. If the replied-to message
is available in the same store, the URL MUST be an HTTP URL to the
message entry (which gives links to the message/rfc822 format and
other metadata). Otherwise, the URL MAY be a 'mid' URL, see
[RFC2392].
Example
<link rel="self" type="text/html"
href="http://example.com/d691a25308@mail.example.net/html"/>
<link rel="alternate" type="message/822"
href="http://example.com/d691a25308@mail.example.net/rfc822"/>
<link rel="related"
href="mid:48D584879F297C944CE2D568@JCK-ACR.example.com"/>
<link rel="in-reply-to"
href="http://example.com/002C61D09CE7B135B04EFCA@p3.example.com/>
3.4. Feed History
Servers MUST support Feed History [RFC5005] Paged Feeds (Section 3.).
This gives servers the control over how many messages to send to
clients in one feed document. Clients make further requests if more
of the feed history is desired, though in many use cases, only the
most recent feed page is needed.
Paged Feeds do not quite allow for synchronization or ensuring that
all mails have been seen. Archived feeds would, but are
inappropriate for mailboxes because messages are frequently removed
from mailboxes (and even if tombstones were used, an inbox might
quickly fill up with thousands of tombstones and only a few undeleted
messages). A TODO for this draft is to consider whether a simple
extension to paged feeds could provide the message-ID for the last
message on the previous page, and the first message on the next page.
By matching these up, clients could see that all messages had been
seen.
Clients can usefully display a screenful of entries at a time. This
varies highly depending on the display size, screen resolution and
even font size chosen. Twenty is an absolute minimum number, whereas
a forty to fifty entry display is a more common capacity. Servers
are RECOMMENDED to put at least fifty entries in a page, unless fewer
Dusseault Expires April 27, 2009 [Page 15]
Internet-Draft HTTPMail October 2008
than fifty entries are available. Servers are RECOMMENDED to apply
paging if there are more than a hundred entries in a full logical
feed.
3.5. Attachments
Links directly to the attachments on the message MUST be shown in the
entry as 'link' elements with rel=enclosure.
4. Navigating mailboxes
Clients need to be able to find out which mailboxes exist. The
server creates a feed of feeds, a document that lists all mailboxes
in a flattened namespace, along with other related feeds. For
example, a feed for all unread messages might behave as a "saved
search", accessible to even very simple clients because it acts like
a mailbox feed.
This kind of feed, listing both mailboxes and other feeds, is not
suited to clients making changes, reorganizing email or authoring
email. The Atom Service document format [RFC5023] is more suited to
that purpose, because along with listing workspaces and collections,
it indicates what kinds of resources may be created in those
workspaces and collections. However, this approach is simpler and
does not preclude more careful design of a mapping to Atom Service
documents in the future.
Dusseault Expires April 27, 2009 [Page 16]
Internet-Draft HTTPMail October 2008
4.1. Example feed document listing mailboxes
<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
<title>progrium@example.com</title>
<link href="http://example.com/progrium/"/>
<updated>2008-10-18T05:08:13-07:00</updated>
<author>
<name>John Doe</name>
<email>progrium@example.com</email>
</author>
<id>urn:uuid:60a76c80-d399-11d9-b93C-0003939e0af7</id>
<entry>
<title>INBOX</title>
<link href="http://example.com/progrium/INBOX.atom"/>
<id>123456789321</id>
<updated>2008-10-18T05:08:13-07:00</updated>
</entry>
<entry>
<title>personal</title>
<link href="http://example.com/progrium/personal.atom"/>
<id>123456789323</id>
<updated>2008-10-08T04:17:02-07:00</updated>
</entry>
<entry>
<title>All unread mail</title>
<link href="http://example.com/progrium/unread/"/>
<id>123456789322</id>
<updated>2008-10-18T05:08:13-07:00
</entry>
</feed>
5. Acknowledgements
Jeff Lindsay helped with initial modeling, early review and a very
early prototype IMAP-HTTPMail proxy.
6. IANA Considerations
No IANA Considerations arise in this document.
Dusseault Expires April 27, 2009 [Page 17]
Internet-Draft HTTPMail October 2008
7. Security Considerations
The biggest concern in offering HTTP access to mail stores is
probably dealing with authentication differences between HTTP and
IMAP/POP. HTTP authentication mechanisms are not as powerful as
SASL. Solving this problem is both an implementation and an
administrative concern. Common practice demonstrates that this
concern can be met in implementations and deployments, at least to
the satisfaction of administrators and users. For example, the same
password is commonly supplied in an HTML login form, and sent to the
server over TLS, that the user types into an IMAP client interface
for use in a SASL authentication interaction. Naturally this
approach weakens the security of that password, and habituates the
user to typing it into Web interfaces. This specification does not
worsen that common situation.
Privacy concerns dictate use of TLS in most cases. Clients MUST
support TLS, so that servers are free to secure private email in the
confidence that this will interoperate.
8. Informative References
[RFC2026] Bradner, S., "The Internet Standards Process -- Revision
3", BCP 9, RFC 2026, October 1996.
[RFC2045] Freed, N. and N. Borenstein, "Multipurpose Internet Mail
Extensions (MIME) Part One: Format of Internet Message
Bodies", RFC 2045, November 1996.
[RFC2046] Freed, N. and N. Borenstein, "Multipurpose Internet Mail
Extensions (MIME) Part Two: Media Types", RFC 2046,
November 1996.
[RFC2109] Kristol, D. and L. Montulli, "HTTP State Management
Mechanism", RFC 2109, February 1997.
[RFC2392] Levinson, E., "Content-ID and Message-ID Uniform Resource
Locators", RFC 2392, August 1998.
[RFC2616] Fielding, R., Gettys, J., Mogul, J., Frystyk, H.,
Masinter, L., Leach, P., and T. Berners-Lee, "Hypertext
Transfer Protocol -- HTTP/1.1", RFC 2616, June 1999.
[RFC4287] Nottingham, M., Ed. and R. Sayre, Ed., "The Atom
Syndication Format", RFC 4287, December 2005.
[RFC4346] Dierks, T. and E. Rescorla, "The Transport Layer Security
Dusseault Expires April 27, 2009 [Page 18]
Internet-Draft HTTPMail October 2008
(TLS) Protocol Version 1.1", RFC 4346, April 2006.
[RFC4685] Snell, J., "Atom Threading Extensions", RFC 4685,
September 2006.
[RFC5005] Nottingham, M., "Feed Paging and Archiving", RFC 5005,
September 2007.
[RFC5023] Gregorio, J. and B. de hOra, "The Atom Publishing
Protocol", RFC 5023, October 2007.
[RFC5322] Resnick, P., Ed., "Internet Message Format", RFC 5322,
October 2008.
Author's Address
Lisa Dusseault
CommerceNet
169 University Ave.
Palo Alto, CA 94301
US
Phone: 1-650-279-7365
Email: ldusseault@commerce.net
Dusseault Expires April 27, 2009 [Page 19]
Internet-Draft HTTPMail October 2008
Full Copyright Statement
Copyright (C) The IETF Trust (2008).
This document is subject to the rights, licenses and restrictions
contained in BCP 78, and except as set forth therein, the authors
retain all their rights.
This document and the information contained herein are provided on an
"AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY, THE IETF TRUST AND
THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS
OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF
THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
Intellectual Property
The IETF takes no position regarding the validity or scope of any
Intellectual Property Rights or other rights that might be claimed to
pertain to the implementation or use of the technology described in
this document or the extent to which any license under such rights
might or might not be available; nor does it represent that it has
made any independent effort to identify any such rights. Information
on the procedures with respect to rights in RFC documents can be
found in BCP 78 and BCP 79.
Copies of IPR disclosures made to the IETF Secretariat and any
assurances of licenses to be made available, or the result of an
attempt made to obtain a general license or permission for the use of
such proprietary rights by implementers or users of this
specification can be obtained from the IETF on-line IPR repository at
http://www.ietf.org/ipr.
The IETF invites any interested party to bring to its attention any
copyrights, patents or patent applications, or other proprietary
rights that may cover technology that may be required to implement
this standard. Please address the information to the IETF at
ietf-ipr@ietf.org.
Dusseault Expires April 27, 2009 [Page 20]