Subject: managesieve: formats; :global; read-only; checkscript

From: Дилян Палаузов<[email-masked]>
Date: Fri, 21 Nov 2008 21:41:45 +0100

Hello,

Some more thoughts on ManageSieve:

*FORMATS* Provided that a sieve-script can have textual 
(application/sieve) format, and xml format (draft-freed-sieve-in-xml-01) 
it would be interesting when a managesieve-server can live with several 
possible sieve-formats.  I would like to suggest adding a third optional 
parameter to PUTSCRIPT and GETSCRIPT specifying the format of the sieve 
code. Strictly speaking an intelligent ManageSieve server would 
recognize the format automatically and a dummy server would return in 
GETSCRIPT the file as it was uploaded (regardless of the format). 
However with a third parameter to GETSCRIPT a server can be used for 
converting between xml - application/sieve (- cyrus-sieve-bytecode).

*:GLOBAL* Provided that draft-daboo-sieve-include is not dead, and users 
can "include :global" it would be useful to provide 
managesieve-possibilities to see how the global scripts are written.  My 
suggestion is to let the user see the global scripts, when the 
authorization ID is the empty string.  In terms of the Sieve URL Scheme, 
the global scripts could be accessible when owner = '\0'.  I mean when
          sieveurl-script = "sieve://" [ authority ] "/"
                            [owner "/"] scriptname
has the form
          sieveurl-script = "sieve://" [ authority ] "//" scriptname
then requested are the global scripts.

*READ-ONLY* In this case however the users shall have only read-only 
access on the global scripts and one more Response Code will be 
appropriate READONLY (returned together with NO after PUTSCRIPT and 
together with OK after AUTHENTICATE).

This makes sense in one more case: Imagine there are sieve scripts, that 
SMTP/ejerect-s mails from non-subscribers.  In this case the people who 
manage the list might be interested to see how the script looks like, 
but shall not to able to create mess by changing it.  As a matter of 
fact for a list there could be more than one scrips generated (e.g. for 
the address ...-unsubscribe@), so...

Would be too weird if I propose a new command "LISTAUTHZ" (or alike) 
listing the authorization IDs that can be used by the user with the 
current authentication ID?

*CHECKSCRIPT* I don't like very much the command CHECKSCRIPT, cause the 
same things can be achieved by using "" as first parameter to PUTSCRIPT 
and allowing it in unauthenticated-state (incl. changing the ABNF for 
PUTSCRIPT to permit sieve-name or empty-string as 1st parameter). 
PUTSCRIPT "" provides the same flexibility as CHECKSCRIPT and keeps the 
protocol simpler.

Moreover

"LANGUAGE - ... Note that the current language MAY be per-user 
configurable (i.e. it MAY change after authentication)."

(How) shall a user be able to set a language?

Greetings,
	Dilian

PS: The link at http://tools.ietf.org/wg/sieve/ to Draft dependency 
graphs (http://www.fenron.com/~fenner/ietf/deps/viz/sieve.pdf) is not 
working.

---

From: Alexey Melnikov <[email-masked]>
Date: Tue, 25 Nov 2008 20:45:38 +0000

Hi Дилян,

Дилян Палаузов wrote:

> (application/sieve) format, and xml format 
> (draft-freed-sieve-in-xml-01) it would be interesting when a 
> managesieve-server can live with several possible sieve-formats.  I 
> would like to suggest adding a third optional parameter to PUTSCRIPT 
> and GETSCRIPT specifying the format of the sieve code. Strictly 
> speaking an intelligent ManageSieve server would recognize the format 
> automatically and a dummy server would return in GETSCRIPT the file as 
> it was uploaded (regardless of the format). However with a third 
> parameter to GETSCRIPT a server can be used for converting between xml 
> - application/sieve (- cyrus-sieve-bytecode).
>
>
> *:GLOBAL* Provided that draft-daboo-sieve-include is not dead, and 
> users can "include :global" it would be useful to provide 
> managesieve-possibilities to see how the global scripts are written.  
> My suggestion is to let the user see the global scripts, when the 
> authorization ID is the empty string.  In terms of the Sieve URL 
> Scheme, the global scripts could be accessible when owner = '\0'.  I 
> mean when

While I think having a standardized way of accessing global scripts 
would be a good idea, I am not convinced that the empty string is going 
to be Ok.
This might have some weird side effects on URI parsers (but I am not sure).

> This makes sense in one more case: Imagine there are sieve scripts, 
> that SMTP/ejerect-s mails from non-subscribers.  In this case the 
> people who manage the list might be interested to see how the script 
> looks like, but shall not to able to create mess by changing it.  As a 
> matter of fact for a list there could be more than one scrips 
> generated (e.g. for the address ...-unsubscribe@), so...
>

This creates security issues.
Besides the list of all allowed authorization ids might not be readily 
available.

> *CHECKSCRIPT* I don't like very much the command CHECKSCRIPT, cause 
> the same things can be achieved by using "" as first parameter to 
> PUTSCRIPT and allowing it in unauthenticated-state (incl. changing the 
> ABNF for PUTSCRIPT to permit sieve-name or empty-string as 1st 
> parameter). PUTSCRIPT "" provides the same flexibility as CHECKSCRIPT 
> and keeps the protocol simpler.

I am afraid you are going against rough WG consensus in this case.

> (How) shall a user be able to set a language?

It is not currently possible. An extension would be needed in order to 
add the ability to change a user's language.

> graphs (http://www.fenron.com/~fenner/ietf/deps/viz/sieve.pdf) is not 

It seems to be working now.

---

From: Alexey Melnikov <[email-masked]>
Date: Sun, 30 Nov 2008 17:58:52 +0000

Alexey Melnikov wrote:

> would be a good idea, I am not convinced that the empty string is 
> going to be Ok.

I've updated the draft to include your proposal. It looks like "owner" 
can be empty, as long as "authority" is not.

From: [email-masked]
To: [email-masked]
Cc: [email-masked]
Subject: I-D Action:draft-ietf-sieve-managesieve-02.txt 
Date: Sun, 30 Nov 2008 10:00:01 -0800 (PST)
Sender: [email-masked]

--NextPart

A New Internet-Draft is available from the on-line Internet-Drafts directories.
This draft is a work item of the Sieve Mail Filtering Language Working Group of the IETF.

	Title           : A Protocol for Remotely Managing Sieve Scripts
	Author(s)       : A. Melnikov, T. Martin
	Filename        : draft-ietf-sieve-managesieve-02.txt
	Pages           : 49
	Date            : 2008-11-30

Sieve scripts allow users to filter incoming email.  Message stores
are commonly sealed servers so users cannot log into them, yet users
must be able to update their scripts on them.  This document
describes a protocol "ManageSieve" for securely managing Sieve
scripts on a remote server.  This protocol allows a user to have
multiple scripts, and also alerts a user to syntactically flawed
scripts.

A URL for this Internet-Draft is:
http://www.ietf.org/internet-drafts/draft-ietf-sieve-managesieve-02.txt

Internet-Drafts are also available by anonymous FTP at:
ftp://ftp.ietf.org/internet-drafts/

Below is the data which will enable a MIME compliant mail reader
implementation to automatically retrieve the ASCII version of the
Internet-Draft.

--NextPart
Content-Type: Message/External-body;
	name="draft-ietf-sieve-managesieve-02.txt";
	site="ftp.ietf.org";
	access-type="anon-ftp";
	directory="internet-drafts"

Content-Type: text/plain
Content-ID:     <[email-masked]>

--NextPart--

Date: Sun, 30 Nov 2008 17:58:52 +0000
From: Alexey Melnikov <[email-masked]>
To: =?UTF-8?B?0JTQuNC70Y/QvSDQn9Cw0LvQsNGD0LfQvtCy?= <[email-masked]>
CC: IETF Sieve WG <[email-masked]>
Subject: Re: managesieve: formats; :global; read-only; checkscript
Sender: [email-masked]

Alexey Melnikov wrote:

> would be a good idea, I am not convinced that the empty string is 
> going to be Ok.

I've updated the draft to include your proposal. It looks like "owner" 
can be empty, as long as "authority" is not.

Date: Sun, 30 Nov 2008 15:17:58 +0000
From: Alexey Melnikov <[email-masked]>
To: Stephan Bosch <[email-masked]>
CC: [email-masked]
Subject: Re: WGLC on draft-ietf-sieve-managesieve-01.txt (review)
Sender: [email-masked]

Hi Stephan,

Stephan Bosch wrote:

> Alexey Melnikov wrote:
>
>> Hi Stephan,
>> Thank you for your review.
>>
>> I am quickly answering easy comments/questions and will followup on 
>> the rest later on.
>
>>> 2.6:
>>>
>>> - Clarify what is meant by syntax checking. In the strictest sense 
>>> it could mean that any script that complies with the basic grammar 
>>> of the Sieve language would pass. Command syntax, i.e. which 
>>> arguments are required/allowed, would then be ignored. Also, 
>>> wouldn't it be helpful/useful/desirable to include contextual checks 
>>> here as well? E.g. unknown/invalid comparators etc.
>>
>> IMHO, invalid/unknown comparator would be covered by syntactic checks.
>>
>>> I first encountered this distinction when discussing the ihave 
>>> extension to the Sieve language. I implicitly interpreted this 
>>> requirement as a full script check (i.e. as would be done for full 
>>> compilation), which seems overly restrictive when reading this 
>>> standard more carefully.
>>
>> You need to suggest specific text, especially if you want the 
>> document to describe interaction with ihave in more details.
>
> I was not saying that the interaction with ihave needs to be described 
> better, I was merely saying that during the discussion of the ihave 
> extension I noticed that the current formulation of the syntactic 
> validation requirement is very much open for interpretation. IMHO, 
> this is usually a bad thing in a document that is intended to 
> establish a standard.
>
> I am not very good at writing such texts myself, but I can provide a 
> textual representation of how I interpret the sentence 'The server 
> MUST check the submitted script for syntactic validity, which includes 
> checking that all Sieve extensions mentioned in Sieve script "require" 
> statement(s) are supported by the Sieve interpreter.' (somewhere on 
> page 20):
>
> 'The server MUST check the submitted script for validity, which 
> includes checking that the script complies with the Sieve grammar 
> [SIEVE], that all Sieve extensions mentioned in script's "require" 
> statement(s) are supported by the Sieve interpreter,

Good so far.

> that all used commands are known (i.e. either part of the main Sieve 
> language or an extension mentioned in the "require" lines),

I think this text is not going to be good in presence of ihave 
extension. So I would rather omit or reword this part.

> that commands are used in the correct context

I am not sure what you mean here.

> and that the supplied command arguments are valid for each command.

IMHO, this part is good.

> Essentially, the performed validation should be equal to what is 
> performed when compiling the script for execution. Implementations 
> that use a binary representation to store compiled scripts can extend 
> the validation to a full compile, in order to avoid validating 
> uploaded scripts multiple times.'

This text is good and might be helpful.

> Does this interpretation match your intention of that sentence? I am 
> also wondering what others think of this. I can imagine that the ihave 
> authors have some amendments, but I think the text that follows the 
> aforementioned sentence in the draft should cover most potential issues.

While I generally agree with the intent of your new text, I think it 
demonstrates cases when saying less is actually better than saying more: 
a very specific text might unintentionally exclude some valid checks.

Date: Sun, 30 Nov 2008 11:03:19 +0100
From: Arnt Gulbrandsen <[email-masked]>
To: [email-masked]
Subject: Re: evaluating tests when the result makes no sense
Sender: [email-masked]

Philip Guenther writes:
> On Sat, 29 Nov 2008, Arnt Gulbrandsen wrote:
>>  Further, and perhaps more seriously, I don't see any requirement of 
>>  order. As far as I can see, a sieve implementation can evalue 
>>  header and envelope in either order in this case:
>
> An implementation can do that only if the 'variables' extensions has 
> not been required. The variables spec, RFC 5229, says this in section 
> 3.2:
>    The interpreter MUST short-circuit tests, i.e., not perform more 
>    tests than necessary to find the result. Evaluation order MUST be 
>    left to right. If a test has two or more list arguments, the 
>    implementation is free to choose which to iterate over first.

OK.

I had a vague intention of someday doing just that... "apply sieve 
script to all old mail", which would transmogrify the sieve script into 
a series of rather complex SQL queries and shuffle mail around from 
where it is to where the sieve script would have filed it. That would, 
among other things, make the RDBMS query planner choose evaluation 
order based on expected performance, and probably make the whole 
operation faster by a few orders of magnitude.

Arnt

From: Philip Guenther <[email-masked]>
To: Arnt Gulbrandsen <[email-masked]>
cc: [email-masked]
Subject: Re: evaluating tests when the result makes no sense
Sender: [email-masked]

On Sat, 29 Nov 2008, Arnt Gulbrandsen wrote:
> I _thought_ sieve required short-circuiting, but didn't feel courageous 
> enough reply to Dilian's message...

The base spec doesn't require it because it's not observable without 
variables.

> The only occurence of "short-curcuit" in 3028 was removed in 5228, and I 
> didn't see anything to replace it. Further, and perhaps more seriously, 
> I don't see any requirement of order. As far as I can see, a sieve 
> implementation can evalue header and envelope in either order in this 
> case:

An implementation can do that only if the 'variables' extensions has not 
been required.  The variables spec, RFC 5229, says this in section 3.2:
   The interpreter MUST short-circuit tests, i.e., not perform more
   tests than necessary to find the result.  Evaluation order MUST be
   left to right.  If a test has two or more list arguments, the
   implementation is free to choose which to iterate over first.

Philip Guenther

Date: Sat, 29 Nov 2008 23:02:52 +0100
From: Arnt Gulbrandsen <[email-masked]>
To: [email-masked]
Subject: Re: evaluating tests when the result makes no sense
Sender: [email-masked]

Hi,

I _thought_ sieve required short-circuiting, but didn't feel courageous 
enough reply to Dilian's message...

The only occurence of "short-curcuit" in 3028 was removed in 5228, and I 
didn't see anything to replace it. Further, and perhaps more seriously, 
I don't see any requirement of order. As far as I can see, a sieve 
implementation can evalue header and envelope in either order in this 
case:

     if anyof ( header ... , envelope ... ) {
         ...
     }

Have I been smoking the good stuff?

Arnt

Date: Sat, 29 Nov 2008 13:37:51 -0800 (PST)
From: Ned Freed <[email-masked]>
Subject: Re: evaluating tests when the result makes no sense
To: =?UTF-8?B?0JTQuNC70Y/QvSDQn9Cw0LvQsNGD0LfQvtCy?= <[email-masked]>
Cc: IETF Sieve WG <[email-masked]>
Sender: [email-masked]

> Are implementations permitted to stop evaluating a test,

Yes. Not only are they permitted to do so, the variables extensions makes
short-circuiting a requirement - see RFC 5229 section 3.2.

> when the result
> makes no sense, e.g. in anyof(true, header "A" "B") evaluate "header"?

I think you meant "don't evaluate".

> The point is, that Sieve-Variables, says (Sec. 3.2. Match Variables)

>     The decimal value of the match variable name will index the list of
>     matching strings from the most recently evaluated successful match of
>     type ":matches".

> However it is not very clear for me if every test needs to be evaluated,

Which is exactly why the specification requires short-circuiting.

> and thus if the last :match test was permitted to be evaluated, is it
> necessary to evaluate it? Consider a message

> A: Xa
> B: Xb
> C: Mc

> and
> if anyof (header :matches ["A", "B"] "X*",
>            header :matches "C" "M*") {
>      //what is ${1}?
> }

> What would be the value of ${1}

It's required to be "a".

> * a - because after finding it out, the result of the first header test
> is clear.  Having true as the first parameter of anyof, then anyof stops
> evaluation.
> * c - because this is the last matched test and the evaluation has not
> stopped after finding out that the first header test suffices for the
> result of anyof
> * b - header evaluates all possibilities, and anyof stops when the
> result is clear.

> Thanks in advance for your opinion,

This isn't a question of having an opinion, it's a question of what the
specification already requires.

				Ned

Date: Sat, 29 Nov 2008 18:08:21 +0000
From: Alexey Melnikov <[email-masked]>
To: Mester <[email-masked]>
CC: Arnt Gulbrandsen <[email-masked]>, [email-masked]
Subject: Re: forward mail to a local user
Sender: [email-masked]

Mester wrote:

>Hi,
>
>I also tried it but it has the same resault.
>I tried localuser@localdomain but it sais invalid e-mail address.
>  
>
I think you want to use:

 redirect "[email-masked]";

I.e. there is no such Sieve action as 'forward'. Also the email address must be quoted (as suggested by Arnt).

>Attila
>  
>
>>[email-masked] writes:
>>    
>>
>>>if header :contains ["received"] "for EMAIL@ALIAS" {
>>>        forward localuser;
>>>}
>>>      
>>>
>>Try forward "[email-masked]";
>>
>>Some software does not have the concept of local users at all.
>>
>>Arnt
>>    
>>

Date: Sat, 29 Nov 2008 11:08:47 +0100
From: Mester <[email-masked]>
To: Arnt Gulbrandsen <[email-masked]>
CC: [email-masked]
Subject: Re: forward mail to a local user
Sender: [email-masked]

Hi,

I also tried it but it has the same resault.
I tried localuser@localdomain but it sais invalid e-mail address.

Attila

> [email-masked] writes:
>> if header :contains ["received"] "for EMAIL@ALIAS" {
>>         forward localuser;
>> }
> 
> Try forward "[email-masked]";
> 
> Some software does not have the concept of local users at all.
> 
> Arnt
> 
> 

Date: Sat, 29 Nov 2008 10:30:55 +0100
From: Arnt Gulbrandsen <[email-masked]>
To: [email-masked]
Subject: Re: forward mail to a local user
Cc: [email-masked]
Sender: [email-masked]

[email-masked] writes:
> if header :contains ["received"] "for EMAIL@ALIAS" {
>         forward localuser;
> }

Try forward "[email-masked]";

Some software does not have the concept of local users at all.

Arnt

Date: Sat, 29 Nov 2008 10:12:09 +0100
From: Mester <[email-masked]>
To: [email-masked]
Subject: forward mail to a local user
Sender: [email-masked]

Hi,

I have a Debian 4.0 server with Sieve enabled Cyrus IMAP and Exim4.
I have one e-mail address at my internet provider with two aliases. I
use fetchmail to download the e-mail account to a local user, but I want
to forward the messages arrived with one alias to another local user.

I wrote a small script but it sais invalid e-mail address. How can I
correct it? (sendmail localuser < ... works just fine)

My script looks like this:

if header :contains ["received"] "for EMAIL@ALIAS" {
	forward localuser;
}

Attila Mesterhazy

Date: Thu, 27 Nov 2008 15:17:16 +0000
From: Alexey Melnikov <[email-masked]>
To: [email-masked]
Subject: Re: WGLC on draft-melnikov-sieve-imapext-metadata-04.tx
Sender: [email-masked]

Alexey Melnikov wrote:

> Folks,
> with my co-chair hat on I would like to start the Sieve Working Group 
> Last Call for the following document:
>
> The SIEVE mail filtering language - extension for accessing mailbox 
> metadata
> <http://www.ietf.org/internet-drafts/draft-melnikov-sieve-imapext-metadata-04.txt> 
>
>
> The Working Group Last Call for this document starts on November 10th and
> will end on November 28th (so it is almost 3 weeks, so that the IETF
> meeting in Dublin is covered).

I've updated the document once (mostly editirial) based on comments from 
Cyrus. See 
<http://tools.ietf.org/rfcdiff?difftype=--hwdiff&url2=http://tools.ietf.org/id/draft-melnikov-sieve-imapext-metadata-05.txt> 
for a detailed list of changes.

I am planning to update the document once again to remove "_" from test 
names, e.g. "mailbox_exists" would become "mailboxexists". Please speak 
up if you have any objections.

X-Mail-Sent-By-AEGEE.org-Account: didopalauzov
Date: Thu, 27 Nov 2008 13:52:46 +0100
From: =?UTF-8?B?0JTQuNC70Y/QvSDQn9Cw0LvQsNGD0LfQvtCy?= <[email-masked]>
To: IETF Sieve WG <[email-masked]>
Subject: evaluating tests when the result makes no sense
Sender: [email-masked]

Hello,

Are implementations permitted to stop evaluating a test, when the result 
makes no sense, e.g. in anyof(true, header "A" "B") evaluate "header"?

The point is, that Sieve-Variables, says (Sec. 3.2. Match Variables)

    The decimal value of the match variable name will index the list of
    matching strings from the most recently evaluated successful match of
    type ":matches".

However it is not very clear for me if every test needs to be evaluated, 
and thus if the last :match test was permitted to be evaluated, is it 
necessary to evaluate it? Consider a message

A: Xa
B: Xb
C: Mc

and
if anyof (header :matches ["A", "B"] "X*",
           header :matches "C" "M*") {
     //what is ${1}?
}

What would be the value of ${1}
* a - because after finding it out, the result of the first header test 
is clear.  Having true as the first parameter of anyof, then anyof stops 
evaluation.
* c - because this is the last matched test and the evaluation has not 
stopped after finding out that the first header test suffices for the 
result of anyof
* b - header evaluates all possibilities, and anyof stops when the 
result is clear.

Thanks in advance for your opinion,
	Дилян

Date: Wed, 26 Nov 2008 04:40:52 +0000
From: Alexey Melnikov <[email-masked]>
To: Aaron Stone <[email-masked]>
CC: [email-masked]
Subject: Re: ManageSieve: sieve: URIs and OWNER capability
Sender: [email-masked]

Aaron Stone wrote:

>On Tue, 2008-11-25 at 20:54 +0000, Alexey Melnikov wrote:
>  
>
>>Alexey Melnikov wrote:
>>
>> [...]
>>    
>>
>>>>Then two other changes would make this particularly useful:
>>>>1. Allow a script name (at least in putscript) to be either a Sieve URI
>>>>or a local name.  This allows, for example, a secretary to set the
>>>>script for her boss.
>>>>        
>>>>
>>We've discussed this in more details in Minneapolis and the room 
>>agreement was that ManageSieve commands should accept URIs in addition 
>>to script names.
>>However, I am having second thoughts on this.
>>
>>1). It looks like at least the following commands would need to be updated:
>> HAVESPACE, PUTSCRIPT, GETSCRIPT, DELETESCRIPT
>>
>>But LISTSCRIPTS returns script names. Should it be changed to return 
>>URIs? I think this would break all existing clients, so I don't think 
>>that an unextended version of LISTSCRIPTS should do that.
>>
>>Also, should it list *all* scripts accessible by the current user, or 
>>just personal scripts? The former seems like an extension that Dilian 
>>was talking about.
>>
>>2). Considering that Sieve script names are in Unicode it would also 
>>make sense to specify IRI version of Sieve URIs. I frankly don't have 
>>experience specifying IRIs.
>>
>>
>>So my current thinking is that these changes might have undesired 
>>effects on existing clients and they also seem to require quite a bit of 
>>work.
>>But I really want to get this document done (for Lemonade/OMA MEM among 
>>other things). So can we postpone this change till an extension?
>>    
>>
>+51% wait to work on an extension. Now that we've enumerated some more
>of the issues URI's raise, I think it's likely we'll get really stuck on
>working out the details.
>  
>
Agreed.

