Re: [Jmap] Best vs Good enough - adoption of JMAP

Bron Gondwana <brong@fastmail.fm> Tue, 25 April 2017 05:51 UTC

Return-Path: <brong@fastmail.fm>
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 1E32D1319C4 for <jmap@ietfa.amsl.com>; Mon, 24 Apr 2017 22:51:38 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.718
X-Spam-Level:
X-Spam-Status: No, score=-2.718 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=fastmail.fm header.b=o+6mDA/J; dkim=pass (2048-bit key) header.d=messagingengine.com header.b=eZoyzgl8
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 qJkLIOjsKL8Z for <jmap@ietfa.amsl.com>; Mon, 24 Apr 2017 22:51:35 -0700 (PDT)
Received: from out4-smtp.messagingengine.com (out4-smtp.messagingengine.com [66.111.4.28]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 58A08127011 for <jmap@ietf.org>; Mon, 24 Apr 2017 22:51:35 -0700 (PDT)
Received: from compute6.internal (compute6.nyi.internal [10.202.2.46]) by mailout.nyi.internal (Postfix) with ESMTP id 9EC3C209D7 for <jmap@ietf.org>; Tue, 25 Apr 2017 01:51:34 -0400 (EDT)
Received: from web4 ([10.202.2.214]) by compute6.internal (MEProxy); Tue, 25 Apr 2017 01:51:34 -0400
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fastmail.fm; h= content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to:x-me-sender :x-me-sender:x-sasl-enc; s=fm1; bh=It6Au3/NGSaZI15kSyv1BuLcSD/+d fmsRP5QUnZ/TWY=; b=o+6mDA/J+uAh8M9SWTHelcnHP57V5ofs/3vUshRkZdMDU 0wXjkl9uzAy4vfi/lk2UqgiwJEynbdOMQRR9huQV4ipntZbztTALcchPpnVkG2Cs QLnHiedliPyhDaLEf/Zs54c+JZLhV02JI/c6NSKwgrl6X1Es3QqWUPUHTV5GeW3P SVYoIpAp0EMLCYpWczQtl7+KXMD/HcoU4cVz/3lZTLK16Fv1r/sQ50s0m/Ysf2XU BMC66n+wSTPTs/bQtqTS2fj7JZmd8UkuJ2i9y95mhMDnXvIBkmG8EvxGENCftjl3 2mGiDq3fTzojCby/4Qcv0N9sXoNqzkp4bynG082XQ==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=content-transfer-encoding:content-type :date:from:in-reply-to:message-id:mime-version:references :subject:to:x-me-sender:x-me-sender:x-sasl-enc; s=fm1; bh=It6Au3 /NGSaZI15kSyv1BuLcSD/+dfmsRP5QUnZ/TWY=; b=eZoyzgl8k3rnebQoInH/tB O5E7+koNC3nsWwyc+tigYzATtAzFrCiB3AgzSUXutbAzX/FWcWPL4cbckHvvKvrh slqKbj/JYerQZtZ9urXXhh282i0bYw32bKN2hxp038P+iu3gRF3UWIN7JORdM/dG ix1yh9cY2FH9lTKaZNVoyM7yPhBahnACE+zdjp3HhG9omd48sGjnqKcx4c4jYJHg 242l/id1dP3XQh3zU6zk8t53+XaL0YfEEKlT9mCdfCbeH0kirzJtwio28xnvmCLw qKMY20rcfDHgl9ZLknktY2SAtnBZfYvmI+mX7AdOZFnBNUrTcdqxR2mHH2KGEmSw ==
X-ME-Sender: <xms:5uP-WNvK2HSyaYMHebXxoZS9_geFDlK4tXFVJJBEwEWfNc1wwlMRmg>
Received: by mailuser.nyi.internal (Postfix, from userid 99) id 7F3A8BAB6F; Tue, 25 Apr 2017 01:51:34 -0400 (EDT)
Message-Id: <1493099494.3022600.955184792.68A53782@webmail.messagingengine.com>
From: Bron Gondwana <brong@fastmail.fm>
To: jmap@ietf.org
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Type: multipart/alternative; boundary="_----------=_149309949430226001"
X-Mailer: MessagingEngine.com Webmail Interface - ajax-29d47332
In-Reply-To: <CFC38D13-0CB2-4ABF-9403-DF0F773314B7@fugue.com>
References: <em8b177018-4769-44ea-b033-90bd8155d11b@bodybag> <46F700A6-C2B1-488B-A8B4-6ACD45B03C31@oracle.com> <CFC38D13-0CB2-4ABF-9403-DF0F773314B7@fugue.com>
Date: Tue, 25 Apr 2017 15:51:34 +1000
Archived-At: <https://mailarchive.ietf.org/arch/msg/jmap/P1vTNskRHFdkVI1VodI_7a9wwbQ>
Subject: Re: [Jmap] Best vs Good enough - adoption of JMAP
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: Tue, 25 Apr 2017 05:51:38 -0000

On Tue, 25 Apr 2017, at 10:54, Ted Lemon wrote:
> On Apr 24, 2017, at 8:39 PM, Chris Newman
> <chris.newman@oracle.com> wrote:>> For example, if I'm operating a million-user deployment, it's
>> critical to monitor the mail queues for problems. The proposed JMAP
>> "outbox" model means I'm adding one million new mail queues to the
>> monitoring system. That's a major deployment change; and thus a
>> significant barrier to JMAP deployability.> This doesn't really follow.   It's perfectly possible that the way
> that the backend implements this is that when something is stuffed in
> outbox, it's put in the global mail queue, moved to sent, and the
> delivery status in sent is "pending."   Now the MUA can tell that the
> message has been queued, but no delivery attempt has been made.   Once
> the delivery attempt is completed, the MTA returns a status to the
> JMAP server indicating that the mail has been sent, or that it failed.
> Or it doesn't; if it doesn't support this, then we just mark the
> message as "sent" as soon as it is queued.   But the facility for a
> richer status report is present.   In principle the JMAP server can
> use properly formatted and authenticated bounce messages to update
> delivery status if that is available.   (obviously, iterate across all
> the destination addresses on the message.)
All this is assuming that you have a writeback rather than writethrough
Outbox.  The implementation of Outbox in the perl JMAP proxy, for
example, is synchronous and emphemeral.  Nothing can ever actually exist
in the Outbox.  It's 79 lines of perl - currently here:
https://github.com/jmapio/jmap-perl/blob/master/JMAP/ImapDB.pm#L1116

It formulates the SMTP command, submits the content, then puts the
message in the Sent folder, all within a single DB transaction.
It's easy to create a JMAP server which doesn't hold messages in a queue
in the Outbox.  Though we also need event handling for Calendar Alerts
and other fun stuff in our server, so having those queues include
Outboxes isn't actually a huge additional management expense.  The
server will already have tooling for tracking events which are supposed
to fire for newly added messages, and will already have error reporting
for any errors.  The fact that there are a million mailboxes (FastMail's
infrastructure is also on this scale) doesn't materially affect the
amount of work once there's automation.  No matter how many mailboxes
you have, a good infrastructure will have retry ability and quite
reliable outbound queue injection.
You just don't get failures transferring from Outbox into the regular
SMTP queues.  And if you do, at least the messages are within your
system rather than in someone's client where you wind up getting reports
of failures through support channels and are sitting there on third line
support trying to debug SMTP issues on somebody's local computer with
software outside your control on some bogus network with bogus
antivirus.
I much prefer debugging message transfer between two systems that I have
full control over.
Bron.

--
  Bron Gondwana
  brong@fastmail.fm