Re: [Jmap] Submission

"Chris Newman" <chris.newman@oracle.com> Wed, 19 April 2017 19:29 UTC

Return-Path: <chris.newman@oracle.com>
X-Original-To: jmap@ietfa.amsl.com
Delivered-To: jmap@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 21792128C83 for <jmap@ietfa.amsl.com>; Wed, 19 Apr 2017 12:29:33 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -7.002
X-Spam-Level:
X-Spam-Status: No, score=-7.002 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RCVD_IN_DNSWL_MED=-2.3, RCVD_IN_MSPIKE_H2=-2.8, RP_MATCHES_RCVD=-0.001, SPF_PASS=-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 SRbcNL1hFZdO for <jmap@ietfa.amsl.com>; Wed, 19 Apr 2017 12:29:32 -0700 (PDT)
Received: from aserp1040.oracle.com (aserp1040.oracle.com [141.146.126.69]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 165C71270B4 for <jmap@ietf.org>; Wed, 19 Apr 2017 12:29:32 -0700 (PDT)
Received: from aserv0021.oracle.com (aserv0021.oracle.com [141.146.126.233]) by aserp1040.oracle.com (Sentrion-MTA-4.3.2/Sentrion-MTA-4.3.2) with ESMTP id v3JJTVAs032479 (version=TLSv1 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for <jmap@ietf.org>; Wed, 19 Apr 2017 19:29:31 GMT
Received: from aserv0122.oracle.com (aserv0122.oracle.com [141.146.126.236]) by aserv0021.oracle.com (8.13.8/8.14.4) with ESMTP id v3JJTVXg026572 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for <jmap@ietf.org>; Wed, 19 Apr 2017 19:29:31 GMT
Received: from abhmp0004.oracle.com (abhmp0004.oracle.com [141.146.116.10]) by aserv0122.oracle.com (8.14.4/8.14.4) with ESMTP id v3JJTU5t019310 for <jmap@ietf.org>; Wed, 19 Apr 2017 19:29:30 GMT
Received: from [10.154.116.81] (/10.154.116.81) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Wed, 19 Apr 2017 12:29:30 -0700
From: Chris Newman <chris.newman@oracle.com>
To: "jmap@ietf.org" <jmap@ietf.org>
Date: Wed, 19 Apr 2017 12:29:29 -0700
Message-ID: <096E2D4B-D7ED-4439-BB6F-7944892D2ACA@oracle.com>
In-Reply-To: <em27fa7b29-5584-44f3-aa88-086ce734ab59@bodybag>
References: <em27fa7b29-5584-44f3-aa88-086ce734ab59@bodybag>
MIME-Version: 1.0
Content-Type: text/plain; format="flowed"
X-Mailer: MailMate (1.9.6r5347)
X-Source-IP: aserv0021.oracle.com [141.146.126.233]
Archived-At: <https://mailarchive.ietf.org/arch/msg/jmap/01CL0W5cdviGlf1FKEL2RmrlDIo>
Subject: Re: [Jmap] Submission
X-BeenThere: jmap@ietf.org
X-Mailman-Version: 2.1.22
Precedence: list
List-Id: JSON Message Access Protocol <jmap.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/jmap>, <mailto:jmap-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/jmap/>
List-Post: <mailto:jmap@ietf.org>
List-Help: <mailto:jmap-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/jmap>, <mailto:jmap-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 19 Apr 2017 19:29:33 -0000

The original IMAP designer always opposed adding submission to IMAP as a 
matter of functional separation. While I strongly agree with the need 
for functional specification, it is possible to design a protocol in 
such a way that multiple separable functions are provided in the same 
protocol. As a result I support adding submission to JMAP in a way that 
preserves functional separation.

When deploying a large mail service it's important to keep the 
submission mail queues (which have management/monitoring issues) 
functionally separate from the mail store (which has very different 
management/monitoring issues). If the JMAP design requires a mail queue 
to be present on the JMAP server or present in the mail store, that is 
an unacceptable protocol design error as it hinders the manageability of 
large deployments.

Furthermore, SMTP submission is a full standard IETF protocol that 
continues to be extended. JMAP should leverage the semantics of the 
existing standard in such a way that it's not necessary to change the 
JMAP specification when a new submission extension that's useful to JMAP 
is added. In addition to giving JMAP clients access to all the useful 
submission extensions like FUTURERELASE, UTF8SMTP, DELIVERBY, etc. This 
will ultimately make the JMAP specification simpler (as it won't have to 
deal with submission extensions directly) and more flexible to deploy.

Finally, if JMAP supports submission then I expect a client author will 
want to use the JMAP submission mechanism for all submissions. If JMAP 
has a rigid design where each submission extension requires an 
additional JMAP extension then a high-end client will eventually be 
forced to implement SMTP submission in addition to JMAP submission. And 
it will be stuck doing both (the former for functionality, the latter 
for ease-of-setup). I don't want JMAP clients to be forced down that 
path.

What this means is that for JMAP to support submission correctly, it 
must be able to function as an SMTP submission proxy from a semantic 
viewpoint. This creates a number of requirements. The basic requirements 
are:

1. It must be possible to query the JMAP server for the set of 
Submission ESMTP extensions semantically equivalent to the SMTP 
submission EHLO response. The JMAP server needs to omit the extensions 
that aren't relevant (e.g., AUTH, STARTTLS, PIPELINING).
2. It must be possible to provide an SMTP envelope for submission that 
is semantically identical to the submission protocol. This needs to 
support MAIL FROM, one or more RCPT TO, and ESMTP parameters to those 
envelope components. There needs to be an algorithmic way to convert 
from JMAP envelope syntax to SMTP Submission envelope syntax.
3. It must be possible to get submission errors that are semantically 
identical to those provided by a submission server. Including at least 
3-digit SMTP code, optionally enhanced SMTP code and human readable text 
of error and potentially one response for mail from, one for each rcpt 
to and one for data/bdat final response.

So that's the submission functionality JMAP needs to provide if it 
provides submission at all. If you want to also provide a simpler model 
for submission in JMAP, I won't object as long as the full model is 
mandatory.

		- Chris