>Is there another way that we can achieve the goal of one user modifying
>another user's Sieve scripts that's not too ugly and can easily become
>URI in a future revision?
>  
>
We already have UNAUTHENTICATE.
But using URIs would be quite elegant.

>Is there a path we might agree on for merging Sieve management into IMAP
>protocol, and cease work on ManageSieve at some reasonable level of
>functionality?
>  
>
You already know my personal answer to this question ;-).

Subject: Re: ManageSieve: sieve: URIs and OWNER capability
From: Aaron Stone <[email-masked]>
To: Alexey Melnikov <[email-masked]>
Cc: [email-masked]
Date: Tue, 25 Nov 2008 13:28:24 -0800
Sender: [email-masked]

On Tue, 2008-11-25 at 20:54 +0000, Alexey Melnikov wrote:
> Alexey Melnikov wrote:
> 
>  [...]
> 
> >> Then two other changes would make this particularly useful:
> >> 1. Allow a script name (at least in putscript) to be either a Sieve URI
> >> or a local name.  This allows, for example, a secretary to set the
> >> script for her boss.
> >
> We've discussed this in more details in Minneapolis and the room 
> agreement was that ManageSieve commands should accept URIs in addition 
> to script names.
> However, I am having second thoughts on this.
> 
> 1). It looks like at least the following commands would need to be updated:
>  HAVESPACE, PUTSCRIPT, GETSCRIPT, DELETESCRIPT
> 
> But LISTSCRIPTS returns script names. Should it be changed to return 
> URIs? I think this would break all existing clients, so I don't think 
> that an unextended version of LISTSCRIPTS should do that.
> 
> Also, should it list *all* scripts accessible by the current user, or 
> just personal scripts? The former seems like an extension that Dilian 
> was talking about.
> 
> 2). Considering that Sieve script names are in Unicode it would also 
> make sense to specify IRI version of Sieve URIs. I frankly don't have 
> experience specifying IRIs.
> 
> 
> So my current thinking is that these changes might have undesired 
> effects on existing clients and they also seem to require quite a bit of 
> work.
> But I really want to get this document done (for Lemonade/OMA MEM among 
> other things). So can we postpone this change till an extension?

+51% wait to work on an extension. Now that we've enumerated some more
of the issues URI's raise, I think it's likely we'll get really stuck on
working out the details.

Is there another way that we can achieve the goal of one user modifying
another user's Sieve scripts that's not too ugly and can easily become
URI in a future revision?

Is there a path we might agree on for merging Sieve management into IMAP
protocol, and cease work on ManageSieve at some reasonable level of
functionality?

> >> 2. Add a capability that advertises the owner name that applies to a 
> >> given managesieve session (this would be derived from the 
> >> authentication id).
> >
> > [I think Chris meant "authorization identity" above.]
> >
> > So, OWNER corresponds to 2). When using SASL authentication a client 
> > can authenticate as one person ("authentication identity"), but be 
> > allowed to act as another ("authorization identity"). OWNER is 
> > returning the latter.
> >
> > I have a weak preference for having the OWNER capability. So far I 
> > found a couple of reasons for it:
> >
> > Imagine you have a ManageSieve client that need to process several 
> > Sieve URIs (e.g. to update several scripts).
> > The client would be able to compare the "owner" part of an URI against 
> > the value returned in the OWNER capability in order to decide if it 
> > needs to authenticate as another user before processing another script 
> > identified by a URI.
> >
> > I also think that the OWNER capability can be useful for debugging 
> > (i.e. for analyzing protocol trace logs). Of course this only helps if 
> > the client requests capabilities after authentication.
> 
> I've missed another obvious use case: constructing URIs to give them to 
> third parties.

It would be a shame if the Sieve URI's ended up being like email message
ID's -- they look like something that you could use to uniquely identify
and retrieve a message from somewhere in the universe, but not really.

Aaron

Date: Tue, 25 Nov 2008 20:54:17 +0000
From: Alexey Melnikov <[email-masked]>
To: [email-masked]
Subject: Re: ManageSieve: sieve: URIs and OWNER capability
Sender: [email-masked]

Alexey Melnikov wrote:

 [...]

>> Then two other changes would make this particularly useful:
>> 1. Allow a script name (at least in putscript) to be either a Sieve URI
>> or a local name.  This allows, for example, a secretary to set the
>> script for her boss.
>
We've discussed this in more details in Minneapolis and the room 
agreement was that ManageSieve commands should accept URIs in addition 
to script names.
However, I am having second thoughts on this.

1). It looks like at least the following commands would need to be updated:
 HAVESPACE, PUTSCRIPT, GETSCRIPT, DELETESCRIPT

But LISTSCRIPTS returns script names. Should it be changed to return 
URIs? I think this would break all existing clients, so I don't think 
that an unextended version of LISTSCRIPTS should do that.

Also, should it list *all* scripts accessible by the current user, or 
just personal scripts? The former seems like an extension that Dilian 
was talking about.

2). Considering that Sieve script names are in Unicode it would also 
make sense to specify IRI version of Sieve URIs. I frankly don't have 
experience specifying IRIs.

So my current thinking is that these changes might have undesired 
effects on existing clients and they also seem to require quite a bit of 
work.
But I really want to get this document done (for Lemonade/OMA MEM among 
other things). So can we postpone this change till an extension?

>> 2. Add a capability that advertises the owner name that applies to a 
>> given managesieve session (this would be derived from the 
>> authentication id).
>
> [I think Chris meant "authorization identity" above.]
>
> So, OWNER corresponds to 2). When using SASL authentication a client 
> can authenticate as one person ("authentication identity"), but be 
> allowed to act as another ("authorization identity"). OWNER is 
> returning the latter.
>
> I have a weak preference for having the OWNER capability. So far I 
> found a couple of reasons for it:
>
> Imagine you have a ManageSieve client that need to process several 
> Sieve URIs (e.g. to update several scripts).
> The client would be able to compare the "owner" part of an URI against 
> the value returned in the OWNER capability in order to decide if it 
> needs to authenticate as another user before processing another script 
> identified by a URI.
>
> I also think that the OWNER capability can be useful for debugging 
> (i.e. for analyzing protocol trace logs). Of course this only helps if 
> the client requests capabilities after authentication.

I've missed another obvious use case: constructing URIs to give them to 
third parties.

Date: Tue, 25 Nov 2008 20:45:38 +0000
From: Alexey Melnikov <[email-masked]>
To: =?UTF-8?B?0JTQuNC70Y/QvSDQn9Cw0LvQsNGD0LfQvtCy?= <[email-masked]>
CC: IETF Sieve WG <[email-masked]>
Subject: Re: managesieve: formats; :global; read-only; checkscript
Sender: [email-masked]

Hi Дилян,

Date: Mon, 24 Nov 2008 00:37:36 -0800
From: Matthew Elvey <[email-masked]>
To: Arnt Gulbrandsen <[email-masked]>
CC: [email-masked]
Subject: Re: draft-ietf-sieve-refuse-reject approved by IESG
Sender: [email-masked]

On 11/21/08 4:11 PM, Arnt Gulbrandsen wrote:
>
> Matthew Elvey writes:
>> I'm sorry if I didn't make clear the main change I wanted made (undone).
>
> My code is able, or not, to carry out an ereject in a manner different 
> from reject. It depends on this and that, including factors beyond 
> control of my code. The code may even be able to do it when the sieve 
> script is uploaded, but unable to when it's executed.
Sorry, I don't have ESP, so I don't know what you're talking about.   I 
came up with a contrived example, but haven't come up with a realistic 
one.  Have you one you can provide?
>
> Making a script invalid between upload and execution is not at all 
> desirable. Not having ereject at all is not desirable either. 
You've not presented a case (real world or otherwise) fixed by Aaron's 
change I wanted undone.

Date: Sat, 22 Nov 2008 20:04:56 +0100
From: Arnt Gulbrandsen <[email-masked]>
To: sieve mailing list <[email-masked]>
Subject: subaddress, *sigh*
Sender: [email-masked]

Far too many web shopping sites and other software refuse to accept 
[email-masked] as a valid address. This week I've run into 
something worse. Tobit.de makes a mail server which, AFAICT, transforms 
[email-masked] into arnt�[email-masked]. Absolutely 
lovely.

Arnt

Date: Sat, 22 Nov 2008 01:11:09 +0100
From: Arnt Gulbrandsen <[email-masked]>
To: [email-masked]
Subject: Re: draft-ietf-sieve-refuse-reject approved by IESG
Sender: [email-masked]

