Subject: Sieve reject draft open issue: compatibility with other actions

From: Alexey Melnikov <[email-masked]>
Date: Sat, 15 Jul 2006 15:00:56 +0100

This issue was discussed during the Montreal meeting. I've also read the 
discussion on the mailing list, so I will try to provide summary below. 
(Please let me know if you disagree.)

The current text says that "implementations SHOULD prohibit reject when 
used with other actions, in particular "reject" SHOULD be incompatible 
with keep, fileinto, redirect and discard".
This means that reject + <foo> would cause a runtime error if the SHOULD 
is followed (and would result in implicit keep). After reading the 
mailing list I see that there are people who advocate reject 
compatibility with fileinto and those who don't. I don't think we have a 
consensus to change reject one way or another. Having said that I would 
propose:

1). Drop "implementations SHOULD prohibit" and just say that "reject 
SHOULD be incompatible with ...".
The current text is too generic and is placing a non-enforceable 
requirement on future specs.
I also think that reject should be made compatible with 
setflags/addflags/removeflags, so removal of the text will address that.

2). Add explanatory text as to why there is incompatibility (i.e. it is 
bad to lie to the sender about delivery status of the message)

3). If there is any interest, work on creating a new action (or adding a 
new tagged argument to reject) that would be compatible with 
keep/fileinto/redirect.