Re: [Jmap] Submission

"John Levine" <johnl@taugh.com> Wed, 19 April 2017 16:34 UTC

Return-Path: <johnl@taugh.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 19A61129B2E for <jmap@ietfa.amsl.com>; Wed, 19 Apr 2017 09:34:54 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: 0.227
X-Spam-Level:
X-Spam-Status: No, score=0.227 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RCVD_IN_BL_SPAMCOP_NET=1.347, SPF_NEUTRAL=0.779, URIBL_BLOCKED=0.001] autolearn=no 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 00roYbvyB1pv for <jmap@ietfa.amsl.com>; Wed, 19 Apr 2017 09:34:53 -0700 (PDT)
Received: from miucha.iecc.com (www.iecc.com [IPv6:2001:470:1f07:1126::4945:4343]) (using TLSv1 with cipher DHE-RSA-CAMELLIA256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id DB4D1129B2A for <jmap@ietf.org>; Wed, 19 Apr 2017 09:34:52 -0700 (PDT)
Received: (qmail 53265 invoked from network); 19 Apr 2017 16:34:51 -0000
Received: from unknown (64.57.183.18) by mail1.iecc.com with QMQP; 19 Apr 2017 16:34:51 -0000
Date: Wed, 19 Apr 2017 16:34:29 -0000
Message-ID: <20170419163429.8556.qmail@ary.lan>
From: John Levine <johnl@taugh.com>
To: jmap@ietf.org
Cc: dkg@fifthhorseman.net
In-Reply-To: <87wpag7bi5.fsf@fifthhorseman.net>
Organization:
X-Headerized: yes
Mime-Version: 1.0
Content-type: text/plain; charset="utf-8"
Content-transfer-encoding: 8bit
Archived-At: <https://mailarchive.ietf.org/arch/msg/jmap/-QonAw8RU8uy96ywk1FR03WhhYs>
X-Mailman-Approved-At: Wed, 19 Apr 2017 09:37:46 -0700
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 16:34:54 -0000

In article <87wpag7bi5.fsf@fifthhorseman.net> you write:
>Making the SMTP envelope parameters "optional" needs more specification.

Urrgh.  There is a long history of doing submission by moving messages
to a special folder, and one thing they have in common is that they
all failed to get much use.

I think there are two reasons they failed: a lack of feature
negotiation, and the overoptimistic belief that you can construct the
envelope from the message headers.

Feature negotiation should not be a big problem.  In RFC 6409
submission, you get a list of features back from EHLO.  Some of them
can affect the way a client formats an outgoing message, e.g.
8BITMIME or BURL or SMTPUTF8.  Some like DELIVERBY and DSN let the
client put annotations on the message or individual addresses.  Hence
we need a way to get the submission features from the server, and a
way to put submission annotations on the envelope addresses when
sending a message.

This leads to the second issue, where do the envelope addresses come
from.  While it is certainly true that in many simple cases you can
guess the envelope addresses from the message headers, guessing
robustly is hard, and in many cases it is not evident to me what the
correct guess would be.  With a message possibly having Sender, From,
To, Cc, Bcc, and Resent-* versions of all of those, there's over a
thousand possible header combinations to screw up and test.  Beyond
that, what do you do with a From: with two addresses or a group
address with no actual addresses?  If there's a Resent-To but no
Resent-From (a 5322 violation but not a surprising one) do you reject
it or do you invent an envelope address and if so, what address do you
use?

My strong preference would be that if you do submission, there should
be no envelope defaults and the entire envelope must be specified by
the client.  (This is separate from whether the submission agent
cleans up the submitted message on the way out.)  This shouldn't be a
burden on client writers, since the client presumably knows who it's
sending the mail to, and it provides a straightforward way to add
annotations to the envelope addresses, e.g., by sending a list of 
[ address, annotation, ... ] in place of a plain address.

Also, if the envelope is explicit, this lets people use jmap for some
interesting other applications, e.g., make a service like mailman a
daemon talking to a jmap server rather than having to configure it in
system specific ways. 

R's,
John