Matthew Elvey writes:
> I'm sorry if I didn't make clear the main change I wanted made (undone).

And since someone needs to say why this didn't sway the WG rough 
consensus, I'll say why I'm not persuaded.

My code is able, or not, to carry out an ereject in a manner different 
from reject. It depends on this and that, including factors beyond 
control of my code. The code may even be able to do it when the sieve 
script is uploaded, but unable to when it's executed.

Making a script invalid between upload and execution is not at all 
desirable. Not having ereject at all is not desirable either. And so 
on. Aaron's solution is the best compromise I can think of, in the 
sense that it minimises the sum of undesirable aspects.

Arnt

Date: Fri, 21 Nov 2008 14:29:23 -0800
From: Matthew Elvey <[email-masked]>
To: Aaron Stone <[email-masked]>
CC: Alexey Melnikov <[email-masked]>, Lisa Dusseault <[email-masked]>, Chris Newman <[email-masked]>, [email-masked]
Subject: Re: draft-ietf-sieve-refuse-reject approved by IESG
Sender: [email-masked]

On 11/21/08 10:05 AM, Aaron Stone wrote:
> Hi Matthew,
>
> We can definitely get the author information fixed before publication,
> at least during AUTH48 if not sooner by request to the RFC Editor.
>    
Thanks.  FYI:

On 7/20/08 6:51 AM, Matthew Elvey wrote to webtools@ and ietf-action@:
> Hello, and thanks for your surely often thankless work.
>
> https://datatracker.ietf.org/drafts/draft-ietf-sieve-refuse-reject/ has
> my name misspelled in two places.
>
> Please
> s/Mathew Elley/Matthew Elvey/ (you can check the draft:
> http://ietfreport.isoc.org/ids/draft-ietf-sieve-refuse-reject-07.txt to
> verify the correct spelling.  Please also replace the email address
> ([email-masked]) with [email-masked]; the
> former is no longer valid.
>
> The spelling errors have started to spread;
> http://www.google.com/search?&q="Mathew Elley" shows this.
>    
On 7/28/08 3:14 PM, Matthew Elvey wrote:
> On Mon, 21 Jul 2008 11:28:52 -0700, "Cindy Morgan via RT"
> <iesg-secretary@>  said:
>    
>> According to our records, your request has been resolved. If you have any
>> further questions or concerns, please respond to this message.
>>      
>
> Thanks.
>
> It seems the spelling was corrected, but my email was removed instead of
> replaced.
> Since I'm strongly opposed to the draft, I'd like to remain reachable...
>
> Thanks.
>    
Aaron Stone continues:
> I didn't respond to your earlier objections because I couldn't figure
> out where the substantive changes were, and even so, none had any WG
> consensus. I apologize for basically ignoring you, but the WG has strong
> consensus on this document as it now stands and really, really wants to
> see it published.
>    
I'm sorry if I didn't make clear the main change I wanted made 
(undone).  Let me try, 3 more times, to make it as understandable as I 
can, for the record.  Unfortunately, every explanation seems to require 
several qualifiers.

You changed the specification so that a compliant implementation could 
allow a "require" of the enhanced reject action (i.e. "refuse" or 
"ereject") to succeed on a system that had no capability to perform 
protocol level message rejection of messages from the outside world 
because of an intervening store-and-forward MTA within the ADMD of the 
implementation.  I never saw significant support expressed for that change.

I have no reason to think the change was intentional and harbor no grudge.

If I could make the explanation simpler, I would.  Let me state it as a 
question:
Can the ereject action be available in environments that DO NOT support 
protocol level rejection of messages as they come in from untrusted 
third parties but DO support protocol level rejection as messages arrive 
at an MDA from an MTA within the ADMD of the MDA?

Or here's a graphical version.  In the implementation below, can x be 
store-and-forward or not?
          (If it is, the MTA cannot perform protocol level rejection of 
messages from the MSA in response to a signal from the MDA, because it 
will have already accepted the message from the MSA.
If it is not, then the MTA can perform protocol level rejection of 
messages from the MSA in response to a signal from the MDA, because it 
will have not yet accepted the message from the MSA.)

                                          ADMD
                                         +--------------------------------+
                                         |                                |
+----------+    Internet connection     | +----------+ x +----------+  |
|   MSA    |--------------------------->|-->|   MTA    |-->|    MDA   |  |
+----------+                            | +----------+ +----------+  |
                                         |                                |
                                         +--------------------------------+

It can be reverted with a simple insertion of a single sentence, e.g.:

The ereject action MUST NOT be available in environments that do not 
support protocol level rejection of messages as they come in from third 
parties in response to an ereject action, e.g. an MUA or an MDA 
receiving messages on a store-and-forward basis from an MTA.

The current spec actually has almost identical language already:
    "The ereject action MUST NOT be available in environments that do not
    support protocol level rejection, e.g. an MUA"
but the details at the end of the sentence are critical.

> Best,
> Aaron

X-Mail-Sent-By-AEGEE.org-Account: didopalauzov
Date: Fri, 21 Nov 2008 21:41:45 +0100
From: =?UTF-8?B?0JTQuNC70Y/QvSDQn9Cw0LvQsNGD0LfQvtCy?= <[email-masked]>
To: IETF Sieve WG <[email-masked]>
Subject: managesieve: formats; :global; read-only; checkscript
Sender: [email-masked]

Hello,

Moreover

Greetings,
	Dilian

Subject: Re: draft-ietf-sieve-refuse-reject approved by IESG
From: Aaron Stone <[email-masked]>
To: Matthew Elvey <[email-masked]>
Cc: Alexey Melnikov <[email-masked]>, Lisa Dusseault <[email-masked]>, Chris Newman <[email-masked]>, [email-masked]
Date: Fri, 21 Nov 2008 10:05:04 -0800
Sender: [email-masked]

Hi Matthew,

We can definitely get the author information fixed before publication,
at least during AUTH48 if not sooner by request to the RFC Editor.

I didn't respond to your earlier objections because I couldn't figure
out where the substantive changes were, and even so, none had any WG
consensus. I apologize for basically ignoring you, but the WG has strong
consensus on this document as it now stands and really, really wants to
see it published.

Best,
Aaron

On Fri, 2008-11-21 at 01:28 -0800, Matthew Elvey wrote:
> On 11/19/08 11:07 AM, Alexey Melnikov wrote:
> > Lisa Dusseault wrote (Re: Fwd: SIEVE bounced SIEVE bounce message):
> >
> >> Oh the irony.  I send a message saying that the SIEVE document 
> >> refuse-reject has been approved, and it gets bounced by Elvey's SIEVE 
> >> filter.
> >
> > Yes. Messages from Cyrus, Aaron and myself all bounced as well.
> Sorry about that.  Perhaps you were using the [email-masked] 
> address that I retired long ago.  I did not want that address in 
> refuse-reject either.  I asked that it be replaced with 
> matthew@elvey...., to no avail.  Too late, no?  I wrote to the list on 
> 9/10/08: "I believe ... issues that have been raised need to be 
> addressed; a WGLC and LC are also needed. " I don't see that -09 had 
> either a WGLC or LC.
> 
> -09 is a big improvement on RFC 3028, but fails to address some of the 
> issues I raised on on 9/10/08, primarily the inappropriateness of 
> allowing a system "B" to be considered compliant with "ereject".
> 
> (BTW, the MAY in
> "   However implementations MAY refuse delivery over SMTP/LMTP 
> protocol    " (line 318)
> should be a SHOULD; I don't see what holds it back. The last-minute 
> removals of the word "purported" also makes the spec misleading; they 
> hide a hurdle that contributed to its deficiencies.)
> 
> I am still strongly opposed to to a situation where, if a system implementing the spec works on a store-and-forward basis, it can claim to support ereject, as defined in an RFC.
> 
> We've got Cyrus Daboo, TS Glassy, John Kleinsin, and Kristin Hubner 
> using a ridiculous straw man argument as the excuse to push through this 
> flawed I-D to RFC status, instead of making the small limited changes I 
> have pushed for.  (Perhaps some of them led the others to be confused.)  
> Specifically, they act as if I haven't made it extremely clear, on 
> multiple occasions, that I know that there are plenty of key use cases 
> where only doing SMTP protocol rejection is not possible.   I had, but 
> nonetheless, claiming that I hadn't and that they existed was the 
> primary straw man argument used.  I'm the primary author of the first 
> half dozen versions of this draft, all of which, as I'd recently pointed 
> out, went into great detail to make exceptions (including MDNs and DSNs) 
> for the key use cases where SMTP protocol rejection is not possible.  So 
> once again, for the record, I'd like to point out that I never made 
> light of those exceptions.
> Amazingly, that straw man argument was in response to my post in which I 
> said, among other things:
> 
> Ned acts like [I'm] saying that I'm against allowing Japanese users to fall
> back to out-of-transaction rejects when non-ASCII reject strings need to
> be used.  I'm not.  Look at the drafts I wrote!  They don't do that!
> 
> 
> 
> 
> I'm not upset that people disagree with me.  I'd be fine if the 
> consensus in the WG (despite my opposition) was that the spam the draft 
> unnecessarily permits wasn't important, and if the IESG voted to make it 
> an RFC on that basis, following IETF procedure.  I would be unhappy, 
> sure. but I wouldn't be pissed off.
> But violating process, avoiding debates on the merits, and resorting to 
> straw man attacks?  That was not cool, and not professional.
> Ned's nasty insults and smearing of me was particularly galling - Ned 
> provided no specifics, but claimed I made many inaccurate references to 
> him and Sun.  I on the other hand, responded to Ned's (and others') 
> debate points. I pointed out where Ned had misread what I'd said, or I 
> had misspoken, or was wrong, or disagreed.  If we don't have debates on 
> the merits, and honest dialogue, but instead give political speeches, or 
> worse, attack each other, (both of which remind me of typical US 
> political debates) we end up with lousy specifications.
> 
> Well, I guess on the bright side, at least the debate is over.  The 
> horse is dead, the sausage stuffed, as far as I'm concerned.  DNR, I say.
> >
> >> Lisa
> >>
> >> Begin forwarded message:
> >>
> >>> *From: *Mail Sieve Subsystem <[email-masked] 
> >>> <mailto:[email-masked]>>
> >>> *Date: *November 19, 2008 12:07:21 PM CST
> >>> *To: *<[email-masked] <mailto:[email-masked]>>
> >>> *Subject: **Automatically rejected mail*
> >>>
> >>> Your message was automatically rejected by Sieve, a mail
> >>> filtering language.
> >>> ...
> >>
> >>
> >>>
> >>>
> >>> Hi,
> >>>
> >>> There are no remaining DISCUSS positions on this document, and it  
> >>> looks like it has enough ballot positions filled to approve. There 
> >>> are  no RFC Editor notes.
> >>>
> >>> Thanks,
> >>> Lisa
> >>>
> >>>
> >>>
> >>>
> >>
> >
> 

Date: Fri, 21 Nov 2008 01:28:39 -0800
From: Matthew Elvey <[email-masked]>
To: Alexey Melnikov <[email-masked]>
CC: Lisa Dusseault <[email-masked]>, [email-masked], Chris Newman <[email-masked]>, [email-masked], [email-masked]
Subject: draft-ietf-sieve-refuse-reject approved by IESG
Sender: [email-masked]

On 11/19/08 11:07 AM, Alexey Melnikov wrote:
> Lisa Dusseault wrote (Re: Fwd: SIEVE bounced SIEVE bounce message):
>
>> Oh the irony.  I send a message saying that the SIEVE document 
>> refuse-reject has been approved, and it gets bounced by Elvey's SIEVE 
>> filter.
>
> Yes. Messages from Cyrus, Aaron and myself all bounced as well.
Sorry about that.  Perhaps you were using the [email-masked] 
address that I retired long ago.  I did not want that address in 
refuse-reject either.  I asked that it be replaced with 
matthew@elvey...., to no avail.  Too late, no?  I wrote to the list on 
9/10/08: "I believe ... issues that have been raised need to be 
addressed; a WGLC and LC are also needed. " I don't see that -09 had 
either a WGLC or LC.

-09 is a big improvement on RFC 3028, but fails to address some of the 
issues I raised on on 9/10/08, primarily the inappropriateness of 
allowing a system "B" to be considered compliant with "ereject".

(BTW, the MAY in
"   However implementations MAY refuse delivery over SMTP/LMTP 
protocol    " (line 318)
should be a SHOULD; I don't see what holds it back. The last-minute 
removals of the word "purported" also makes the spec misleading; they 
hide a hurdle that contributed to its deficiencies.)

I am still strongly opposed to to a situation where, if a system implementing the spec works on a store-and-forward basis, it can claim to support ereject, as defined in an RFC.

We've got Cyrus Daboo, TS Glassy, John Kleinsin, and Kristin Hubner 
using a ridiculous straw man argument as the excuse to push through this 
flawed I-D to RFC status, instead of making the small limited changes I 
have pushed for.  (Perhaps some of them led the others to be confused.)  
Specifically, they act as if I haven't made it extremely clear, on 
multiple occasions, that I know that there are plenty of key use cases 
where only doing SMTP protocol rejection is not possible.   I had, but 
nonetheless, claiming that I hadn't and that they existed was the 
primary straw man argument used.  I'm the primary author of the first 
half dozen versions of this draft, all of which, as I'd recently pointed 
out, went into great detail to make exceptions (including MDNs and DSNs) 
for the key use cases where SMTP protocol rejection is not possible.  So 
once again, for the record, I'd like to point out that I never made 
light of those exceptions.
Amazingly, that straw man argument was in response to my post in which I 
said, among other things:

Ned acts like [I'm] saying that I'm against allowing Japanese users to fall
back to out-of-transaction rejects when non-ASCII reject strings need to
be used.  I'm not.  Look at the drafts I wrote!  They don't do that!

I'm not upset that people disagree with me.  I'd be fine if the 
consensus in the WG (despite my opposition) was that the spam the draft 
unnecessarily permits wasn't important, and if the IESG voted to make it 
an RFC on that basis, following IETF procedure.  I would be unhappy, 
sure. but I wouldn't be pissed off.
But violating process, avoiding debates on the merits, and resorting to 
straw man attacks?  That was not cool, and not professional.
Ned's nasty insults and smearing of me was particularly galling - Ned 
provided no specifics, but claimed I made many inaccurate references to 
him and Sun.  I on the other hand, responded to Ned's (and others') 
debate points. I pointed out where Ned had misread what I'd said, or I 
had misspoken, or was wrong, or disagreed.  If we don't have debates on 
the merits, and honest dialogue, but instead give political speeches, or 
worse, attack each other, (both of which remind me of typical US 
political debates) we end up with lousy specifications.

Well, I guess on the bright side, at least the debate is over.  The 
horse is dead, the sausage stuffed, as far as I'm concerned.  DNR, I say.
>
>> Lisa
>>
>> Begin forwarded message:
>>
>>> *From: *Mail Sieve Subsystem <[email-masked] 
>>> <mailto:[email-masked]>>
>>> *Date: *November 19, 2008 12:07:21 PM CST
>>> *To: *<[email-masked] <mailto:[email-masked]>>
>>> *Subject: **Automatically rejected mail*
>>>
>>> Your message was automatically rejected by Sieve, a mail
>>> filtering language.
>>> ...
>>
>>
>>>
>>>
>>> Hi,
>>>
>>> There are no remaining DISCUSS positions on this document, and it  
>>> looks like it has enough ballot positions filled to approve. There 
>>> are  no RFC Editor notes.
>>>
>>> Thanks,
>>> Lisa
>>>
>>>
>>>
>>>
>>
>

From: [email-masked]
To: [email-masked]
Cc: [email-masked]
Subject: I-D Action:draft-ietf-sieve-mime-loop-08.txt 
Date: Thu, 20 Nov 2008 15:45:01 -0800 (PST)
Sender: [email-masked]

--NextPart

A New Internet-Draft is available from the on-line Internet-Drafts directories.
This draft is a work item of the Sieve Mail Filtering Language Working Group of the IETF.

	Title           : Sieve Email Filtering: MIME part Tests, Iteration, Extraction, Replacement and Enclosure
	Author(s)       : T. Hansen, C. Daboo
	Filename        : draft-ietf-sieve-mime-loop-08.txt
	Pages           : 21
	Date            : 2008-11-20

This document defines extensions to the Sieve email filtering
language to permit analysis and manipulation of the MIME body parts
of an email message.

Note

This document is being discussed on the MTA-FILTERS mailing list,
[email-masked].

A URL for this Internet-Draft is:
http://www.ietf.org/internet-drafts/draft-ietf-sieve-mime-loop-08.txt

Internet-Drafts are also available by anonymous FTP at:
ftp://ftp.ietf.org/internet-drafts/

Below is the data which will enable a MIME compliant mail reader
implementation to automatically retrieve the ASCII version of the
Internet-Draft.

--NextPart
Content-Type: Message/External-body;
	name="draft-ietf-sieve-mime-loop-08.txt";
	site="ftp.ietf.org";
	access-type="anon-ftp";
	directory="internet-drafts"

Content-Type: text/plain
Content-ID:     <[email-masked]>

--NextPart--

Date: Thu, 20 Nov 2008 16:38:09 -0600
From: Alexey Melnikov <[email-masked]>
To: [email-masked]
Subject: Who is planning to implement draft-freed-sieve-notary-02.txt?
Sender: [email-masked]

I would appreciate feedback from people who would like to implement this 
document or have already implemented extensions from it.
Please reply to the mailing list or directly to me.

From: The IESG <[email-masked]>
To: IETF-Announce <[email-masked]>
Cc: Internet Architecture Board <[email-masked]>, RFC Editor <[email-masked]>, sieve mailing list <[email-masked]>, sieve chair <[email-masked]>
Subject: Protocol Action: 'Sieve Email Filtering: Reject and  Extended Reject Extensions' to Proposed Standard 
Date: Wed, 19 Nov 2008 11:19:55 -0800 (PST)
Sender: [email-masked]

The IESG has approved the following document:

- 'Sieve Email Filtering: Reject and Extended Reject Extensions '
   <draft-ietf-sieve-refuse-reject-09.txt> as a Proposed Standard

This document is the product of the Sieve Mail Filtering Language Working 
Group. 

The IESG contact persons are Lisa Dusseault and Chris Newman.

A URL of this Internet-Draft is:
http://www.ietf.org/internet-drafts/draft-ietf-sieve-refuse-reject-09.txt

Technical Summary

   This memo updates the definition of the Sieve mail filtering language
   "reject" extension, originally defined in RFC 3028. The original 
   Sieve "reject" action defined in RFC 3028 required use of MDNs for 
   rejecting messages, thus contributing to the spam to victims of 
   certain spoofing attacks.  

   This memo allows 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.

Working Group Summary

   There is controversy, because the original author of the document,
   Matthew Elvey, objected during IETF Last Call, and does not like some 
   of the decisions made by the WG.  Elvey asked until the beginning of
   September to explain his objections and we are still waiting for
   these explanations.  The WG chairs feel they have rough WG consensus
   on the document, particularly around the choices that Elvey 
   disapproves of.
  
Document Quality

   This is a revision to an existing standard, based on implementation
   and deployment experience.  Thus, the quality of the document 
   reflects that actual experience and feedback. 

Personnel

   Lisa Dusseault reviewed this document for the IESG.

RFC Editor Note

  (Insert RFC Editor Note here or remove section)

IESG Note

  (Insert IESG Note here or remove section)

IANA Note

  (Insert IANA Note here or remove section)

Date: Wed, 19 Nov 2008 00:09:03 -0500
From: Tony Hansen <[email-masked]>
To: IETF MTA Filters List <[email-masked]>
Subject: Re: modified text for sieve mime loop section
Sender: [email-masked]

sounds good.

Anything else?

	Tony

Alexey Melnikov wrote:
> 
> Tony Hansen wrote:
> 
>> Regarding the multiple enclose issue with respect to the sieve mime loop
>> specification, here is the modified text I'm putting in to the doc based
>> on yesterday's WG meeting. Does anyone have comments/modifications?
>>
>>     Tony Hansen
>>     [email-masked]
>>
>> If multiple "enclose" actions are executed by a script, the message is
>> enclosed multiple times.  (If a Sieve script desires to choose between
>> different enclosures, or wants to delay the enclosure to the end of the
>> script, it can use variables with appropriate tests. <xref
>> target="RFC5229" />)
>>  
>>
> This looks good to me.
> 
> I would also change the following paragraph in Section 6:
> 
> OLD:
>   A new Sieve action command is defined to allow an entire message to
>   be enclosed as an attachment to a new message.  After enclosure,
>   subsequent actions affecting the message header or content use the
>   newly created message instead of the original message; this means
>   that any use of a "replace" action or other similar actions should be
>   executed before the "enclose" action.
> 
> NEW:
>   A new Sieve action command is defined to allow an entire message to
>   be enclosed as an attachment to a new message.  After enclosure,
>   subsequent actions affecting the message header or content,
>   as well as tests operating on the MIME structure or accessing
>   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>   MIME header fields, use the
>   ^^^^^^^^^^^^^^^^^^
>   newly created message instead of the original message; this means
>   that any use of a "replace" action or other similar actions should be
>   executed before the "enclose" action.
> 
> To make it clear that tests might also be affected by the enclose action.
> 

Date: Tue, 18 Nov 2008 22:57:38 -0600
From: Alexey Melnikov <[email-masked]>
To: Tony Hansen <[email-masked]>
CC: IETF MTA Filters List <[email-masked]>
Subject: Re: modified text for sieve mime loop section
Sender: [email-masked]

Tony Hansen wrote:

>Regarding the multiple enclose issue with respect to the sieve mime loop
>specification, here is the modified text I'm putting in to the doc based
>on yesterday's WG meeting. Does anyone have comments/modifications?
>
>	Tony Hansen
>	[email-masked]
>
>If multiple "enclose" actions are executed by a script, the message is
>enclosed multiple times.  (If a Sieve script desires to choose between
>different enclosures, or wants to delay the enclosure to the end of the
>script, it can use variables with appropriate tests. <xref
>target="RFC5229" />)
>  
>
This looks good to me.

I would also change the following paragraph in Section 6:

OLD:
   A new Sieve action command is defined to allow an entire message to
   be enclosed as an attachment to a new message.  After enclosure,
   subsequent actions affecting the message header or content use the
   newly created message instead of the original message; this means
   that any use of a "replace" action or other similar actions should be
   executed before the "enclose" action.

NEW:
   A new Sieve action command is defined to allow an entire message to
   be enclosed as an attachment to a new message.  After enclosure,
   subsequent actions affecting the message header or content,
   as well as tests operating on the MIME structure or accessing
   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   MIME header fields, use the
   ^^^^^^^^^^^^^^^^^^
   newly created message instead of the original message; this means
   that any use of a "replace" action or other similar actions should be
   executed before the "enclose" action.

To make it clear that tests might also be affected by the enclose action.

Date: Tue, 18 Nov 2008 19:14:38 -0500
From: Tony Hansen <[email-masked]>
To: IETF MTA Filters List <[email-masked]>
Subject: modified text for sieve mime loop section
Sender: [email-masked]

Regarding the multiple enclose issue with respect to the sieve mime loop
specification, here is the modified text I'm putting in to the doc based
on yesterday's WG meeting. Does anyone have comments/modifications?

	Tony Hansen
	[email-masked]

If multiple "enclose" actions are executed by a script, the message is
enclosed multiple times.  (If a Sieve script desires to choose between
different enclosures, or wants to delay the enclosure to the end of the
script, it can use variables with appropriate tests. <xref
target="RFC5229" />)

Date: Tue, 18 Nov 2008 07:03:45 -0600
From: Alexey Melnikov <[email-masked]>
To: Aaron Stone <[email-masked]>
CC: [email-masked]
Subject: Re: Last Call: draft-ietf-sieve-refuse-reject  (Sieve Email Filtering: Reject and Extended Reject Extensions) to Proposed Standard
Sender: [email-masked]

Aaron Stone wrote:

>On Fri, 2008-11-14 at 13:36 +0000, Alexey Melnikov wrote:
>  
>
>>>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?
>>    
>>
>I've rephrased it slightly, how's this:
>
>    Implementations MUST NOT silently upgrade reject actions to
>    ereject actions in a Sieve script, because this might lead to
>    unpleasant changes of behavior not expected by the script owner.
>
>    User interfaces that present a generic rejection option, and
>    generate Sieve script output, MAY switch from generating reject
>    to ereject actions, so long as doing so does not create a confusing
>    change for the script owner.
>  
>
Yes, this is fine with me.

Date: Tue, 18 Nov 2008 07:02:08 -0600
From: Alexey Melnikov <[email-masked]>
To: Ned Freed <[email-masked]>
CC: Alexandros Vellis <[email-masked]>, [email-masked]
Subject: Re: WGLC on draft-freed-sieve-notary-01.txt
Sender: [email-masked]

Ned Freed wrote:

>>* Idea: Would it make sense to name these capabilities 'envelope-dsn'
>>and 'redirect-dsn'? Because in a way they extend these existing
>>capabilities, and also because in the future we could have names like
>>'envelope-auth' "align" with them.
>>    
>>
>I don't feel strongly about this either way, but I'm reluctant to change it
>unless others agree that it is worth it. Comments?
>
I slightly prefer Alexandros' suggestion. But if you already have this 
implemented, don't bother changing.

Date: Tue, 18 Nov 2008 10:42:48 +0100
From: Stephan Bosch <[email-masked]>
To: Alexey Melnikov <[email-masked]>
CC: [email-masked]
Subject: Re: WGLC on draft-ietf-sieve-managesieve-01.txt (review)
Sender: [email-masked]

Alexey Melnikov wrote:
> 
> Hi Stephan,
> Thank you for your review.
> 
> I am quickly answering easy comments/questions and will followup on the 
> rest later on.

>> 2.6:
>>
>> - Clarify what is meant by syntax checking. In the strictest sense it 
>> could mean that any script that complies with the basic grammar of the 
>> Sieve language would pass. Command syntax, i.e. which arguments are 
>> required/allowed, would then be ignored. Also, wouldn't it be 
>> helpful/useful/desirable to include contextual checks here as well? 
>> E.g. unknown/invalid comparators etc.
> 
> IMHO, invalid/unknown comparator would be covered by syntactic checks.
> 
>> I first encountered this distinction when discussing the ihave 
>> extension to the Sieve language. I implicitly interpreted this 
>> requirement as a full script check (i.e. as would be done for full 
>> compilation), which seems overly restrictive when reading this 
>> standard more carefully.
> 
> You need to suggest specific text, especially if you want the document 
> to describe interaction with ihave in more details.
I was not saying that the interaction with ihave needs to be described 
better, I was merely saying that during the discussion of the ihave 
extension I noticed that the current formulation of the syntactic 
validation requirement is very much open for interpretation. IMHO, this 
is usually a bad thing in a document that is intended to establish a 
standard.

I am not very good at writing such texts myself, but I can provide a 
textual representation of how I interpret the sentence 'The server MUST 
check the submitted script for syntactic validity, which includes 
checking that all Sieve extensions mentioned in Sieve script "require" 
statement(s) are supported by the Sieve interpreter.' (somewhere on page 
20):

