Re: Last Call: draft-ietf-sieve-refuse-reject (Sieve Email Filtering: Reject and Extended Reject Extensions) to Proposed Standard

Aaron Stone <aaron@serendipity.cx> Fri, 14 November 2008 14:32 UTC

Return-Path: <owner-ietf-mta-filters@mail.imc.org>
X-Original-To: ietfarch-sieve-archive-Aet6aiqu@core3.amsl.com
Delivered-To: ietfarch-sieve-archive-Aet6aiqu@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id C02B53A68D4 for <ietfarch-sieve-archive-Aet6aiqu@core3.amsl.com>; Fri, 14 Nov 2008 06:32:33 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.885
X-Spam-Level:
X-Spam-Status: No, score=-2.885 tagged_above=-999 required=5 tests=[AWL=-0.286, BAYES_00=-2.599]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id CG8r-4VlUown for <ietfarch-sieve-archive-Aet6aiqu@core3.amsl.com>; Fri, 14 Nov 2008 06:32:31 -0800 (PST)
Received: from balder-227.proper.com (properopus-pt.tunnel.tserv3.fmt2.ipv6.he.net [IPv6:2001:470:1f04:392::2]) by core3.amsl.com (Postfix) with ESMTP id 6641A3A67F4 for <sieve-archive-Aet6aiqu@ietf.org>; Fri, 14 Nov 2008 06:32:30 -0800 (PST)
Received: from balder-227.proper.com (localhost [127.0.0.1]) by balder-227.proper.com (8.14.2/8.14.2) with ESMTP id mAEEQULH088087 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Fri, 14 Nov 2008 07:26:30 -0700 (MST) (envelope-from owner-ietf-mta-filters@mail.imc.org)
Received: (from majordom@localhost) by balder-227.proper.com (8.14.2/8.13.5/Submit) id mAEEQU1m088086; Fri, 14 Nov 2008 07:26:30 -0700 (MST) (envelope-from owner-ietf-mta-filters@mail.imc.org)
X-Authentication-Warning: balder-227.proper.com: majordom set sender to owner-ietf-mta-filters@mail.imc.org using -f
Received: from mail.serendipity.cx (serendipity.palo-alto.ca.us [66.92.2.87]) by balder-227.proper.com (8.14.2/8.14.2) with ESMTP id mAEEQJOK088074 for <ietf-mta-filters@imc.org>; Fri, 14 Nov 2008 07:26:29 -0700 (MST) (envelope-from aaron@serendipity.cx)
Received: from 68-27-237-112.pools.spcsdns.net (localhost [127.0.0.1]) by mail.serendipity.cx (Postfix) with ESMTP id 982751F9E; Fri, 14 Nov 2008 06:27:17 -0800 (PST)
Cc: Spencer Dawkins <spencer@wonderhamster.org>, ietf-mta-filters@imc.org, General Area Review Team <gen-art@ietf.org>, Cyrus Daboo <cyrus@daboo.name>, Lisa Dusseault <lisa@osafoundation.org>, Aaron Stone <aaron@serendipity.palo-alto.ca.us>, Matthew Elvey <sieve3@matthew.elvey.com>, iesg@iesg.org
Message-Id: <920B7676-18CC-4FFE-8766-D0C293C17DDB@serendipity.cx>
From: Aaron Stone <aaron@serendipity.cx>
To: Alexey Melnikov <alexey.melnikov@isode.com>
In-Reply-To: <491D7EF4.60402@isode.com>
Content-Type: text/plain; charset="US-ASCII"; format="flowed"; delsp="yes"
Content-Transfer-Encoding: 7bit
Mime-Version: 1.0 (Apple Message framework v929.2)
Subject: Re: Last Call: draft-ietf-sieve-refuse-reject (Sieve Email Filtering: Reject and Extended Reject Extensions) to Proposed Standard
Date: Fri, 14 Nov 2008 06:26:15 -0800
References: <20080727120256.E26073A68B7@core3.amsl.com> <047b01c8fbc8$2034eeb0$ad600240@china.huawei.com> <491D7EF4.60402@isode.com>
X-Mailer: Apple Mail (2.929.2)
Sender: owner-ietf-mta-filters@mail.imc.org
Precedence: bulk
List-Archive: <http://www.imc.org/ietf-mta-filters/mail-archive/>
List-ID: <ietf-mta-filters.imc.org>
List-Unsubscribe: <mailto:ietf-mta-filters-request@imc.org?body=unsubscribe>

