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

John C Klensin <john@jck.com> Fri, 12 March 2021 01:13 UTC

Return-Path: <john@jck.com>
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 98DE63A1696 for <emailcore@ietfa.amsl.com>; Thu, 11 Mar 2021 17:13:37 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.897
X-Spam-Level:
X-Spam-Status: No, score=-1.897 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, SPF_HELO_NONE=0.001, SPF_NONE=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 oLiAWsS4Ssvu for <emailcore@ietfa.amsl.com>; Thu, 11 Mar 2021 17:13:36 -0800 (PST)
Received: from bsa2.jck.com (bsa2.jck.com [70.88.254.51]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 2E54A3A1695 for <emailcore@ietf.org>; Thu, 11 Mar 2021 17:13:36 -0800 (PST)
Received: from [198.252.137.10] (helo=PSB) by bsa2.jck.com with esmtp (Exim 4.82 (FreeBSD)) (envelope-from <john@jck.com>) id 1lKWMv-000533-GK; Thu, 11 Mar 2021 20:13:33 -0500
Date: Thu, 11 Mar 2021 20:13:27 -0500
From: John C Klensin <john@jck.com>
To: Jeremy Harris <jgh@wizmail.org>, emailcore@ietf.org
Message-ID: <F57F0BCCE67A6D1CE8BC3157@PSB>
In-Reply-To: <397cc52c-5533-12a2-6ca2-e46f5987105c@wizmail.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>
X-Mailer: Mulberry/4.0.8 (Win32)
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline
X-SA-Exim-Connect-IP: 198.252.137.10
X-SA-Exim-Mail-From: john@jck.com
X-SA-Exim-Scanned: No (on bsa2.jck.com); SAEximRunCond expanded to false
Archived-At: <https://mailarchive.ietf.org/arch/msg/emailcore/F-DC5fVFxggOkV8P7kMjwOqrVCQ>
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 01:13:38 -0000


--On Thursday, March 11, 2021 22:07 +0000 Jeremy Harris
<jgh@wizmail.org> wrote:

> On 11/03/2021 21:18, John C Klensin wrote:
>> If it
>> is in need to changing, it would be to change the SHOULD to a
>> MUST since that appears to be what everyone is doing anyway.
> 
> 
> No, it is not.  Exim does not treat a received 5xx as a 4xx.

Jeremy,

I'm happy staying with MUST --up to the WG-- but would, on
principle, like to understand what EXIM is doing and why.  In
particular, a mail transaction, with EXIM as client, looks like:

  [...]
  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

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

(2) Take the first one of those (the one with
<bar101@example.com>) as a fatal error for more RCPT commands as
a class, skip any other target addresses you have queued up, and
move immediately to DATA (or, in principle, some
extension-enabled command).  If this option is taken, the status
of the addresses in that first problem RCTP command and those
not sent at all is uncertain relative to actions outside the
mail transaction.
 
(3) Assume it really is a fatal error (based on the "first
digit" rule, treating it more like 554, or assuming that the
server is really out of memory and would not be able to accept
DATA or the content that follows)  and send either RSET or QUIT
as the next command.  Again, status relative to trying again is
not specified.  In particular, the spec would allow the client
to give up and bounce the message, try again with the same
address list, or try again with a subset of that list, including
opting for one mail transaction per recipient with each getting
a copy of the same message.

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.

So what does exim actually do?

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?  Note that if we do so, we move into the
territory of telling implementations what to do (which the spec
does already) and then telling them what to do if they ignore
the first requirement/instruction, a strategy to which the IESG
has been known to take exception even if no one objects on Last
Call.

    john