Re: [ietf-smtp] [Emailcore] Proposed ESMTP keyword RCPTLIMIT

John C Klensin <john-ietf@jck.com> Tue, 16 March 2021 03:33 UTC

Return-Path: <john-ietf@jck.com>
X-Original-To: ietf-smtp@ietfa.amsl.com
Delivered-To: ietf-smtp@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 563A73A18E1 for <ietf-smtp@ietfa.amsl.com>; Mon, 15 Mar 2021 20:33:31 -0700 (PDT)
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 x8_PxpMuqXn4 for <ietf-smtp@ietfa.amsl.com>; Mon, 15 Mar 2021 20:33:29 -0700 (PDT)
Received: from bsa2.jck.com (ns.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 B03663A18E0 for <ietf-smtp@ietf.org>; Mon, 15 Mar 2021 20:33:29 -0700 (PDT)
Received: from [198.252.137.10] (helo=PSB) by bsa2.jck.com with esmtp (Exim 4.82 (FreeBSD)) (envelope-from <john-ietf@jck.com>) id 1lM0SQ-0005YT-FF; Mon, 15 Mar 2021 23:33:22 -0400
Date: Mon, 15 Mar 2021 23:33:15 -0400
From: John C Klensin <john-ietf@jck.com>
To: Ned Freed <ned.freed@mrochek.com>
cc: Dave Crocker <dhc@dcrocker.net>, ietf-smtp@ietf.org
Message-ID: <15171FBA777D20C60C62D55B@PSB>
In-Reply-To: <01RWP85B98S4005PTU@mauve.mrochek.com>
References: <77B21231-47EA-4CA6-A665-5880B6A54D4D@wordtothewise.com> <20210312203224.F3739701E4C5@ary.qy> <01RWOUM3HK0Q005PTU@mauve.mrochek.com> <e6e5d166-ded5-b6c0-db9a-57c44e8bd92a@dcrocker.net> <01RWOX4A2CZG005PTU@mauve.mrochek.com> <CF0247A810AF9482CBB155E8@PSB> <01RWP85B98S4005PTU@mauve.mrochek.com>
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-ietf@jck.com
X-SA-Exim-Scanned: No (on bsa2.jck.com); SAEximRunCond expanded to false
Archived-At: <https://mailarchive.ietf.org/arch/msg/ietf-smtp/QGzZyPxpPtqddKEgbqWJHn3MCuk>
Subject: Re: [ietf-smtp] [Emailcore] Proposed ESMTP keyword RCPTLIMIT
X-BeenThere: ietf-smtp@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Discussion of issues related to Simple Mail Transfer Protocol \(SMTP\) \[RFC 821, RFC 2821, RFC 5321\]" <ietf-smtp.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/ietf-smtp>, <mailto:ietf-smtp-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/ietf-smtp/>
List-Post: <mailto:ietf-smtp@ietf.org>
List-Help: <mailto:ietf-smtp-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/ietf-smtp>, <mailto:ietf-smtp-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 16 Mar 2021 03:33:31 -0000

--On Monday, March 15, 2021 14:26 -0700 Ned Freed
<ned.freed@mrochek.com> wrote:
 
>> --On Monday, March 15, 2021 08:58 -0700 Ned Freed
>> <ned.freed@mrochek.com> wrote:
> 
>> >>       SMTP servers have always been able to announce a
>> >>       limit, in a reply, which means that the client first
>> >>       needed to issue a command.  The mechanism specified
>> >> here avoids the overhead of that interactions, by
>> >> announcing limits prior to any substantive interaction.
>> > 
>> > Nice. Added.
> 
>> I wonder.  Along with the "first digit" rule, SMTP has been
>> fairly clear that SMTP clients should not depend on trying to
>> parse or interpret reply text except for VRFY and EXPN for
>> which syntax is actually given for replies.
> 
> Which establishes the precedent for parsing replies given a
> signal to do so.

Except that I thought (although I can't find it right now) that
5321 called  that out as an explicit exception.   Certainly they
and the forwarding and "try instead" replies are the only ones
for which an exact syntax is discussed.    But I think the key
phrase above is "signal to do so", with which I agree.  See
below.

>> Assuming this is the sort
>> of announcement you and Dave have in mind, suppose the client
>> sends
>>    MAIL FROM:<foo@example.com>
>> and the server responds
>>    250 OK.  No more than 20 recipients
>> would we seriously expect the client to interpret and use that
>> information?
> 
> Of course not, but how about:
> 
> 250 2.5.314159 RCPTMAX=n 

And that gets into a bit of tension between the "first digit"
rule in 5321 and extended codes, perhaps particularly in the
case of MAIL, where the fourth paragraph of Section 3.3 ("This
command tells...") says, apparently very specifically 'If
accepted, the SMTP server returns a "250 OK" reply", not "250
<whatever it feels like> which the client is expected to read
and understand".  But if that needs to be addressed at all, it
should be addressed in 5321bis, not in your draft... as long as
the draft does not increase the confusion.  See below.

>> In addition, if the answer were "yes", what would prevent a
>> connection-opening response of
>>   220 SNAFU SMTP Server, v 666, no more than 25 recipients
>>   allowed
> 
>> which is no less an announcement and of course avoids having
>> to wait for any commands to be issued, even EHLO.
 
> You can't repeat the announcement so you need the ability to
> include the response in EHLO, which is the obvious way to
> revise the limits after AUTH or STARTTLS. And EHLO is required
> in all three cases, so aside from not being soonest in one
> case there's no downside I can see.

Good reason, but I think I wasn't clear about the point I was
trying to make, which was not about the design --with which I'm
quite happy-- but with Dave's specific paragraph which, in its
form as above, I think could add to the confusion.  Why?
Because, as soon as you say "SMTP servers have always been able
to announce a limit, in a reply...", it seems to me the
immediate question is 

	'Sure, they can "announce" whatever they like, but how
	would that work in practice? If, for example, the client
	sends a MAIL comment and gets back "250..." or even
	"2...", and moves on to the next command because _any_
	2yz response to the MAIL commend implies "ok, move on to
	the next command"'.  

The server could equally respond to a MAIL command with "250 Is
it not a lovely day?".  That would constitute an announcement of
sorts, but the expectation that it would be acted on would be
the same: in the absence of some spec that goes beyond 5321,
both are really comments, not announcements.   Now, if the
paragraph had said, e.g., "...limit, in a reply with an enhanced
status code,..." I probably would not have batted an eyelash
because, at that point, it would be clear that the server was
asking the client to do something different than "get as far as
250 and then move on".    But...
 
> I guess I could write all these reasons down, but at some
> point text about design choices becomes a hindrance to
> understanding the acutal protocol. I think all this cross that
> line, whereas Dave's text did not.

We are in complete agreement with your first sentence.  All I've
suggesting is that, absent some additional words, Dave's text
could add confusion and become a hindrance.   I am agnostic as
to whether it would be better to add the words (few of them and
perhaps using the example above) or to drop the text.  The key
design choice, IMO, is to have a facility for announcing these
limits that is precisely defined (which you have, IMO, done) and
that a client that is aware of and interested in that particular
extension keyword will know, rather exactly, now to interpret
it.  That is what the extension mechanism is all about.  

To push that explanation a bit further, we could, in principle,
define an extension of, e.g.,

 MANDATORYEXTENDEDCODES
or
 YOUBETTERREADREPLYTEXT

in such a way that the server would advertise it and, if the
client did not include some sort of confirmation as part of the
MAIL command or whatever command followed the EHLO response, the
server might find it perfectly reasonable to respond

  55z Then I don't want to talk with you, go away
   (554 would be close, but not exact)

IMO, that would be a fairly dumb idea, but those are the only
way I can think of to make an "announcement" as part of a reply
reliable.  That ultimately just demonstrates another reason why
your proposal is a better idea, but also shows, IMO, how
slippery the slope gets if you start discussing alternate
strategies... and brings me back to the line you describe above
and about which, again, I agree.

    john