Re: [Emailcore] Ticket #5: G.5. Remove or deprecate the work-around from code 552 to 452?

Viktor Dukhovni <ietf-dane@dukhovni.org> Fri, 12 March 2021 02:16 UTC

Return-Path: <ietf-dane@dukhovni.org>
X-Original-To: emailcore@ietfa.amsl.com
Delivered-To: emailcore@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 17BF23A0FEA for <emailcore@ietfa.amsl.com>; Thu, 11 Mar 2021 18:16:51 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.899
X-Spam-Level:
X-Spam-Status: No, score=-1.899 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=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 NbFSpPGnh8fV for <emailcore@ietfa.amsl.com>; Thu, 11 Mar 2021 18:16:49 -0800 (PST)
Received: from straasha.imrryr.org (straasha.imrryr.org [100.2.39.101]) (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 51B363A0FE7 for <emailcore@ietf.org>; Thu, 11 Mar 2021 18:16:49 -0800 (PST)
Received: from [192.168.1.177] (unknown [192.168.1.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by straasha.imrryr.org (Postfix) with ESMTPSA id 1FEDDCCC07 for <emailcore@ietf.org>; Thu, 11 Mar 2021 21:16:48 -0500 (EST)
Content-Type: text/plain; charset="us-ascii"
Mime-Version: 1.0 (Mac OS X Mail 14.0 \(3654.60.0.2.21\))
From: Viktor Dukhovni <ietf-dane@dukhovni.org>
In-Reply-To: <F57F0BCCE67A6D1CE8BC3157@PSB>
Date: Fri, 12 Mar 2021 00:16:47 -0200
Content-Transfer-Encoding: 7bit
Reply-To: emailcore@ietf.org
Message-Id: <6FC2E8E6-334A-4C4B-9FB6-A0F2805C4A31@dukhovni.org>
References: <ca851fda-63ac-8739-c3eb-bde725aa25f3@isode.com> <c188413b-9337-40d8-8062-9c0f58f6cd98@www.fastmail.com> <CAHej_8kHwEOmq5bf49=Tt6ZEVkuidMhy5s4XPu7JC+k22qraZg@mail.gmail.com> <CAHej_8ma-kDkVh3Oj11R5Fn6BbwJsWfFpx0Zqv61fPL35CJNUA@mail.gmail.c om> <0F2370D0-D04C-45A1-A5A1-8FF1F174FFE5@dukhovni.org> <CAHej_8=deJU1CW2AzDBu5ji3Uir+_zF6Gp59Z-hHRmRipz8Osw@mail.gmail.com> <9A7BDB22F3A0396EF24BF91D@PSB> <397cc52c-5533-12a2-6ca2-e46f5987105c@wizmail.org> <F57F0BCCE67A6D1CE8BC3157@PSB>
To: emailcore@ietf.org
X-Mailer: Apple Mail (2.3654.60.0.2.21)
Archived-At: <https://mailarchive.ietf.org/arch/msg/emailcore/7ZoF0rj_s1cQwFBh6UXjaW3LycU>
Subject: Re: [Emailcore] Ticket #5: G.5. Remove or deprecate the work-around from code 552 to 452?
X-BeenThere: emailcore@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: EMAILCORE proposed working group list <emailcore.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/emailcore>, <mailto:emailcore-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/emailcore/>
List-Post: <mailto:emailcore@ietf.org>
List-Help: <mailto:emailcore-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/emailcore>, <mailto:emailcore-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 12 Mar 2021 02:16:51 -0000


> On Mar 11, 2021, at 11:13 PM, John C Klensin <john@jck.com> wrote:
> 
>  [...]
>  MAIL FROM:<foo@example.net>
>  250 ...
>  RCPT TO:<bar1@example.com>
>  250 ...
>  RCPT TO:<bar2@example.com>
>  250 ...
>  RCPT TO:<bar3@example.com>
>  250 ...
>  [...]
>  RCPT TO:<bar101@example.com>
>  552 ...
> 
> Now, upon getting that first 552, does EXIM

It is time to introduce an analogy to a famous Gary Larson THE FAR SIDE
cartoon, "What dogs hear":

	https://www.flickr.com/photos/sluggerotoole/153603564

The server may yell:

   ...
   250 <bar99@example.com> at your service
   250 <bar100@example.com> at your service
   552 <bar101@example.com> too many recipients.
   552 <bar102@example.com> too many recipients.
   552 <bar103@example.com> too many recipients.
   ...

But all the sending client hears is:

   ...
   2.. ...
   2.. ...
   5.. ...
   5.. ...
   5.. ...
   ...

the client will stash away the full error code and text for
inclusion in the bounce, just in case some user or postmaster
can make some sense of it, but otherwise all those carefully
specified digits in the SMTP RFCs play no role whatsoever.

Servers are far too likely to send some random 5XX code that
does not mean exactly what the RFC intends it to mean, and in
any case the last two digits make no difference, the command
is either accepted, soft-failed or rejected permanently, and
the first digit had better signal that correctly, the rest
is irrelevant forensic information for whoever might care
to read the tea leaves.


> (1) Assume it is really like a 550, i.e., that
> <bar101@example.com> is, at least for traffic coming from
> <foo@example.net>, a more or less permanently unavailable or
> non-existent address, continue with other addresses, but never
> retry <bar101@example.com> and basically tell whomever or
> whatever you got the message from that it is undeliverable for
> that address.

This of course, and ditto with Postfix, Sendmail, or any other
mainstream MTA you're like to run across.


> If so, continue that "no retry" behavior for
> <bar102@example.com> and the (potentially) hundreds of addresses
> that follow.

Sure, but any mainstream MTA will not send 100's of addresses
in a single envelope to strangers, since there's no reason to
expect the remote peer to be willing to accept more than 100
recipients, and by the time the message transaction has been
amortised over 100 recipients most of the benefit of batching
has been achieved.

Also list managers typically send mail to one recipient at a
time (VERP), and people rarely send mail to more than 100 readers,
so larges envelopes beyond first O(100) don't have any measurable
positive impact on MTA throughput.

> If one does not follow the advice about treating 552 as if were
> 452 and basically ignores Section 4.5.3.1.10 (since, wrt 552, it
> offers no alternate interpretation), I can justify any of the
> above on the basis of text I can find in 5321.  I may be missing
> something (wouldn't be the first time, even this week), but that
> looks like it.

Any such justification is divorced from the "What dogs hear"
reality, did the server say "2..", "4.." or "5.."? 

> So what does exim actually do?

Naturally, treats the "2XX" recipients as delievered (assuming
DATA or BDAT LAST was accepted), retries the "4XX" recipients
separately, and bounces the "5XX" recipients.  That's the only
correct client behaviour.

> For everyone else: is there any desire to narrow the options in
> 5321bis so that guidance is given as to which of the above
> options is acceptable?

Regardless of what the RFC says, client MTAs will continue to
be dogs.  The RFC can align with this reality or live in some
make believe alternative universe.

-- 
	Viktor.