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

John R Levine <> Tue, 20 April 2021 15:01 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id 0C01B3A2720 for <>; Tue, 20 Apr 2021 08:01:15 -0700 (PDT)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -2.1
X-Spam-Status: No, score=-2.1 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: (amavisd-new); dkim=pass (2048-bit key) header.b=dfODV+RV; dkim=pass (2048-bit key) header.b=eyK1uOzN
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id BWMwAKQ-VAaP for <>; Tue, 20 Apr 2021 08:01:08 -0700 (PDT)
Received: from ( [IPv6:2001:470:1f07:1126:0:43:6f73:7461]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by (Postfix) with ESMTPS id 97F0B3A2729 for <>; Tue, 20 Apr 2021 08:01:08 -0700 (PDT)
Received: (qmail 29517 invoked from network); 20 Apr 2021 15:01:05 -0000
DKIM-Signature: v=1; a=rsa-sha256; c=simple;; h=date:message-id:from:to:cc:subject:in-reply-to:references:mime-version:content-type; s=734b.607eecb1.k2104; bh=izSatUf2wQRGXL2MFcW/Y+n8fQCeU8eW+ZUsu68gG2k=; b=dfODV+RV82nqKMuWoq5MvDicGPetxjiNU0dm0fKjtfO4b/SUtA24PKRGxmr7DJKTGCpH0XmFH2o55wZwTPvc9fckNKHFoHkRFde7nCsYXfrXy36dCawMrNood8E8BCUdC0/DQd9N/7SbheO9RqSXsruQqc1lO475RvlWtMzn8ispryDnriF0wfNTh5WCZLXF+jLXMCPYj96vSwV3elWy+iTfL7sTo23zBlAZISxz9Eyt025lQ/P7ObFTkQJTUA3EWCWzJgRjZxweA8yfQyG5pP+qfv7YoSf65fZtiXxnEpBkPSaxw96xbLav+S2b7w5IKzOEtojU8kAFPwQMM/kIDQ==
DKIM-Signature: v=1; a=rsa-sha256; c=simple;; h=date:message-id:from:to:cc:subject:in-reply-to:references:mime-version:content-type; s=734b.607eecb1.k2104; bh=izSatUf2wQRGXL2MFcW/Y+n8fQCeU8eW+ZUsu68gG2k=; b=eyK1uOzNOusDqoTnSRj7+zYhNWmNlrMx1W5Q0Pp3wRWEr72CBeXWPndzWWQZFovoO5OIC4slR32l+f+eVdCpxuQmp+dXkR5VnwrlqRxy4cYqegzM11NHo+lCRwMLGPANMHc749AQoApTUco4qaUaTWTYDtYawxN/KHYO64gEAxmSVbSV4PXw3WkmXyf0ANiagGH9ZT2UXY7qKCJlufWRgt7s/g/aTlve87R6GCJcKNcQPSxSqmONkybvLVOOncdbixZI6AVMxNPuMgrk9eDZ0i6rAJ6wYx2HkSppGM328njc3Bmcv1uIasvjBWdRQHURbAShyzlAoEMapyILKzE8UQ==
Received: from ary.qy ([IPv6:2001:470:1f07:1126::78:696d:6170]) by ([IPv6:2001:470:1f07:1126::78:696d:6170]) with ESMTPS (TLS1.2 ECDHE-RSA AES-256-GCM AEAD) via TCP6; 20 Apr 2021 15:01:04 -0000
Received: by ary.qy (Postfix, from userid 501) id 5F57E73B63E7; Tue, 20 Apr 2021 11:01:04 -0400 (EDT)
Received: from localhost (localhost []) by ary.qy (Postfix) with ESMTP id 01F9273B63C9; Tue, 20 Apr 2021 11:01:03 -0400 (EDT)
Date: 20 Apr 2021 11:01:03 -0400
Message-ID: <>
From: "John R Levine" <>
To: "Ned Freed" <>
Cc: "" <>
X-X-Sender: johnl@ary.qy
In-Reply-To: <>
References: <> <20210315234648.563C0708B340@ary.qy> <> <> <> <> <> <>
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII; format=flowed
Archived-At: <>
Subject: Re: [ietf-smtp] [Emailcore] Proposed ESMTP keyword RCPTLIMIT
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\]" <>
List-Unsubscribe: <>, <>
List-Archive: <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>
X-List-Received-Date: Tue, 20 Apr 2021 15:01:15 -0000

It looks like something like this would handle a lot, quite possibly most, 
of the rate limits that receivers are willing to disclose:


Where m is a number of connections or messages or whatever, and s is a 
number of seconds.

I suppose it could also have something like SCOPE=HOST or SCOPE=GROUP to 
say whether it's for a single host or a group but I don't see any way of 
describing groups that wouldn't be too complicated and I doubt that many 
mail providers would want to tell hostile strangers that much about their 
internal architecture.


On Tue, 20 Apr 2021, Ned Freed wrote:
>>> A little surveying might be in order.
>>> I see that Postfix lets you set both the numerator and denominator of
>>> the rate limit, but the denominator defaults to a minute.  It has
>>> separate rate limits for connections and messages.
>>> Exim also lets you set both, the examples use an hour.  The
>>> documentation says that if you use a large interval that lets people send bursts.
>> Sounds familiar. Oracle Messaging Server lets you set both; the denominator default is one hour.
>> We store the limits in memcache or Redis so they can apply across mutiple MTAs.
>> The usual limit is per-IP, but we support per-host and per-domain as well.
>> The demoninator in PowerMTA is a string rather than a number, possible values are sec, s, min, m, hr, or h. It supports per-IP and per-host and probably other stuff; my familiarity here is limited.
>> I assume the Exim and Postfix limits are per-host, which in most cases translates to per-IP.
>> I have to say there's more consistency here than I expected.

John Levine,, Taughannock Networks, Trumansburg NY
Please consider the environment before reading this e-mail.