'The server MUST check the submitted script for validity, which includes 
checking that the script complies with the Sieve grammar [SIEVE], that 
all Sieve extensions mentioned in script's "require" statement(s) are 
supported by the Sieve interpreter, that all used commands are known 
(i.e. either part of the main Sieve language or an extension mentioned 
in the "require" lines), that commands are used in the correct context 
and that the supplied command arguments are valid for each command. 
Essentially, the performed validation should be equal to what is 
performed when compiling the script for execution. Implementations that 
use a binary representation to store compiled scripts can extend the 
validation to a full compile, in order to avoid validating uploaded 
scripts multiple times.'

Does this interpretation match your intention of that sentence? I am 
also wondering what others think of this. I can imagine that the ihave 
authors have some amendments, but I think the text that follows the 
aforementioned sentence in the draft should cover most potential issues.

Regards,

--
Stephan Bosch
[email-masked]

From: [email-masked]
To: [email-masked]
Cc: [email-masked]
Subject: I-D Action:draft-ietf-sieve-refuse-reject-09.txt 
Date: Mon, 17 Nov 2008 17:30:02 -0800 (PST)
Sender: [email-masked]

--NextPart

A New Internet-Draft is available from the on-line Internet-Drafts directories.
This draft is a work item of the Sieve Mail Filtering Language Working Group of the IETF.

	Title           : Sieve Email Filtering: Reject and Extended Reject Extensions
	Author(s)       : A. Stone, et al.
	Filename        : draft-ietf-sieve-refuse-reject-09.txt
	Pages           : 15
	Date            : 2008-11-17

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
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.  The "ereject" action is similar to "reject", but
will always favor protocol level message rejection.

A URL for this Internet-Draft is:
http://www.ietf.org/internet-drafts/draft-ietf-sieve-refuse-reject-09.txt

Internet-Drafts are also available by anonymous FTP at:
ftp://ftp.ietf.org/internet-drafts/

Below is the data which will enable a MIME compliant mail reader
implementation to automatically retrieve the ASCII version of the
Internet-Draft.

--NextPart
Content-Type: Message/External-body;
	name="draft-ietf-sieve-refuse-reject-09.txt";
	site="ftp.ietf.org";
	access-type="anon-ftp";
	directory="internet-drafts"

Content-Type: text/plain
Content-ID:     <[email-masked]>

--NextPart--

From: [email-masked]
To: [email-masked]
Cc: [email-masked]
Subject: I-D Action:draft-freed-sieve-notary-02.txt 
Date: Mon, 17 Nov 2008 16:30:01 -0800 (PST)
Sender: [email-masked]

--NextPart

A New Internet-Draft is available from the on-line Internet-Drafts directories.
This draft is a work item of the Sieve Mail Filtering Language Working Group of the IETF.

	Title           : Sieve Email Filtering: Delivery Status Notifications Extension
	Author(s)       : N. Freed
	Filename        : draft-freed-sieve-notary-02.txt
	Pages           : 8
	Date            : 2008-11-17

This document describes the "dsn-envelope" and "dsn-redirect"
extensions to the Sieve email filtering language.  The "dsn-envelope"
extension provides access to additional envelope information provided
by the delivery status notification extension to SMTP defined in RFC
3461.  The "dsn-redirect" extension extends Sieve's redirect action
to provide control over delivery status notification parameters.

A URL for this Internet-Draft is:
http://www.ietf.org/internet-drafts/draft-freed-sieve-notary-02.txt

Internet-Drafts are also available by anonymous FTP at:
ftp://ftp.ietf.org/internet-drafts/

Below is the data which will enable a MIME compliant mail reader
implementation to automatically retrieve the ASCII version of the
Internet-Draft.

--NextPart
Content-Type: Message/External-body;
	name="draft-freed-sieve-notary-02.txt";
	site="ftp.ietf.org";
	access-type="anon-ftp";
	directory="internet-drafts"

Content-Type: text/plain
Content-ID:     <[email-masked]>

--NextPart--

Date: Mon, 17 Nov 2008 16:11:18 -0800 (PST)
From: Ned Freed <[email-masked]>
Subject: Re: WGLC on draft-freed-sieve-notary-01.txt
To: Derek Diget <[email-masked]>
Cc: [email-masked]
Sender: [email-masked]

> Typo - Section 6, second paragraph, last sentence:  "then" to "them"

> From

> ...to request then using the...

> To

> ...to request them using the...

Fixed, thanks.

				Ned