Me too! :-(
I'm about to send out a pile of responses, and I've updated the draft  
to include the DISCUSS and LC wording changes suggested in September.

Document is here:
http://sodabrew.com/ietf/draft-ietf-sieve-refuse-reject-08.txt

Diffs from -07 are here:
http://sodabrew.com/ietf/draft-ietf-sieve-refuse-reject-08-from-7.diff.html

Many thanks,
Aaron

On Nov 14, 2008, at 5:36 AM, Alexey Melnikov wrote:

> Hi Spencer,
> My apologies for replying to this message so late, but I was hoping  
> that the main editor would reply first ;-).
>
> Spencer Dawkins wrote:
>
>> I have been selected as the General Area Review Team (Gen-ART)
>> reviewer for this draft (for background on Gen-ART, please see
>> http://www.alvestrand.no/ietf/gen/art/gen-art-FAQ.html ).
>>
>> Please resolve these comments along with any other Last Call comments
>> you may receive.
>>
>> Document: draft-ietf-sieve-refuse-reject-07
>> Reviewer: Spencer Dawkins
>> Review Date: 2008-08-10
>> IETF LC End Date: 2008-08-10 (oops!)
>> IESG Telechat date: N/A
>>
>> Summary: Almost ready for publication as a Proposed Standard. I  
>> have some clarity questions below, and two technical questions  
>> involving 2119 language ...
>>
>> Comments:
>>
>> Abstract
>>
>>  This memo updates the definition of the Sieve mail filtering  
>> language
>>  "reject" extension, originally defined in RFC 3028.
>>
>>  A "Joe-job" is a spam run forged to appear as though it came from an
>>
>> Spencer (clarity): I'm OK with the use of "joe-job" (or, at a  
>> minimum, I'm OK with what you guys say it is), but there's not a  
>> clear statement in the abstract that the update to 3028 is in  
>> response to the "joe-job" practice. I'd suggest something like "...  
>> originally defined in RFC 3028, because the definition in RFC 3028  
>> did not allow messages to be refused during the STMP transaction,  
>> and experience has shown this to be valuable in response to "joe- 
>> jobs"."
>
> Sounds good to me.
>
>>  innocent party, who is then generally flooded by automated bounces,
>>  Message Disposition Notifications (MDNs), and personal messages with
>>  complaints.  The original Sieve "reject" action defined in RFC 3028
>>  required use of MDNs for rejecting messages, thus contributing to  
>> the
>>  flood of Joe-job spam to victims of Joe-jobs.
>>
>>  This memo updates the definition of the "reject" action to allow
>>  messages to be refused during the SMTP transaction, and defines the
>>  "ereject" action to require messages to be refused during the SMTP
>>  transaction, if possible.
>>
>>  The "ereject" action is intended to replace the "reject" action
>>  wherever possible.
>>
>> Spencer (clarity): a LOT later in the document, the following text  
>> appears: "The "ereject" action is similar to "reject", but will  
>> always favor protocol level message rejection". That's a really  
>> helpful summary - I'd like to see something like that much earlier  
>> in the document, maybe here.
>
> Ok.
>
>> 1.  Introduction
>>
>>  The Sieve mail filtering language [SIEVEBIS], as originally defined
>>  in RFC 3028 [SIEVE], specified that the "reject" action shall  
>> discard
>>  a message and send a Message Disposition Notification [MDN] to the
>>  envelope sender along with an explanatory message.  RFC 5228
>>  [SIEVEBIS] does not define any reject action, hence the purpose of
>>  this document.
>>
>> Spencer (clarity): hmm. I'm almost sure that "The Sieve mail  
>> filtering language [SIEVEBIS]" was NOT "originally defined in RFC  
>> 3028 [SIEVE]"... :-) If you drop the first [SIEVEBIS] reference in  
>> this sentence, I think it's correct.
>
> Good point.
>
>> Spencer (clarity): It's not particularly easy for me to understand  
>> this paragraph, given that SIEVEBIS is used as the reference for  
>> "RFC 5228" in the last sentence. I might suggest "the updated Sieve  
>> mail filtering language [SIEVEBIS] does not define any reject  
>> action ..."
>
> Ok.
>
>>  This document updates the definition of the "reject" action to  
>> permit
>>  refusal of the message during the SMTP transaction, if possible, and
>>  defines a new "ereject" action to require refusal of the message
>>  during the SMTP transaction, if possible.
>>
>> Spencer (clarity): a LOT later in the document, the following text  
>> appears: "The "ereject" action is similar to "reject", but will  
>> always favor protocol level message rejection". That's a really  
>> helpful summary - I'd like to see something like that much earlier  
>> in the document, maybe here.
>
> Ok.
>
>>  Implementations are further encouraged to use spam-detection systems
>>  to determine the level of risk associated with sending an MDN, and
>>  this document allows implementations to silently drop the MDN if the
>>  rejected message is deemed to be likely spam.
>>
>>  Further discussion highlighting the risks of generating MDNs and the
>>  benefits of protocol-level refusal can be found in [Joe-DoS].
>>
>> 2.1.1.  Rejecting a message at the SMTP/LMTP protocol level
>>
>>  Sieve implementations that are able to reject messages at the SMTP/
>>  LMTP level MUST do so and SHOULD use the 550 response code.  Note
>>
>> Spencer (technical): since rejection is a MUST, I'd expect to see  
>> guidance about why using 550 might not be the right thing to do  
>> ("why is this a SHOULD?").
>
> Actually the SHOULD refers to use of other 5XX response codes. Any  
> suggestions how to make this clearer? Maybe change the first  
> sentence to read:
>
> Sieve implementations that are able to reject messages at the SMTP/
> LMTP level MUST do so using an 4XX or 5XX response code and SHOULD  
> use the 550 response code.
>
>> There's some text at the bottom of 2.5 about using 4XX first, but  
>> it should appear here, I think.
>
> I think you are referring to the following text:
>
>  If a Sieve implementation that supports "ereject" does not wish to
>  immediately disclose the reason for rejection (for example, that it
>  detected spam), it may delay immediately sending of the 550 error
>  code by sending a 4XX error code on the first attempt to receive the
>  message.
>
> While this text can be copied to the section 2.1.1, I think the  
> updated sentence above is clear enough.
>
>>  that if a message is arriving over SMTP and has multiple recipients,
>>  some of whom have accepted the message, Section 2.1.2 defines how to
>>  reject such a message.
>>
>> 2.1.2.  Rejecting a message by sending a DSN
>>
>>  An implementation may receive a message via SMTP that has more than
>>  one RCPT TO that has been accepted by the server, and at least one
>>  but not all of them are refusing delivery (whether the refusal is
>>  caused by a Sieve "ereject" action or for some other reason).  In
>>  this case, the server MUST accept the message and generate DSNs for
>>  all recipients that are refusing it.  Note that this exception does
>>  not apply to LMTP, as LMTP is able to reject messages on a per-
>>  recipient basis.  (However, the LMTP client may then have no choice
>>  but to generate a DSN to report the error, which may result in
>>  blowback.)
>>
>> Spencer (clarity): "blowback" isn't defined (yet, at least).
>
> Ok, we will fix.
>
>> 2.2.  Action reject
>>
>>  The "reject" action cancels the implicit keep and refuses delivery  
>> of
>>  a message.  The reason string is a UTF-8 [UTF-8] string specifying
>>  the reason for refusal.  Unlike the "ereject" action described  
>> above,
>>  this action would always favor preserving the exact text of the
>>  refusal reason.  Typically the "reject" action refuses delivery of a
>>  message by sending back an MDN to the alleged sender (see
>>  Section 2.2.1).  However implementations MAY refuse delivery over
>>  protocol (as detailed in Section 2.5), if and only if all of the
>>
>> Spencer (clarity): "refuse delivery over protocol" reads roughly to  
>> me. is there an adjective for "protocol" that might make this  
>> sentence clearer? i'm not sure that "over protocol" is even  
>> required - is it?
>
> It emphasizes that this should happen during delivery, not after it  
> (as with MDN generation).
>
>> if not, you could just delete the two words.
>>
>>  following conditions are true:
>>
>>      Example:
>>              require ["reject"];
>>
>>              if size :over 100K {
>>                  reject text:
>>      Your message is to big. If you want to send me a big attachment,
>>
>> Spencer (nit): s/to/too/ :-)
>
> Thanks.
>
>> 2.3.  Silent upgrade from reject to ereject
>>
>>  Implementations MUST NOT silently upgrade reject actions to ereject
>>  actions, however user interfaces may change the specific action
>>  underlying a descriptive representation, thereby effecting a silent
>>  upgrade of sorts.
>>
>> Spencer (technical): ??? I may not understand the point here, but  
>> from the user's point of view, the requirement seems religious -  
>> protocol implementations are prohibited from silently upgrading,  
>> but user interfaces aren't, and the effect on the rejected e-mail,  
>> from the user's perspective, is the same, isn't it?
>
> It might or might not be the same from user's perspective.
> Some users only care that the message is rejected, other users care  
> that their rejection reason get sent correctly to the other end.
>
>> Or is this talking about "silently upgrading reject actions"  
>> without making sure that the other side is ereject-capable?
>
> I am not sure what do you call "the other side" in this case. Sieve  
> engine or end user who sent the message being rejected?
>
> Anyway I do agree that this sentence reads awkwardly. It is trying  
> to say 2 things:
> 1). Silently upgrading a Sieve script exposed to the user is a bad  
> thing, because it might change rejection behavior in an expected (to  
> the script owner) way.
> 2). But if the reject action is not exposed directly to the user  
> (e.g. if it is hidden behind some kind of filtering rule UI that  
> never shows Sieve script to the user, then silently upgrading might  
> be Ok.
>
> Based on this let me try to rephrase this sentence:
>
> Implementations MUST NOT silently upgrade reject actions to ereject
> actions in a Sieve script, because this might lead to unpleasant  
> change of
> behavior not expected by the owner of the Sieve script.
> However user interfaces that hide/don't present generated Sieve  
> scripts
> from the user MAY change the specific action, as long as behavior
> as far as the user is concerned hasn't changed.
>
> Is this better?
>