[imap5] Feature set? - was Re: Designing a new replacement protocol for IMAP

Adrien de Croy <adrien@qbik.com> Wed, 15 February 2012 22:05 UTC

Return-Path: <adrien@qbik.com>
X-Original-To: imap5@ietfa.amsl.com
Delivered-To: imap5@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id B837C21E8091 for <imap5@ietfa.amsl.com>; Wed, 15 Feb 2012 14:05:39 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -5.527
X-Spam-Level:
X-Spam-Status: No, score=-5.527 tagged_above=-999 required=5 tests=[AWL=-2.928, BAYES_00=-2.599]
Received: from mail.ietf.org ([12.22.58.30]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id dqdEyBfSX3mN for <imap5@ietfa.amsl.com>; Wed, 15 Feb 2012 14:05:34 -0800 (PST)
Received: from smtp.qbik.com (smtp.qbik.com [210.55.214.35]) by ietfa.amsl.com (Postfix) with ESMTP id 4313321E80A2 for <imap5@ietf.org>; Wed, 15 Feb 2012 14:05:33 -0800 (PST)
Received: From sago.qbik.com (unverified [192.168.0.3]) by SMTP Server [192.168.0.1] (WinGate SMTP Receiver v7.1.0 (Build 3381)) with SMTP id <0018865212@smtp.qbik.com>; Thu, 16 Feb 2012 11:05:31 +1300
Received: From [192.168.0.10] (unverified [192.168.0.10]) by SMTP Server [192.168.0.3] (WinGate SMTP Receiver v7.0.8 (Build 3364)) with SMTP id <0010060096@sago.qbik.com>; Thu, 16 Feb 2012 11:05:15 +1300
Message-ID: <4F3C2C1B.6030408@qbik.com>
Date: Thu, 16 Feb 2012 11:05:15 +1300
From: Adrien de Croy <adrien@qbik.com>
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:11.0) Gecko/20120202 Thunderbird/11.0
MIME-Version: 1.0
To: IMAP5 list <imap5@ietf.org>
References: <B764BD8C8B6047E659EABBE2@caldav.corp.apple.com> <4F397212.1030107@qbik.com> <20120213210805.GB13029@launde.brong.net> <alpine.LSU.2.00.1202151405550.30682@hermes-2.csi.cam.ac.uk> <1329315552.1444.140661036879893@webmail.messagingengine.com> <4F3BBFA4.8010107@isode.com> <1329316981.8310.140661036883625@webmail.messagingengine.com> <4F3BC7DA.5070803@gulbrandsen.priv.no> <20120215181047.GB13906@launde.brong.net> <alpine.OSX.2.00.1202151020140.38441@hsinghsing.panda.com> <20120215213122.GB16253@launde.brong.net>
In-Reply-To: <20120215213122.GB16253@launde.brong.net>
Content-Type: text/plain; charset="ISO-8859-1"; format="flowed"
Content-Transfer-Encoding: 7bit
Subject: [imap5] Feature set? - was Re: Designing a new replacement protocol for IMAP
X-BeenThere: imap5@ietf.org
X-Mailman-Version: 2.1.12
Precedence: list
List-Id: "Discussion on drastically slimming-down IMAP." <imap5.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/imap5>, <mailto:imap5-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/imap5>
List-Post: <mailto:imap5@ietf.org>
List-Help: <mailto:imap5-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/imap5>, <mailto:imap5-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 15 Feb 2012 22:05:40 -0000

Seems to me we're getting bogged in the implementation details, or at 
least going too far down that path.  We don't even have a clearly 
defined set of objectives for the features we want the protocol to provide.

here's my first cut off-the-cuff list:

* mail access
for obvious reasons.

* mail submission
For reasons I've stated already including ease of administrative and 
configuration and support.  This breaks down into:
- composing messages on the server
- providing delivery information (e.g. destination address)

* storage of mail client configuration
So that clients can be dumb, and you can hook a new client to your 
mailstore and you don't need to configure anything else.

* server-side mail processing rules
Save downloading headers + MOVE etc to process filtering rules.  Also 
saves synchronising such rules amongst multiple clients

* ability for server to "comment" on anything, e.g:
- that destination email address you gave me doesn't resolve (with MX or 
A) or is otherwise bad.
- that attachment you uploaded contains a virus
- that subject is offensive...
- etc etc etc
this could be part of a broader notification framework.  In the cases 
where the IMAP server co-exists (as in WinGate for example) with SMTP 
delivery agent, then delivery information could be communicated back to 
the connected client.  If we allow for it in the protocol, it can 
provide benefit where it's available, and causes no issues if it isn't.  
The general idea though is that anything should be able to be remarked 
upon by the server.

* address book
* calendaring
* Any other feature to compete with Exchange.
* Any other feature we think would give us an edge.

In terms of design, I'd propose the following:

* single port.  This minimises problems traversing firewalls etc.
* ability to access all mail (in all folders) through a single 
connection, and receive notifications about all state changes to 
anything of importance (probably with client-controlled filter)
* layered protocol.  Bottom layer deals with connection security (e.g. 
negotiating TLS) authentication, and advertisement of and connection to 
sub-services.  Next layer are the sub-services e.g. mail, calendar, 
config etc.  This eases gateway development, since a calendar gateway 
can simply connect through to the calendar sub-service.
* compact yet extensible protocol message structure.

The debate of text-based vs binary protocols will forever rage, I tend 
to prefer binary, since then you don't need to parse text which requires 
escaping of characters which would otherwise be protocol delimiters.  
Some of the downsides of text-based protocols can be averted by using 
length prefixes instead of searching for (and therefore needing to 
escape) delimiters.  Even a mixture.  Literal+ is a damn good design in 
my view, since it allows a large literal to be transferred without it 
having to survive parsing.  It also allows any character set to go 
through.  HTTP is a nightmare in this respect.

* configuration attributes to be clearly defined (e.g. take a page from 
various MIBs) so that attributes can be re-used between different 
clients to the maximum extent.  Clients can store arbitrary 
configuration attributes against the mail account.


Regards

Adrien

-- 
Adrien de Croy - WinGate Proxy Server - http://www.wingate.com
WinGate 7 is released! - http://www.wingate.com/getlatest/