Re: [imap5] Should unsolicited EXPUNGE responses be returned during UID MOVE?

Arnt Gulbrandsen <arnt@gulbrandsen.priv.no> Fri, 01 June 2012 07:51 UTC

Return-Path: <arnt@gulbrandsen.priv.no>
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 942DA21F864C for <imap5@ietfa.amsl.com>; Fri, 1 Jun 2012 00:51:57 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.317
X-Spam-Level:
X-Spam-Status: No, score=-2.317 tagged_above=-999 required=5 tests=[AWL=0.282, 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 levmCqaAzfGj for <imap5@ietfa.amsl.com>; Fri, 1 Jun 2012 00:51:57 -0700 (PDT)
Received: from strange.aox.org (strange.aox.org [IPv6:2001:4d88:100c::1]) by ietfa.amsl.com (Postfix) with ESMTP id ED5A321F864B for <imap5@ietf.org>; Fri, 1 Jun 2012 00:51:56 -0700 (PDT)
Received: from fri.gulbrandsen.priv.no (unknown [127.0.0.1]) by strange.aox.org (Postfix) with ESMTP id 53EB3F8CBA1; Fri, 1 Jun 2012 07:51:55 +0000 (UTC)
Received: from arnt@gulbrandsen.priv.no by fri.gulbrandsen.priv.no (Archiveopteryx 3.1.4) with esmtpsa id 1338537114-10044-10043/11/9; Fri, 1 Jun 2012 07:51:54 +0000
Message-Id: <4FC87496.7080500@gulbrandsen.priv.no>
Date: Fri, 01 Jun 2012 09:51:50 +0200
From: Arnt Gulbrandsen <arnt@gulbrandsen.priv.no>
User-Agent: Mozilla/5.0 (X11; Linux i686; rv:12.0) Gecko/20120430 Thunderbird/12.0.1
Mime-Version: 1.0
To: imap5@ietf.org
References: <F9EF38629F2CFC0AA9687FFC@caldav.corp.apple.com> <4FC76025.1020508@gulbrandsen.priv.no> <em52a11c51-f7f6-4de8-adf9-ab2c16a47b85@boist>
In-Reply-To: <em52a11c51-f7f6-4de8-adf9-ab2c16a47b85@boist>
Content-Type: text/plain; charset="iso-8859-1"; format="flowed"
Subject: Re: [imap5] Should unsolicited EXPUNGE responses be returned during UID MOVE?
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: Fri, 01 Jun 2012 07:51:58 -0000

Sorry about my bad temper earlier this morning.

On 05/31/2012 10:58 PM, Adrien W. de Croy wrote:
> Even though we have to send EXPUNGEs to any other connected
> client on that mailbox (that didn't do the move), the approach is a bit
> wasteful of bandwidth etc.
>
> If you issue a command, you want to know when it's done and how it
> turned out.  If the MOVE completes in its entirety without issue (99.99%
> of the time), then  a simple "yeah it worked" response is the most
> efficient.  We can inform of exceptions, e.g. "something broke", or
> "these messages didn't work".  In the end, if there's a failure so what
> if the client has to resynch indices.

IMAP is a bit wasteful of bandwidth in many ways. We have a goodish 
solution for that, RFC 4978, and it's fairly well deployed. Of course we 
might add Microsoft-like special rules to lessen the pain by each 
particular instance of bandwidth waste, but since we already have a 
goodish solution for all of them, why bother?

I think that if you really want to not send EXPUNGE, you should provide 
some numbers to argue your case. Take the log files from some server, 
analyse the moves. How many messages are affected, and how many bytes 
would be sent on average for those commands when a) EXPUNGE is used b) 
EXPUNBGE+COMPRESS=DEFLATE c) VANISHED+C=D and d) nothing.

I suspect that b and c will be very, very close to d.

(FWIW, the easiest way to simulate b/c is to massage an IMAP session so 
you get a file containing just what the server sends, and then just 
'gzip -1' the prefix up until VANISHED/COMPRESS and until just after 
that, and look at the size difference. It won't be exact, but fairly 
good. Or 'gzip -4' or even -9.)

Arnt