Date: Mon, 17 Nov 2008 16:09:15 -0800 (PST)
From: Ned Freed <[email-masked]>
Subject: Re: WGLC on draft-freed-sieve-notary-01.txt
To: Alexandros Vellis <[email-masked]>
Cc: [email-masked]
Sender: [email-masked]

> * Typo: Chapter 7, second capability name should be dsn-redirect. :)

Yep. Fixed.

> * Idea: Would it make sense to name these capabilities 'envelope-dsn'
> and 'redirect-dsn'? Because in a way they extend these existing
> capabilities, and also because in the future we could have names like
> 'envelope-auth' "align" with them.

I don't feel strongly about this either way, but I'm reluctant to change it
unless others agree that it is worth it. Comments?

				Ned

Date: Mon, 17 Nov 2008 16:05:41 -0800 (PST)
From: Ned Freed <[email-masked]>
Subject: Re: WGLC on draft-freed-sieve-notary-01.txt
To: Arnt Gulbrandsen <[email-masked]>
Cc: [email-masked]
Sender: [email-masked]

> Lovely stuff. Three suggestions.

> 1. The previous extension named confused me. The new ones are much
> better. But the document title could be updated to match.

Good idea. Changed.

> 2. IMHO dsn-redirect should apply to the vacation and notify/mailto
> commands as well as to redirect.

Alexey pointed out that this really doesn't apply to vacation. As for notify,
perhaps that should just be done in the base notify-mailto specification since
it isn't done yet.

> 3. An ORCPT example in the paragraph about ORCPT, something like
> "rfc822;[email-masked]".

Good idea as well. Added.

				Ned

Subject: Re: Last Call: draft-ietf-sieve-refuse-reject          (Sieve Email Filtering: Reject and Extended Reject Extensions) to         Proposed Standard
From: Aaron Stone <[email-masked]>
To: Alexey Melnikov <[email-masked]>
Cc: [email-masked]
Date: Mon, 17 Nov 2008 15:53:18 -0800
Sender: [email-masked]

On Fri, 2008-11-14 at 13:36 +0000, Alexey Melnikov wrote:

> > 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?

I've rephrased it slightly, how's this:

    Implementations MUST NOT silently upgrade reject actions to
    ereject actions in a Sieve script, because this might lead to
    unpleasant changes of behavior not expected by the script owner.

    User interfaces that present a generic rejection option, and
    generate Sieve script output, MAY switch from generating reject
    to ereject actions, so long as doing so does not create a confusing
    change for the script owner.

Aaron

Subject: Re: DISCUSS and COMMENT: draft-ietf-sieve-refuse-reject
From: Aaron Stone <[email-masked]>
To: Ned Freed <[email-masked]>
Cc: Alexey Melnikov <[email-masked]>, ietf-mta-filters <[email-masked]>
Date: Mon, 17 Nov 2008 12:46:56 -0800
Sender: [email-masked]

On Mon, 2008-11-17 at 12:37 -0800, Ned Freed wrote:
> > On Fri, 2008-11-14 at 13:54 +0000, Alexey Melnikov wrote:
> > > Hi Pasi,
> > > My apologies for the delayed response:
> > >
> > > Pasi Eronen wrote:
> > >
> > > >Discuss:
> > [snip]
> > > >The document says the main difference between 'reject' and 'ereject'
> > > >is that the latter allows SMTP/LMTP level rejection (and there are
> > > >some details about non-ASCII strings).  I think I understand this
> > > >part, but it seems there's another difference: the former talks about
> > > >sending an MDN, while the latter sends a DSN.
> > > >
> > > Correct. I would consider MDN versa DSN to be a minor difference.
> > >
> > > >I'm not that familiar with the distinction between MDNs and DSNs (and
> > > >on first reading, thought they meant the same thing),
> > > >
> > > They are very similar syntactically. Semantically, DSN is for reporting
> > > delivery status (don't involve a human), while MDN is for reporting user
> > > processing status, such as message read, deleted without reading, etc.
> > >
> > > >and I think the
> > > >document would benefit from short description here, reminding readers
> > > >that they're not the same thing, and explaining why 'reject' and
> > > >'ereject' do things differently.
> > > >
> > > The reason why MDNs were chosen in the first place, because reject
> > > action could be implemented in a Mail User Agent. The MUA is not allowed
> > > to generate DSNs, because the message was already delivered to user's
> > > mailbox. At this point only MDNs can be generated.
> > >
> > > What happened after RFC 3028 came out was that many more Sieve engines
> > > running inside MTAs or MDAs were developed. For them, generating MDN
> > > might be a bit awkward.
> > >
> > > So I am not entirely convinced that stating this difference is going to
> > > be very useful. Please let me know if you still think otherwise.
> 
> > I accidentally left an editor's mark in the -08 draft I just posted, and
> > mis-attributed the sentence above as [[[arnt's text]]]. I wanted to
> > possibly put this into the document to describe the difference of MDN
> > vs. DSN.
> 
> > Proposed text:
> > """
> >    This document also specifies the use of a Delivery Status
> >    Notification [DSN] instead of an MDN when appropriate. In general,
> >    an MDN is generated by an MUA or MDA, and can be used to indicate
> >    the status of a message with respect to its recipient, while a DSN
> >    is generated by an MTA, and can be used to indicate whether or not
> >    a message was received and delivered by the mail system. In other
> >    words, an MDN is a human-oriented status while a DSN is a
> >    machine-oriented status.
> > """
> 
> > I'll flip the location of this paragraph in the introduction wrt the
> > paragraph that introduces the reference to EMAIL-ARCH so that MTA, MDA and MUA
> > are already defined at this point.
> 
> > Like it? Dislike it? Don't care?
> 
> I don't feel strongly about this, but I don't think the distinction between
> DSNs and MDns is their human versus machine orientation. Both contain
> parts intended for human use and parts intended for machine use.
> 
> Nor is it the case that DSNs are always generated by automatic action. For
> example, we generate DSNs when a email admin forces return of a message through
> our admin interface.
> 
> I would therefore suggest just dropping the last sentence. The earlier part,
> OTOH, is quite good and should be retained.

Thanks, I rewrote it a bit and have posted its own thread to the list.
Could you take a look at that version?

Aaron

Date: Mon, 17 Nov 2008 12:37:12 -0800 (PST)
From: Ned Freed <[email-masked]>
Subject: Re: DISCUSS and COMMENT: draft-ietf-sieve-refuse-reject
To: Aaron Stone <[email-masked]>
Cc: Alexey Melnikov <[email-masked]>, ietf-mta-filters <[email-masked]>
Sender: [email-masked]

> On Fri, 2008-11-14 at 13:54 +0000, Alexey Melnikov wrote:
> > Hi Pasi,
> > My apologies for the delayed response:
> >
> > Pasi Eronen wrote:
> >
> > >Discuss:
> [snip]
> > >The document says the main difference between 'reject' and 'ereject'
> > >is that the latter allows SMTP/LMTP level rejection (and there are
> > >some details about non-ASCII strings).  I think I understand this
> > >part, but it seems there's another difference: the former talks about
> > >sending an MDN, while the latter sends a DSN.
> > >
> > Correct. I would consider MDN versa DSN to be a minor difference.
> >
> > >I'm not that familiar with the distinction between MDNs and DSNs (and
> > >on first reading, thought they meant the same thing),
> > >
> > They are very similar syntactically. Semantically, DSN is for reporting
> > delivery status (don't involve a human), while MDN is for reporting user
> > processing status, such as message read, deleted without reading, etc.
> >
> > >and I think the
> > >document would benefit from short description here, reminding readers
> > >that they're not the same thing, and explaining why 'reject' and
> > >'ereject' do things differently.
> > >
> > The reason why MDNs were chosen in the first place, because reject
> > action could be implemented in a Mail User Agent. The MUA is not allowed
> > to generate DSNs, because the message was already delivered to user's
> > mailbox. At this point only MDNs can be generated.
> >
> > What happened after RFC 3028 came out was that many more Sieve engines
> > running inside MTAs or MDAs were developed. For them, generating MDN
> > might be a bit awkward.
> >
> > So I am not entirely convinced that stating this difference is going to
> > be very useful. Please let me know if you still think otherwise.

> I accidentally left an editor's mark in the -08 draft I just posted, and
> mis-attributed the sentence above as [[[arnt's text]]]. I wanted to
> possibly put this into the document to describe the difference of MDN
> vs. DSN.

> Proposed text:
> """
>    This document also specifies the use of a Delivery Status
>    Notification [DSN] instead of an MDN when appropriate. In general,
>    an MDN is generated by an MUA or MDA, and can be used to indicate
>    the status of a message with respect to its recipient, while a DSN
>    is generated by an MTA, and can be used to indicate whether or not
>    a message was received and delivered by the mail system. In other
>    words, an MDN is a human-oriented status while a DSN is a
>    machine-oriented status.
> """

> I'll flip the location of this paragraph in the introduction wrt the
> paragraph that introduces the reference to EMAIL-ARCH so that MTA, MDA and MUA
> are already defined at this point.

> Like it? Dislike it? Don't care?

I don't feel strongly about this, but I don't think the distinction between
DSNs and MDns is their human versus machine orientation. Both contain
parts intended for human use and parts intended for machine use.

Nor is it the case that DSNs are always generated by automatic action. For
example, we generate DSNs when a email admin forces return of a message through
our admin interface.

I would therefore suggest just dropping the last sentence. The earlier part,
OTOH, is quite good and should be retained.

				Ned

Date: Mon, 17 Nov 2008 14:27:56 -0600
From: Alexey Melnikov <[email-masked]>
To: Aaron Stone <[email-masked]>
CC: ietf-mta-filters <[email-masked]>
Subject: Re: DISCUSS and COMMENT: draft-ietf-sieve-refuse-reject
Sender: [email-masked]

Aaron Stone wrote:

>Less verbose, previous paragraph for context:
>
>"""
>Introduction
>...
>   This document also describes how to use reject/ereject at varying
>   points in the email stack: Mail Transfer Agent (MTA), Mail Delivery
>   Agent (MDA), and Mail User Agent (MUA). See [EMAIL-ARCH] for a
>   comprehensive discussion of these environments.
>
>   This document also specifies the use of a Delivery Status
>   Notification [DSN] instead of an MDN when appropriate. In general,
>   an MDN is a human-oriented status, generated by an MUA, while a
>   DSN is a machine-oriented status, generated by an MTA.
>""""
>
>On Mon, 2008-11-17 at 08:06 -0800, Aaron Stone wrote:
>  
>
>>On Fri, 2008-11-14 at 13:54 +0000, Alexey Melnikov wrote:
>>    
>>
>>>Hi Pasi,
>>>My apologies for the delayed response:
>>>
>>>Pasi Eronen wrote:
>>>      
>>>
>>>>Discuss:
>>>>        
>>>>
>>[snip]
>>    
>>
>>>>The document says the main difference between 'reject' and 'ereject'
>>>>is that the latter allows SMTP/LMTP level rejection (and there are
>>>>some details about non-ASCII strings).  I think I understand this
>>>>part, but it seems there's another difference: the former talks about
>>>>sending an MDN, while the latter sends a DSN.
>>>>        
>>>>
>>>Correct. I would consider MDN versa DSN to be a minor difference.
>>>      
>>>
>>>>I'm not that familiar with the distinction between MDNs and DSNs (and
>>>>on first reading, thought they meant the same thing),
>>>>        
>>>>
>>>They are very similar syntactically. Semantically, DSN is for reporting 
>>>delivery status (don't involve a human), while MDN is for reporting user 
>>>processing status, such as message read, deleted without reading, etc.
>>>      
>>>
>>>>and I think the
>>>>document would benefit from short description here, reminding readers 
>>>>that they're not the same thing, and explaining why 'reject' and 
>>>>'ereject' do things differently.
>>>>        
>>>>
>>>The reason why MDNs were chosen in the first place, because reject 
>>>action could be implemented in a Mail User Agent. The MUA is not allowed 
>>>to generate DSNs, because the message was already delivered to user's 
>>>mailbox. At this point only MDNs can be generated.
>>>
>>>What happened after RFC 3028 came out was that many more Sieve engines 
>>>running inside MTAs or MDAs were developed. For them, generating MDN 
>>>might be a bit awkward.
>>>
>>>So I am not entirely convinced that stating this difference is going to 
>>>be very useful. Please let me know if you still think otherwise.
>>>      
>>>
>>I accidentally left an editor's mark in the -08 draft I just posted, and
>>mis-attributed the sentence above as [[[arnt's text]]]. I wanted to
>>possibly put this into the document to describe the difference of MDN
>>vs. DSN.
>>
>>Proposed text:
>>"""
>>   This document also specifies the use of a Delivery Status
>>   Notification [DSN] instead of an MDN when appropriate. In general,
>>   an MDN is generated by an MUA or MDA, and can be used to indicate
>>    
>>
I can see MDA generating a DSN, so I would remove MDA from the above line.

>>   the status of a message with respect to its recipient, while a DSN
>>   is generated by an MTA, and can be used to indicate whether or not
>>   a message was received and delivered by the mail system. In other
>>   words, an MDN is a human-oriented status while a DSN is a
>>   machine-oriented status.
>>"""
>>
>>I'll flip the location of this paragraph in the introduction wrt the paragraph that introduces the reference to EMAIL-ARCH so that MTA, MDA and MUA are already defined at this point.
>>
>>Like it? Dislike it? Don't care?
>>    
>>
This looks fine to me otherwise.

But, I think we still need to discuss in the WG whether this text should 
be added. A topic for today's Sieve WG meeting.

Subject: Re: DISCUSS and COMMENT: draft-ietf-sieve-refuse-reject
From: Aaron Stone <[email-masked]>
To: Alexey Melnikov <[email-masked]>
Cc: ietf-mta-filters <[email-masked]>
Date: Mon, 17 Nov 2008 10:33:34 -0800
Sender: [email-masked]

Less verbose, previous paragraph for context:

"""
Introduction
...
   This document also describes how to use reject/ereject at varying
   points in the email stack: Mail Transfer Agent (MTA), Mail Delivery
   Agent (MDA), and Mail User Agent (MUA). See [EMAIL-ARCH] for a
   comprehensive discussion of these environments.

   This document also specifies the use of a Delivery Status
   Notification [DSN] instead of an MDN when appropriate. In general,
   an MDN is a human-oriented status, generated by an MUA, while a
   DSN is a machine-oriented status, generated by an MTA.
""""

On Mon, 2008-11-17 at 08:06 -0800, Aaron Stone wrote:
> On Fri, 2008-11-14 at 13:54 +0000, Alexey Melnikov wrote:
> > Hi Pasi,
> > My apologies for the delayed response:
> > 
> > Pasi Eronen wrote:
> > 
> > >Discuss:
> [snip]
> > >The document says the main difference between 'reject' and 'ereject'
> > >is that the latter allows SMTP/LMTP level rejection (and there are
> > >some details about non-ASCII strings).  I think I understand this
> > >part, but it seems there's another difference: the former talks about
> > >sending an MDN, while the latter sends a DSN.
> > >
> > Correct. I would consider MDN versa DSN to be a minor difference.
> > 
> > >I'm not that familiar with the distinction between MDNs and DSNs (and
> > >on first reading, thought they meant the same thing),
> > >
> > They are very similar syntactically. Semantically, DSN is for reporting 
> > delivery status (don't involve a human), while MDN is for reporting user 
> > processing status, such as message read, deleted without reading, etc.
> > 
> > >and I think the
> > >document would benefit from short description here, reminding readers 
> > >that they're not the same thing, and explaining why 'reject' and 
> > >'ereject' do things differently.
> > >
> > The reason why MDNs were chosen in the first place, because reject 
> > action could be implemented in a Mail User Agent. The MUA is not allowed 
> > to generate DSNs, because the message was already delivered to user's 
> > mailbox. At this point only MDNs can be generated.
> > 
> > What happened after RFC 3028 came out was that many more Sieve engines 
> > running inside MTAs or MDAs were developed. For them, generating MDN 
> > might be a bit awkward.
> > 
> > So I am not entirely convinced that stating this difference is going to 
> > be very useful. Please let me know if you still think otherwise.
> 
> I accidentally left an editor's mark in the -08 draft I just posted, and
> mis-attributed the sentence above as [[[arnt's text]]]. I wanted to
> possibly put this into the document to describe the difference of MDN
> vs. DSN.
> 
> Proposed text:
> """
>    This document also specifies the use of a Delivery Status
>    Notification [DSN] instead of an MDN when appropriate. In general,
>    an MDN is generated by an MUA or MDA, and can be used to indicate
>    the status of a message with respect to its recipient, while a DSN
>    is generated by an MTA, and can be used to indicate whether or not
>    a message was received and delivered by the mail system. In other
>    words, an MDN is a human-oriented status while a DSN is a
>    machine-oriented status.
> """
> 
> I'll flip the location of this paragraph in the introduction wrt the paragraph that introduces the reference to EMAIL-ARCH so that MTA, MDA and MUA are already defined at this point.
> 
> Like it? Dislike it? Don't care?
> 
> Aaron
> 

Subject: Re: DISCUSS and COMMENT: draft-ietf-sieve-refuse-reject
From: Aaron Stone <[email-masked]>
To: Alexey Melnikov <[email-masked]>
Cc: ietf-mta-filters <[email-masked]>
Date: Mon, 17 Nov 2008 08:06:11 -0800
Sender: [email-masked]

On Fri, 2008-11-14 at 13:54 +0000, Alexey Melnikov wrote:
> Hi Pasi,
> My apologies for the delayed response:
> 
> Pasi Eronen wrote:
> 
> >Discuss:
[snip]
> >The document says the main difference between 'reject' and 'ereject'
> >is that the latter allows SMTP/LMTP level rejection (and there are
> >some details about non-ASCII strings).  I think I understand this
> >part, but it seems there's another difference: the former talks about
> >sending an MDN, while the latter sends a DSN.
> >
> Correct. I would consider MDN versa DSN to be a minor difference.
> 
> >I'm not that familiar with the distinction between MDNs and DSNs (and
> >on first reading, thought they meant the same thing),
> >
> They are very similar syntactically. Semantically, DSN is for reporting 
> delivery status (don't involve a human), while MDN is for reporting user 
> processing status, such as message read, deleted without reading, etc.
> 
> >and I think the
> >document would benefit from short description here, reminding readers 
> >that they're not the same thing, and explaining why 'reject' and 
> >'ereject' do things differently.
> >
> The reason why MDNs were chosen in the first place, because reject 
> action could be implemented in a Mail User Agent. The MUA is not allowed 
> to generate DSNs, because the message was already delivered to user's 
> mailbox. At this point only MDNs can be generated.
> 
> What happened after RFC 3028 came out was that many more Sieve engines 
> running inside MTAs or MDAs were developed. For them, generating MDN 
> might be a bit awkward.
> 
> So I am not entirely convinced that stating this difference is going to 
> be very useful. Please let me know if you still think otherwise.

I accidentally left an editor's mark in the -08 draft I just posted, and
mis-attributed the sentence above as [[[arnt's text]]]. I wanted to
possibly put this into the document to describe the difference of MDN
vs. DSN.

Proposed text:
"""
   This document also specifies the use of a Delivery Status
   Notification [DSN] instead of an MDN when appropriate. In general,
   an MDN is generated by an MUA or MDA, and can be used to indicate
   the status of a message with respect to its recipient, while a DSN
   is generated by an MTA, and can be used to indicate whether or not
   a message was received and delivered by the mail system. In other
   words, an MDN is a human-oriented status while a DSN is a
   machine-oriented status.
"""

I'll flip the location of this paragraph in the introduction wrt the paragraph that introduces the reference to EMAIL-ARCH so that MTA, MDA and MUA are already defined at this point.

Like it? Dislike it? Don't care?

Aaron

From: [email-masked]
To: [email-masked]
Cc: [email-masked]
Subject: I-D Action:draft-ietf-sieve-refuse-reject-08.txt 
Date: Mon, 17 Nov 2008 07:15:01 -0800 (PST)
Sender: [email-masked]

--NextPart

A New Internet-Draft is available from the on-line Internet-Drafts directories.
This draft is a work item of the Sieve Mail Filtering Language Working Group of the IETF.

	Title           : Sieve Email Filtering: Reject and Extended Reject Extensions
	Author(s)       : A. Stone, et al.
	Filename        : draft-ietf-sieve-refuse-reject-08.txt
	Pages           : 15
	Date            : 2008-11-17

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
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.  The "ereject" action is similar to "reject", but
will always favor protocol level message rejection.

A URL for this Internet-Draft is:
http://www.ietf.org/internet-drafts/draft-ietf-sieve-refuse-reject-08.txt

Internet-Drafts are also available by anonymous FTP at:
ftp://ftp.ietf.org/internet-drafts/

Below is the data which will enable a MIME compliant mail reader
implementation to automatically retrieve the ASCII version of the
Internet-Draft.

--NextPart
Content-Type: Message/External-body;
	name="draft-ietf-sieve-refuse-reject-08.txt";
	site="ftp.ietf.org";
	access-type="anon-ftp";
	directory="internet-drafts"

Content-Type: text/plain
Content-ID:     <[email-masked]>

--NextPart--

Date: Sat, 15 Nov 2008 09:10:55 +0100
From: Arnt Gulbrandsen <[email-masked]>
To: [email-masked]
Subject: Re: Last Call: draft-ietf-sieve-refuse-reject (Sieve Email Filtering: Reject and Extended Reject Extensions) to Proposed Standard
Cc: Alexey Melnikov <[email-masked]>, Matthew Elvey <[email-masked]>, Aaron Stone <[email-masked]>, Cyrus Daboo <[email-masked]>, General Area Review Team <[email-masked]>, Lisa Dusseault <[email-masked]>, Spencer Dawkins <[email-masked]>, Aaron Stone <[email-masked]>
Sender: [email-masked]

Spencer Dawkins writes:
> The great thing about last call review comments is that you can "do 
> the right thing", but ... I may not have been clear, but what I was 
> saying was that I don't know what "refuse delivery over protocol" 
> actually refers to. Is this "refuse delivery over SMTP protocol"? 
> That's all I was asking... I wasn't trying to talk you out of "over 
> protocol", just being a little clearer what you were saying.

Maybe "refuse delivery within the mail transmission protocol", perhaps 
adding "(typically SMTP or LMTP)".

Arnt

From: Aaron Stone <[email-masked]>
To: Spencer Dawkins <[email-masked]>
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 12:40:26 -0800
Cc: [email-masked], Cyrus Daboo <[email-masked]>, Alexey Melnikov <[email-masked]>, Lisa Dusseault <[email-masked]>, Aaron Stone <[email-masked]>, Matthew Elvey <[email-masked]>, General Area Review Team <[email-masked]>
Sender: [email-masked]

On Nov 14, 2008, at 9:35 AM, Spencer Dawkins wrote:

> Hi, Aaron,
>
> (dropping the IETF discussion list from the cc: list)
>
> I think we're good, except on this point:
>
>>> 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? if not, you could just delete the two words.
>>
>> The phrase "over protocol", or some equivalent, is crucial because  
>> the meaning of "refuse" is not as clear as anybody has hoped. I  
>> prefer to leave the text as it is.
>
> The great thing about last call review comments is that you can "do  
> the right thing", but ... I may not have been clear, but what I was  
> saying was that I don't know what "refuse delivery over protocol"  
> actually refers to. Is this "refuse delivery over SMTP protocol"?  
> That's all I was asking... I wasn't trying to talk you out of "over  
> protocol", just being a little clearer what you were saying.

Aha, I get what you mean now. Will update the document.

>
> Do the right thing, of course. :-)
>
Thanks :-)

Aaron

From: "Spencer Dawkins" <[email-masked]>
To: "Aaron Stone" <[email-masked]>
Cc: <[email-masked]>, "Cyrus Daboo" <[email-masked]>, "Alexey Melnikov" <[email-masked]>, "Lisa Dusseault" <[email-masked]>, "Aaron Stone" <[email-masked]>, "Matthew Elvey" <[email-masked]>, "General Area Review Team" <[email-masked]>
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 11:35:28 -0600

Hi, Aaron,

(dropping the IETF discussion list from the cc: list)

I think we're good, except on this point:

>> 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? if 
>> not, you could just delete the two words.
>
> The phrase "over protocol", or some equivalent, is crucial because the 
> meaning of "refuse" is not as clear as anybody has hoped. I prefer to 
> leave the text as it is.

The great thing about last call review comments is that you can "do the 
right thing", but ... I may not have been clear, but what I was saying was 
that I don't know what "refuse delivery over protocol" actually refers to. 
Is this "refuse delivery over SMTP protocol"? That's all I was asking... I 
wasn't trying to talk you out of "over protocol", just being a little 
clearer what you were saying.

Do the right thing, of course. :-)

Thanks,

Spencer 

From: Aaron Stone <[email-masked]>
To: Spencer Dawkins <[email-masked]>
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:27:45 -0800
Cc:  <[email-masked]>, <[email-masked]>, "General Area Review Team" <[email-masked]>, "Cyrus Daboo" <[email-masked]>, "Alexey Melnikov" <[email-masked]>, "Lisa Dusseault" <[email-masked]>, "Aaron Stone" <[email-masked]>, "Matthew Elvey" <[email-masked]>
Sender: [email-masked]

My apologies for the extremely delayed reply to this review. I've at  
long last cleared enough time to get into the grist of the comments on  
this draft and prepare revision -08.

On Aug 11, 2008, at 8:36 AM, 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"."

I find that the paragraph reads pretty well already, and prefer not to  
change it.

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

Abstract modified:
"""
       The "ereject" action is intended to replace the "reject" action  
wherever
       possible. The "ereject" action is similar to "reject", but will  
always
       favor protocol level message rejection.
"""

>
>
> 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.
>
Modified as suggested.

> 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 ..."
>
Modified mostly suggested.

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

Modified in the abstract, I think the text in the introduction is  
sufficiently clear.

>
>  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?"). There's some text at the bottom of 2.5  
> about using 4XX first, but it should appear here, I think.
>

There may be reasons to use other response codes, hence the SHOULD.

>  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).

The word "blowback" now has an earlier use in the document, in the  
context of "blowback spam", which I believe makes the meaning clear.

>
> 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? if not, you could just delete the two words.

The phrase "over protocol", or some equivalent, is crucial because the  
meaning of "refuse" is not as clear as anybody has hoped. I prefer to  
leave the text as it is.

>
>  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/ :-)

Just leaving work for the RFC Editor... ;-)

>
> 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? Or is this talking  
> about "silently upgrading reject actions" without making sure that  
> the other side is ereject-capable?

The script must be interpreted as written, no upgrades allowed by  
interpreters.

A user-interface might be used that generated a sieve script, however.  
Such a UI may have a section titled "Reject messages if they: [bunch  
of user check boxes...]". In such a situation, the user-interface is  
feeding a script generator. The output of that script generator in  
version 1 of the application might be "reject", and we're suggesting  
that it is acceptable and encouraged for version 2 of the app to  
generate scripts with "ereject" instead.

> ----- Original Message ----- From: "The IESG" <iesg- 
> [email-masked]>
> To: "IETF-Announce" <[email-masked]>
> Cc: <[email-masked]>
> Sent: Sunday, July 27, 2008 7:02 AM
> Subject: Last Call: draft-ietf-sieve-refuse-reject (Sieve Email  
> Filtering: Reject and Extended Reject Extensions) to Proposed Standard
>
>
>>
>> The IESG has received a request from the Sieve Mail Filtering  
>> Language
>> WG (sieve) to consider the following document:
>>
>> - 'Sieve Email Filtering: Reject and Extended Reject Extensions '
>>  <draft-ietf-sieve-refuse-reject-07.txt> as a Proposed Standard
>>
>> This document has a normative reference to RFC 2033 which documents  
>> LMTP,
>> Local Mail Transfor Protocol.  Support for LMTP is not required for
>> servers supporting the mechanisms in this specification.  The
>> procedure of RFC 3967 is applied in this last call to approve the
>> downward reference.
>>
>> The IESG plans to make a decision in the next few weeks, and solicits
>> final comments on this action.  Please send substantive comments to  
>> the
>> [email-masked] mailing lists by 2008-08-10. Exceptionally,
>> comments may be sent to [email-masked] instead. In either case, please
>> retain the beginning of the Subject line to allow automated sorting.
>>
>> The file can be obtained via
>> http://www.ietf.org/internet-drafts/draft-ietf-sieve-refuse-reject-07.txt
>>
>>
>> IESG discussion can be tracked via
>> https://datatracker.ietf.org/public/pidtracker.cgi?command=view_id&dTag141&rfc_flag=0
>>
>> _______________________________________________
>> IETF-Announce mailing list
>> [email-masked]
>> https://www.ietf.org/mailman/listinfo/ietf-announce
>
>

Cc: Spencer Dawkins <[email-masked]>, [email-masked], General Area Review Team <[email-masked]>, Cyrus Daboo <[email-masked]>, Lisa Dusseault <[email-masked]>, Aaron Stone <[email-masked]>, Matthew Elvey <[email-masked]>, [email-masked]
From: Aaron Stone <[email-masked]>
To: Alexey Melnikov <[email-masked]>
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
Sender: [email-masked]

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?
>

Date: Fri, 14 Nov 2008 13:36:52 +0000
From: Alexey Melnikov <[email-masked]>
To: Spencer Dawkins <[email-masked]>
CC: [email-masked], General Area Review Team <[email-masked]>, Cyrus Daboo <[email-masked]>, Lisa Dusseault <[email-masked]>, Aaron Stone <[email-masked]>, Matthew Elvey <[email-masked]>, [email-masked]
Subject: Re: Last Call: draft-ietf-sieve-refuse-reject  (Sieve Email Filtering: Reject and Extended Reject Extensions) to Proposed Standard
Sender: [email-masked]

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?

Date: Sun, 09 Nov 2008 20:52:54 -0800 (PST)
From: Ned Freed <[email-masked]>
Subject: Re: Implementations of draft-ietf-sieve-refuse-reject-07 ?
To: Troy Benjegerdes <[email-masked]>
Cc: Ned Freed <[email-masked]>, [email-masked], Matthew Elvey <[email-masked]>, Cyrus Daboo <[email-masked]>, Alexey Melnikov <[email-masked]>
Sender: [email-masked]

> Are there any Sieve implementations that follow draft-ietf-sieve-refuse-reject-07?

> I am quite interested in replacing my existing per-user SMTP-time
> rejection mechanism based on courier-mta's mailfilter with something
> that will hopefully wind up as a standard Sieve-based method.

> I've seen reference to Sun's implementation..

Sun's Sieve implementation (which fully supports this specification) is an
integral part of our messaging server product. It cannot be used as a separate
component.

> is this available as open
> source, or as a proprietary product?

At present it is proprietary.

				Ned

Date: Sun, 09 Nov 2008 14:42:00 -0500
From: Jeffrey Hutzelman <[email-masked]>
To: Alexey Melnikov <[email-masked]>, Stephan Bosch <[email-masked]>
cc: [email-masked], [email-masked]
Subject: Re: WGLC on draft-ietf-sieve-managesieve-01.txt (review)
Sender: [email-masked]

--On Saturday, November 08, 2008 05:34:07 PM +0000 Alexey Melnikov 
<[email-masked]> wrote:

>
> Hi Stephan,
> I am responding to the rest of your comments:
>
> Stephan Bosch wrote:
>
>> 2.1:
>
>  [...]
>
>> Why SCRAM?
>
> I am glad that somebody has noticed :-).
>
> I might be too ambitious in this case: I would like to require a SASL
> mechanism that doesn't pass password to the server (like SASL PLAIN) and
> can be used without TLS. DIGEST-MD5 mechanism would have been my
> preferred mechanism a couple of years ago. But the current SASL WG
> thinking is that it has too many interop issues and is too hard to
> implement. That is why I have SCRAM in the document.
>
> So I think now is good time for having a discussion about which
> mandatory-to-implement SASL mechanism we should have in ManageSieve. For
> short term and medium term (3 years).

I think perhaps the right answer, for ManageSieve and for many other 
protocols, is to require

- clients MUST implement both PLAIN and FOO
- servers MUST implement at least one of PLAIN or FOO

where FOO is some mechanism with the properties you describe.

The problem is that there are a wide variety of underlying authentication 
services that people might want to deploy which can work with PLAIN but not 
with any of the mechanisms that are candidates for FOO.  Examples include 
Kerberos password validation (used where the client has no Kerberos 
support), RSA SecurID, and OTP mechanisms such as that described in RFC2289.

-- Jeff

Date: Sat, 08 Nov 2008 18:25:28 +0000
From: Alexey Melnikov <[email-masked]>
To: Stephan Bosch <[email-masked]>
CC: [email-masked]
Subject: Re: WGLC on draft-ietf-sieve-managesieve-01.txt (review)
Sender: [email-masked]

Hi Stephan,

Stephan Bosch wrote:

> 1.3:
>
> - Use of example with 'the QUOTA/MAXSCRIPTS response' code is 
> confusing. MAXSCRIPTS is not part of the standard, but the example 
> does not mention that explicitly. Also, I can imagine that such 
> detailed response can have some merit. So, why is it not included in 
> the standard along with something like MAXSIZE? 

I've missed that comment somehow.

Yes, I agree that it would be worth adding QUOTA/MAXSCRIPTS (the maximum 
number of per-user scripts) and QUOTA/MAXSIZE (maximum script size), so 
I will add them to the document.

Date: Sat, 08 Nov 2008 17:34:07 +0000
From: Alexey Melnikov <[email-masked]>
To: Stephan Bosch <[email-masked]>
CC: [email-masked]
Subject: Re: WGLC on draft-ietf-sieve-managesieve-01.txt (review)
Sender: [email-masked]

Hi Stephan,
I am responding to the rest of your comments:

Stephan Bosch wrote:

> 2.1:

 [...]

> Why SCRAM?

I am glad that somebody has noticed :-).

I might be too ambitious in this case: I would like to require a SASL 
mechanism that doesn't pass password to the server (like SASL PLAIN) and 
can be used without TLS. DIGEST-MD5 mechanism would have been my 
preferred mechanism a couple of years ago. But the current SASL WG 
thinking is that it has too many interop issues and is too hard to 
implement. That is why I have SCRAM in the document.

So I think now is good time for having a discussion about which 
mandatory-to-implement SASL mechanism we should have in ManageSieve. For 
short term and medium term (3 years).

 [...]

> 2.11.3:
>
> - NOOP: why expect a NO response from older servers? It is advertised 
> as a capability; if it is not advertised, don't issue the NOOP command.

Right.
I've removed the following sentence:

    Older servers may not understand the NOOP command and robust clients
    SHOULD be prepared to receive a NO response.

 [...]

> General:
> - The described protocol is both referred to as "ManageSieve" and 
> "Manage Sieve" (e.g. IANA Considerations)

Ok, I've changed "Manage Sieve" to "ManageSieve" everywhere in the document.

> I hope this review is useful. I'll try to update my implementation to 
> match the most recent changes in the coming week or so.

Date: Sat, 08 Nov 2008 16:56:23 +0000
From: Alexey Melnikov <[email-masked]>
To: [email-masked]
Subject: WGLC on draft-melnikov-sieve-imapext-metadata-04.tx
Sender: [email-masked]

Folks,
with my co-chair hat on I would like to start the Sieve Working Group 
Last Call for the following document:

The SIEVE mail filtering language - extension for accessing mailbox metadata
<http://www.ietf.org/internet-drafts/draft-melnikov-sieve-imapext-metadata-04.txt>

The Working Group Last Call for this document starts on November 10th and
will end on November 28th (so it is almost 3 weeks, so that the IETF
meeting in Dublin is covered).

Please send any comments to the Sieve mailing list or directly to me. If
you chose to do the latter, please CC Cyrus Daboo <[email-masked]>.
Reviews that found no issues are also welcomed, so if you review the
document and find it acceptable, please let the mailing
list/authors+chairs know as well.

Thank you,
Alexey, Sieve WG co-chairs

Date: Sat, 08 Nov 2008 16:07:40 +0000
From: Alexey Melnikov <[email-masked]>
To: Stephan Bosch <[email-masked]>
CC: [email-masked]
Subject: ManageSieve: sieve: URIs and OWNER capability
Sender: [email-masked]

Hi Stephan,
Thanks again for your detailed review.
I think message I will reply to your question about the new OWNER 
capability:

Stephan Bosch wrote:

> - Explain the purpose of the OWNER capability. Common question would 
> be: clients already know their identity, so why advertise it as a 
> capability? Also, in my mind, listing status information in a 
> capability response seems hardly appropriate.

I wanted to post a message on this change, but you were quicker than me.
Chris Newman suggested in his original ManageSieve review 3 changes 
related to Sieve URIs:

> * IMAP URLs made the mistake of confusing the identity used to 
> authenticate with the identity that owns the script.  This makes IMAP 
> URLs cumbersome. I would strongly encourage a naming model that 
> separates the two and keeps the script owner explicit.  For example:
>
>   sieveurl-script = "sieve://" [ authority ] "/" owner "/" scriptname 

As per mailing list discussions a modified version of this syntax was 
adopted by the draft, so I've decided to address one of the 2 remaining 
issues:

> Then two other changes would make this particularly useful:
> 1. Allow a script name (at least in putscript) to be either a Sieve URI
> or a local name.  This allows, for example, a secretary to set the
> script for her boss.
> 2. Add a capability that advertises the owner name that applies to a 
> given managesieve session (this would be derived from the 
> authentication id).

[I think Chris meant "authorization identity" above.]

So, OWNER corresponds to 2). When using SASL authentication a client can 
authenticate as one person ("authentication identity"), but be allowed 
to act as another ("authorization identity"). OWNER is returning the latter.

I have a weak preference for having the OWNER capability. So far I found 
a couple of reasons for it:

Imagine you have a ManageSieve client that need to process several Sieve 
URIs (e.g. to update several scripts).
The client would be able to compare the "owner" part of an URI against 
the value returned in the OWNER capability in order to decide if it 
needs to authenticate as another user before processing another script 
identified by a URI.

I also think that the OWNER capability can be useful for debugging (i.e. 
for analyzing protocol trace logs). Of course this only helps if the 
client requests capabilities after authentication.

Date: Sat, 08 Nov 2008 16:05:19 +0000
From: Alexey Melnikov <[email-masked]>
To: [email-masked]
Subject: Re: WGLC on draft-ietf-sieve-managesieve-01.txt
Sender: [email-masked]

So far I am aware of 2 open issues (not counting Stephan Bosch's 
comments) that need some discussion:

1). Should RENAME, NOOP and CHECKSCRIPT capabilities be merged into a 
single capability. (Personally I dislike capability proliferation).
2). Chris Newman has suggested to allow use of URIs in commands like 
PUTSCRIPT. Should this be done? If yes, should this be an extension?

Date: Thu, 06 Nov 2008 16:04:17 +0000
From: Alexey Melnikov <[email-masked]>
To: Stephan Bosch <[email-masked]>
CC: [email-masked]
Subject: Re: WGLC on draft-ietf-sieve-managesieve-01.txt (review)
Sender: [email-masked]

Hi Stephan,
Thank you for your review.

I am quickly answering easy comments/questions and will followup on the 
rest later on.

Stephan Bosch wrote:

> Hello,
>
> Alexey Melnikov wrote:
>
>> The Working Group Last Call for this document starts on November 3rd 
>> and will end on November 21st (so it is almost 3 weeks, so that the 
>> IETF meeting in Dublin is covered).
>>
>> Please send any comments to the Sieve mailing list or directly to me. 
>> If you chose to do the latter, please CC Cyrus Daboo <[email-masked]>.
>> Reviews that found no issues are also welcomed, so if you review the 
>> document and find it acceptable, please let the mailing 
>> list/authors+chairs know as well.
>
> Since this is the last call, I decided to do a full review of the 
> document. Thus far I have not implemented any of the recent 
> changes/additions to the document, so I may find other issues when I 
> do (hopefully before the 21st of November).
>
> My review is structured in a per-section manner. Comments include 
> typos, but also requests for clarification:
>
> 1.3:

 [...]

> - Typos in explanation of NONEXISTENT and ALREADYEXISTS : 
> s/references/referenced.

Fixed.

> 1.7:
>
> - Example at the end of this section lists STARTTLS after 
> authentication, which is strange considering that STARTTLS is only 
> valid in a non-authenticated state.

Right. I can add a text that listing STARTTLS capability after 
successful STARTTLS is a SHOULD NOT.
Unless people prefer MUST NOT?

> - Explain the purpose of the OWNER capability. Common question would 
> be: clients already know their identity, so why advertise it as a 
> capability?

I will reply to this in a separate message.

> Also, in my mind, listing status information in a capability response 
> seems hardly appropriate.

The list of currently available SASL mechanisms is also status 
information (it might depend on whether TLS is on or not), so I think 
your argument is not entirely valid.

> 2.1:
>
> - From text: "When both [TLS] and SASL security layers are in effect, 
> the TLS encoding MUST be applied (when sending data) after the SASL 
> encoding, regardless of the order in which the layers were 
> negotiated." Isn't this order fixed correctly already by the fact that 
> the STARTTLS command is only valid before authentication (= SASL and 
> any security layer it may install). I mean that I do not see how the 
> layers can be negotiated in a different order.

Good point. This was cut&paste from another document.
I've deleted part of the sentence that starts with "regardless".

> - From text: "To ensure interoperability, client and server 
> implementations of this extension MUST implement the [SCRAM] SASL 
> mechanism." This sentence seems out of place. What extension?

This should have been "To ensure interoperability, client and server 
implementations of the ManageSieve protocol ..."

> Why SCRAM?

I will reply to this separately.

> 2.2.1:
>
> - Item 1, first sentence: s/than/then

Fixed.

> 2.6:
>
> - Clarify what is meant by syntax checking. In the strictest sense it 
> could mean that any script that complies with the basic grammar of the 
> Sieve language would pass. Command syntax, i.e. which arguments are 
> required/allowed, would then be ignored. Also, wouldn't it be 
> helpful/useful/desirable to include contextual checks here as well? 
> E.g. unknown/invalid comparators etc.

IMHO, invalid/unknown comparator would be covered by syntactic checks.

> I first encountered this distinction when discussing the ihave 
> extension to the Sieve language. I implicitly interpreted this 
> requirement as a full script check (i.e. as would be done for full 
> compilation), which seems overly restrictive when reading this 
> standard more carefully.

You need to suggest specific text, especially if you want the document 
to describe interaction with ihave in more details.
 [...]

> 2.11.2:
>
> - For clarity, mention that the CHECKSCRIPT command is in effect 
> identical to the PUTSCRIPT command when in ANONYMOUS Sieve script 
> verification mode.

I am not sure that would add much clarity.
I am almost tempted to add a reference in the other direction. The only 
thing stopping me is the fact that CHECKSCRIPT is an extension.
 [...]

> 2.11.4:
>
> - Explain the use and merit of the UNAUTHENTICATE command. The only 
> merit I can think of is that reconnecting can cause some extra 
> overhead for setting up the connection and re-negotiating security/TLS 
> layers. 

Yes.

> But is this time optimization worth complicating the protocol? 

I think the answer is yes. For a management client that tries to update 
Sieve scripts for several users the speed of reestablishing a 
ManageSieve connection might be non trivial.

UNAUTHENTICATE command came out of discussion regarding SASL 
reauthentication in Dublin. Here is the message that motivated the whole 
discussion: <http://www.imc.org/ietf-mta-filters/mail-archive/msg04061.html>

> Discussion item: who would be willing to implement this?

I am willing to implement this in Isode's server.

> I personally have no real problems with the addition of this command, 
> but I cannot imagine that I will ever want to implement it. Perhaps I 
> am overlooking something?

Date: Thu, 06 Nov 2008 15:49:43 +0000
From: Alexey Melnikov <[email-masked]>
To: [email-masked]
Subject: Proposed Sieve WG meeting agenda for Minneapolis
Sender: [email-masked]

Cyrus and I would like to suggest the following agenda for Minneapolis. Comments are welcome.

================================
Agenda

Document status review                                  (10 mins)
WG Status review                                        (10 mins)

Mime Loops (draft-ietf-sieve-mime-loop-07.txt)          (10 mins)
Sieve Reject (draft-ietf-sieve-refuse-reject-07.txt)    (15 mins)
iHave (draft-freed-sieve-ihave-03.txt)                  (15 mins)
Notary (draft-freed-sieve-notary-01.txt)                (10 mins)
SIEVE in XML (expired:draft-freed-sieve-in-xml-01.txt)  (10 mins)
ManageSIEVE (draft-martin-managesieve-10.txt)           (10 mins)
METADATA (draft-melnikov-sieve-imapext-metadata-04.txt) (20 mins)

================================
Total:                                                  110 mins

Date: Thu, 06 Nov 2008 12:10:52 +0100
From: Stephan Bosch <[email-masked]>
To: Alexey Melnikov <[email-masked]>
CC: [email-masked]
Subject: Re: WGLC on draft-ietf-sieve-managesieve-01.txt (review)
Sender: [email-masked]

Hello,

Alexey Melnikov wrote:
> The Working Group Last Call for this document starts on November 3rd and 
> will end on November 21st (so it is almost 3 weeks, so that the IETF 
> meeting in Dublin is covered).
> 
> Please send any comments to the Sieve mailing list or directly to me. If 
> you chose to do the latter, please CC Cyrus Daboo <[email-masked]>.
> Reviews that found no issues are also welcomed, so if you review the 
> document and find it acceptable, please let the mailing 
> list/authors+chairs know as well.
> 
Since this is the last call, I decided to do a full review of the 
document. Thus far I have not implemented any of the recent 
changes/additions to the document, so I may find other issues when I do 
(hopefully before the 21st of November).

My review is structured in a per-section manner. Comments include typos, 
but also requests for clarification:

1.3:

- Use of example with 'the QUOTA/MAXSCRIPTS response' code is confusing. 
MAXSCRIPTS is not part of the standard, but the example does not mention 
that explicitly. Also, I can imagine that such detailed response can 
have some merit. So, why is it not included in the standard along with 
something like MAXSIZE?

- Typos in explanation of NONEXISTENT and ALREADYEXISTS : 
s/references/referenced.

1.7:

- Example at the end of this section lists STARTTLS after 
authentication, which is strange considering that STARTTLS is only valid 
in a non-authenticated state.

- Explain the purpose of the OWNER capability. Common question would be: 
clients already know their identity, so why advertise it as a 
capability? Also, in my mind, listing status information in a capability 
response seems hardly appropriate.

2.1:

- From text: "When both [TLS] and SASL security layers are in effect, 
the TLS encoding MUST be applied (when sending data) after the SASL 
encoding, regardless of the order in which the layers were negotiated." 
Isn't this order fixed correctly already by the fact that the STARTTLS 
command is only valid before authentication(= SASL and any security 
layer it may install). I mean that I do not see how the layers can be 
negotiated in a different order.

- From text: "To ensure interoperability, client and server 
implementations of this extension MUST implement the [SCRAM] SASL 
mechanism." This sentence seems out of place. What extension? Why SCRAM?

2.2.1:

- Item 1, first sentence: s/than/then

2.6:

- Clarify what is meant by syntax checking. In the strictest sense it 
could mean that any script that complies with the basic grammar of the 
Sieve language would pass. Command syntax, i.e. which arguments are 
required/allowed, would then be ignored. Also, wouldn't it be 
helpful/useful/desirable to include contextual checks here as well? E.g. 
unknown/invalid comparators etc. I first encountered this distinction 
when discussing the ihave extension to the Sieve language. I implicitly 
interpreted this requirement as a full script check (i.e. as would be 
done for full compilation), which seems overly restrictive when reading 
this standard more carefully.

2.11:

- Naming of CHECKSCRIPT extension is not consistent with RENAME 
extension. To be consistent CHECK would be a better choice. (Yes, I am 
nitpicking, sorry)

2.11.2:

- For clarity, mention that the CHECKSCRIPT command is in effect 
identical to the PUTSCRIPT command when in ANONYMOUS Sieve script 
verification mode.

2.11.3:

- NOOP: why expect a NO response from older servers? It is advertised as 
a capability; if it is not advertised, don't issue the NOOP command.

2.11.4:

- Explain the use and merit of the UNAUTHENTICATE command. The only 
merit I can think of is that reconnecting can cause some extra overhead 
for setting up the connection and re-negotiating security/TLS layers. 
But is this time optimization worth complicating the protocol? 
Discussion item: who would be willing to implement this? I personally 
have no real problems with the addition of this command, but I cannot 
imagine that I will ever want to implement it. Perhaps I am overlooking 
something?
	
General:
- The described protocol is both referred to as "ManageSieve" and 
"Manage Sieve" (e.g. IANA Considerations)

I hope this review is useful. I'll try to update my implementation to 
match the most recent changes in the coming week or so.

Kind regards,

--
Stephan Bosch
[email-masked]

Date: Tue, 04 Nov 2008 14:53:33 +0000
From: Alexey Melnikov <[email-masked]>
To: [email-masked]
Subject: Sieve WG meeting during the Minneapolis IETF
Sender: [email-masked]

will be held on Monday, November 17 2008 at 17:40-19:30, Central 
Standard Time (which is UTC - 6 hours).

From: [email-masked]
To: [email-masked]
Cc: [email-masked]
Subject: I-D Action:draft-ietf-sieve-mime-loop-07.txt 
Date: Mon,  3 Nov 2008 14:30:01 -0800 (PST)
Sender: [email-masked]

--NextPart

A New Internet-Draft is available from the on-line Internet-Drafts directories.
This draft is a work item of the Sieve Mail Filtering Language Working Group of the IETF.

	Title           : Sieve Email Filtering: MIME part Tests, Iteration, Extraction, Replacement and Enclosure
	Author(s)       : T. Hansen, C. Daboo
	Filename        : draft-ietf-sieve-mime-loop-07.txt
	Pages           : 21
	Date            : 2008-11-03

This document defines extensions to the Sieve email filtering
language to permit analysis and manipulation of the MIME body parts
of an email message.

Note

This document is being discussed on the MTA-FILTERS mailing list,
[email-masked].

A URL for this Internet-Draft is:
http://www.ietf.org/internet-drafts/draft-ietf-sieve-mime-loop-07.txt

Internet-Drafts are also available by anonymous FTP at:
ftp://ftp.ietf.org/internet-drafts/

Below is the data which will enable a MIME compliant mail reader
implementation to automatically retrieve the ASCII version of the
Internet-Draft.

--NextPart
Content-Type: Message/External-body;
	name="draft-ietf-sieve-mime-loop-07.txt";
	site="ftp.ietf.org";
	access-type="anon-ftp";
	directory="internet-drafts"

Content-Type: text/plain
Content-ID:     <[email-masked]>

--NextPart--

Date: Sun, 02 Nov 2008 16:06:57 +0000
From: Alexey Melnikov <[email-masked]>
To: Patrick Ben Koetter <[email-masked]>
CC: [email-masked]
Subject: Re: I-D Action:draft-ietf-sieve-managesieve-01.txt
Sender: [email-masked]

Patrick Ben Koetter wrote:

>* [email-masked] <[email-masked]>:
>  
>
>>A New Internet-Draft is available from the on-line Internet-Drafts directories.
>>This draft is a work item of the Sieve Mail Filtering Language Working Group of the IETF.
>>
>>
>>	Title           : A Protocol for Remotely Managing Sieve Scripts
>>	Author(s)       : A. Melnikov, T. Martin
>>	Filename        : draft-ietf-sieve-managesieve-01.txt
>>	Pages           : 48
>>	Date            : 2008-11-01
>>    
>>
>I believe there's a typo in line 345 of draft-ietf-sieve-managesieve-01.txt:
>
>"indended" should be "intended".
>  
>
Fixed, thanks. (also in 3 other places - cut & pasted the same text).

Date: Sun, 2 Nov 2008 13:36:46 +0100
From: Patrick Ben Koetter <[email-masked]>
To: [email-masked]
Subject: Re: I-D Action:draft-ietf-sieve-managesieve-01.txt
Mail-Followup-To: [email-masked]
Sender: [email-masked]

* [email-masked] <[email-masked]>:
> A New Internet-Draft is available from the on-line Internet-Drafts directories.
> This draft is a work item of the Sieve Mail Filtering Language Working Group of the IETF.
> 
> 
> 	Title           : A Protocol for Remotely Managing Sieve Scripts
> 	Author(s)       : A. Melnikov, T. Martin
> 	Filename        : draft-ietf-sieve-managesieve-01.txt
> 	Pages           : 48
> 	Date            : 2008-11-01
> 

I believe there's a typo in line 345 of draft-ietf-sieve-managesieve-01.txt:

"indended" should be "intended".

p@rick

-- 
state of mind
Agentur f�r Kommunikation, Design und Softwareentwicklung

Patrick Koetter            Tel: 089 45227227
Echinger Strasse 3         Fax: 089 45227226
85386 Eching               Web: http://www.state-of-mind.de

Amtsgericht M�nchen        Partnerschaftsregister PR 563

From: [email-masked]
To: [email-masked]
Cc: [email-masked]
Subject: I-D Action:draft-ietf-sieve-managesieve-01.txt 
Date: Sat,  1 Nov 2008 12:00:02 -0700 (PDT)
Sender: [email-masked]

--NextPart

A New Internet-Draft is available from the on-line Internet-Drafts directories.
This draft is a work item of the Sieve Mail Filtering Language Working Group of the IETF.

	Title           : A Protocol for Remotely Managing Sieve Scripts
	Author(s)       : A. Melnikov, T. Martin
	Filename        : draft-ietf-sieve-managesieve-01.txt
	Pages           : 48
	Date            : 2008-11-01

Sieve scripts allow users to filter incoming email.  Message stores
are commonly sealed servers so users cannot log into them, yet users
must be able to update their scripts on them.  This document
describes a protocol "ManageSieve" for securely managing Sieve
scripts on a remote server.  This protocol allows a user to have
multiple scripts, and also alerts a user to syntactically flawed
scripts.

A URL for this Internet-Draft is:
http://www.ietf.org/internet-drafts/draft-ietf-sieve-managesieve-01.txt

Internet-Drafts are also available by anonymous FTP at:
ftp://ftp.ietf.org/internet-drafts/

Below is the data which will enable a MIME compliant mail reader
implementation to automatically retrieve the ASCII version of the
Internet-Draft.

--NextPart
Content-Type: Message/External-body;
	name="draft-ietf-sieve-managesieve-01.txt";
	site="ftp.ietf.org";
	access-type="anon-ftp";
	directory="internet-drafts"

Content-Type: text/plain
Content-ID:     <[email-masked]>

--NextPart--

Date: Sat, 1 Nov 2008 13:57:41 -0500
From: Troy Benjegerdes <[email-masked]>
To: Ned Freed <[email-masked]>, [email-masked]
Cc: Matthew Elvey <[email-masked]>, Cyrus Daboo <[email-masked]>, Alexey Melnikov <[email-masked]>
Subject: Implementations of draft-ietf-sieve-refuse-reject-07 ?
Sender: [email-masked]

Are there any Sieve implementations that follow draft-ietf-sieve-refuse-reject-07?

I am quite interested in replacing my existing per-user SMTP-time
rejection mechanism based on courier-mta's mailfilter with something
that will hopefully wind up as a standard Sieve-based method.

I've seen reference to Sun's implementation.. is this available as open
source, or as a proprietary product?

Date: Sat, 01 Nov 2008 18:47:55 +0000
From: Alexey Melnikov <[email-masked]>
To: [email-masked]
Subject: WGLC on draft-ietf-sieve-managesieve-01.txt
Sender: [email-masked]

Hi folks,

draft-martin-managesieve already had an informal WG-like last call 
(before the Sieve WG rechartered). I've just posted 
draft-ietf-sieve-managesieve-01.txt that I believe addressed all major 
outstanding issues. Because the list of changes to the document is long, 
as one of the authors I think it is worth to have another WGLC to verify 
that they are Ok with the WG.

Now, with my co-chair hat on:

This message officially starts the Sieve Working Group Last Call for the 
following document:
A Protocol for Remotely Managing Sieve Scripts
<http://www.ietf.org/internet-drafts/draft-ietf-sieve-managesieve-01.txt>

The Working Group Last Call for this document starts on November 3rd and 
will end on November 21st (so it is almost 3 weeks, so that the IETF 
meeting in Dublin is covered).

Please send any comments to the Sieve mailing list or directly to me. If 
you chose to do the latter, please CC Cyrus Daboo <[email-masked]>.
Reviews that found no issues are also welcomed, so if you review the 
document and find it acceptable, please let the mailing 
list/authors+chairs know as well.

Thank you,
Alexey, Sieve WG co-chairs

Date: Sat, 01 Nov 2008 17:33:52 +0000
From: Alexey Melnikov <[email-masked]>
To: [email-masked]
Subject: Re: Proposal to change sieve: URL syntax used by the ManageSieve protocol
Sender: [email-masked]

Alexey Melnikov wrote:

>      owner         = 1*ochar
>                      ;; %-encoded version of [IMAP4] authorization
>                      ;; identity (owner) or "userid".
>                      ;; Note that ASCII characters
>                      ;; like "&" / "=", "/" and "?" MUST be %-encoded.

>     scriptname    = 1*ochar
>                      ;; %-encoded version of UTF-8 representation
>                      ;; of the script name.
>                      ;; Note that ASCII characters
>                      ;; like "&" / "=", "/" and "?" MUST be %-encoded.

Actually SP and ";" should be encoded as well, so I've updated 2 
comments above.

Date: Sat, 01 Nov 2008 17:28:55 +0000
From: Alexey Melnikov <[email-masked]>
To: [email-masked]
Subject: Re: Proposal to change sieve: URL syntax used by the ManageSieve protocol
Sender: [email-masked]

Alexey Melnikov wrote:

> Dilyan Palauzov wrote:
>
>>>> Section 3:
>>>>
>>>>>         sieveurl-script = "sieve://" [ authority ] "/" scriptname
>>>>
>>>> * IMAP URLs made the mistake of confusing the identity used to 
>>>> authenticate with the identity that owns the script.  This makes 
>>>> IMAP URLs cumbersome. I would strongly encourage a naming model 
>>>> that separates the two and keeps the script owner explicit.  For 
>>>> example:
>>>>
>>>>   sieveurl-script = "sieve://" [ authority ] "/" owner "/" scriptname
>>>
>> What about
>>    sieveurl-script = "sieve://" [ authority ] "/" [owner "/"] scriptname
>>
>> And missing [owner "/"] implies authentication ID = authorization ID
>
> This might work. But I think this would also require that any "/" in 
> the <owner> or <scriptname> be URL %-encoded. This shouldn't be a 
> problem for existing deployments, because I don't think use of "/" in 
> script names is common anyway (and some servers currently disallow it).

Based on the mailing list feedback I've updated the draft to allow for 
optional <owner>. In order to simplify further extensions the new syntax 
requires that US-ASCII characters such as "&", "=", "/" and "?" are 
%-encoded as required by RFC 3986:

      sieveurl-script = "sieve://" [ authority ] "/" [owner "/"] scriptname

      sub-delims-sh = "!" / "$" / "'" / "(" / ")" /
                      "*" / "+" / ","
                      ;; Same as [URI-GEN] sub-delims,
                      ;; but without ";", "&" and "=".

      uchar         = unreserved / pct-encoded / sub-delims-sh
                      ;; Same as [URI-GEN]
                      ;; 'unreserved / pct-encoded / sub-delims',
                      ;; but without ";", "&" and "=".

      ochar         = uchar / ":" / "@"
                      ;; Same as [URI-GEN] 'pchar'
                      ;; but without ";", "&" and "=".

      owner         = 1*ochar
                      ;; %-encoded version of [IMAP4] authorization
                      ;; identity (owner) or "userid".
                      ;; Note that ASCII characters
                      ;; like "&" / "=", "/" and "?" MUST be %-encoded.
                     
      scriptname    = 1*ochar
                      ;; %-encoded version of UTF-8 representation
                      ;; of the script name.
                      ;; Note that ASCII characters
                      ;; like "&" / "=", "/" and "?" MUST be %-encoded.

Date: Sat, 01 Nov 2008 12:33:27 +0000
From: Alexey Melnikov <[email-masked]>
To: Aaron Stone <[email-masked]>
CC: Arnt Gulbrandsen <[email-masked]>, [email-masked]
Subject: Re: draft-ietf-sieve-managesieve-00.txt is to replace draft-martin-managesieve-12.txt
Sender: [email-masked]

Aaron Stone wrote:

> On Oct 21, 2008, at 4:20 AM, Arnt Gulbrandsen wrote:
>
>>>> A new command is the cleanest way. CHECKSCRIPT.
>>>
>>> I agree this is cleaner. But it has to be an extension (which is  
>>> fine in this case)
>>
>> My intuitive preference is to make an extension, say that server  
>> MUST implement it, explain that it is an extension only because past  
>> versions of the document didn't contain CHECKSCRIPT, and maybe put  
>> warnings into this extension. (I haven't looked at how you did  
>> warnings in today's draft.)
>
> +1 for a new mandatory command.

Ok, I've added a new CHECKSCRIPT command, which is currently a new 
CHECKSCRIPT extension (but see my reply to Arnt about that).

> Probably does need to be defined as an extension because there are a  
> number of extant implementations. I thought someone said that we're  
> breaking use of PUTSCRIPT for syntax validation, but I didn't see  
> where that happened in a (very) quick read of the draft. If we make a  
> change like that, I think it's reasonable to add CHECKSCRIPT without  
> advertising it.
>
> I'll note that the ABNF for PUTSCRIPT still allows a blank name:
>
> command-putscript = "PUTSCRIPT" SP sieve-name SP sieve-script
> sieve-name = string
> quoted = DQUOTE *1024QUOTED-CHAR DQUOTE ;; limited to 1024 octets  
> between the <">s

I've fixed that in ABNF by introducing active-script-name (to be used by 
SETACTIVE command only) ABNF production and disallowing empty string in 
the sieve-name production.

Date: Sat, 01 Nov 2008 12:25:23 +0000
From: Alexey Melnikov <[email-masked]>
To: Arnt Gulbrandsen <[email-masked]>
CC: [email-masked]
Subject: Re: draft-ietf-sieve-managesieve-00.txt is to replace draft-martin-managesieve-12.txt
Sender: [email-masked]

Arnt Gulbrandsen wrote:

>>> A new command is the cleanest way. CHECKSCRIPT.
>>
>> I agree this is cleaner. But it has to be an extension (which is fine 
>> in this case)
>
> My intuitive preference is to make an extension, say that server MUST 
> implement it, explain that it is an extension only because past 
> versions of the document didn't contain CHECKSCRIPT,

Currently I have 3 extensions in the document: RENAMESCRIPT, NOOP and 
CHECKSCRIPT. I am wondering if we should bundle all 3 together and 
advertise a single capability for them.

> and maybe put warnings into this extension. (I haven't looked at how 
> you did warnings in today's draft.)

No need, as WARNINGS is a response code.