X-Git-Url: https://git.exim.org/exim.git/blobdiff_plain/f656d13573661ac5a0d4fc49b932a3c961ee3eca..4304270b0d149f3b5add089f8d0397791b7cd12e:/doc/doc-txt/README.SIEVE diff --git a/doc/doc-txt/README.SIEVE b/doc/doc-txt/README.SIEVE index 04383f6e5..b9973bc10 100644 --- a/doc/doc-txt/README.SIEVE +++ b/doc/doc-txt/README.SIEVE @@ -1,4 +1,4 @@ -$Cambridge: exim/doc/doc-txt/README.SIEVE,v 1.4 2005/05/03 10:02:27 ph10 Exp $ +$Cambridge: exim/doc/doc-txt/README.SIEVE,v 1.6 2005/07/01 10:21:45 ph10 Exp $ Notes on the Sieve implementation for Exim @@ -20,9 +20,9 @@ then there is no way around it. Exim Implementation -The Exim Sieve implementation offers the core as defined by RFC 3028, the -"envelope" (RFC 3028), the "fileinto" (RFC 3028), the "copy" (RFC 3894) -and the "vacation" (draft-ietf-sieve-vacation-01.txt) extension, +The Exim Sieve implementation offers the core as defined by RFC 3028bis, +the "envelope" (RFC 3028), the "fileinto" (RFC 3028), the "copy" (RFC +3894) and the "vacation" (draft-ietf-sieve-vacation-02.txt) extension, the "i;ascii-numeric" comparator, but not the "reject" extension. Exim does not support MDMs, so adding it just to the sieve filter makes little sense. @@ -141,17 +141,6 @@ This implementation treats them literally, as it does if the word is correct, but its character set can not be converted to UTF-8. -Address Test For Multiple Addresses Per Header - -A header may contain multiple addresses. RFC 3028 does not explicitly -specify how to deal with them, but since the "address" test checks if -anything matches anything else, matching one address suffices to -satify the condition. That makes it impossible to test if a header -contains a certain set of addresses and no more, but it is more logical -than letting the test fail if the header contains an additional address -besides the one the test checks for. - - Semantics Of Keep The keep command is equivalent to fileinto "inbox": It saves the @@ -169,30 +158,14 @@ that aspect using the appendfile transport options "create_directory", the Exim specification for details. -Semantics of Redirect - -Sieve scripts are supposed to be interoperable between servers, so this -implementation does not allow redirecting mail to unqualified addresses, -because the domain would depend on the used system and on systems with -virtual mail domains it is probably not what the user expects it to be. - - String Arguments There has been confusion if the string arguments to "require" are to be -matched case-sensitive or not. This implementation matches them with -the match type ":is" (default, see section 2.7.1) and the comparator -"i;ascii-casemap" (default, see section 2.7.3). The RFC defines the -command defaults clearly, so any different implementations violate RFC -3028. The same is valid for comparator names, also specified as strings. - - -Number Units - -There is a mistake in RFC 3028: The suffix G denotes gibi-, not tebibyte. -The mistake os obvious, because RFC 3028 specifies G to denote 2^30 -(which is gibi, not tebi), and that's what this implementation uses as -scaling factor for the suffix G. +matched case-sensitive or not. The comparator default is case-insensitive +comparison, but "require" does not allow to specify a comparator, so +this default does not apply. Lacking a clear specification, matching +the strings exactly makes most sense. The same is valid for comparator +names, also specified as strings. Sieve Syntax and Semantics @@ -200,13 +173,10 @@ Sieve Syntax and Semantics RFC 3028 confuses syntax and semantics sometimes. It uses a generic grammar as syntax for actions and tests and performs many checks during semantic analysis. Syntax is specified as grammar rule, semantics -with natural language, despire the latter often talking about syntax. +with natural language, despite the latter often talking about syntax. The intention was to provide a framework for the syntax that describes current commands as well as future extensions, and describing commands -by semantics. Since the semantic analysis is not specified by formal -rules, it is easy to get that phase wrong, as demonstrated by the mistake -in RFC 3028 to forbid "elsif" being followed by "elsif" (which is allowed -in Sieve, it's just not specified correctly). +by semantics. RFC 3028 does not define if semantic checks are strict (always treat unknown extensions as errors) or lazy (treat unknown extensions as error, @@ -367,19 +337,13 @@ the UTF-8 reason is processed to compose the resulting message. Default Subject -The draft specifies that the default message subject is "Re: " -plus the old subject, stripped by any leading "Re: " strings. -This string is to be taken literally, unlike some software which -matches a regular expression like "[rR][eE]: *". Using this -subject is dangerous, because many mailing lists verify addresses -by sending a secret key in the subject of a message, asking to -reply to the message for confirmation. Using the default vacation -subject confirms any subscription request of this kind, allowing -to subscribe a third party to any mailing list, either to annoy -the user or to declare spam as legitimate mail by proving to -use opt-in. The draft specifies to use "Re: " in front of the -subject, but this implementation uses "Auto: ", as suggested in -RFC 3834, section 3.1.5. +The draft specifies that the default message subject is "Auto: " plus +the old subject. Using this subject is dangerous, because many mailing +lists verify addresses by sending a secret key in the subject of a +message, asking to reply to the message for confirmation. Using the +default vacation subject confirms any subscription request of this kind, +allowing to subscribe a third party to any mailing list, either to annoy +the user or to declare spam as legitimate mail by proving to use opt-in. Rate Limiting Responses @@ -404,11 +368,3 @@ Global Reply Address Blacklist The draft requires that each implementation offers a global black list of addresses that will never be replied to. Exim offers this as option "never_mail" in the autoreply transport. - - -Interaction With Other Sieve Elements - -The draft describes the interaction with vacation, discard, keep, -fileinto and redirect. It MUST describe compatibility with other -actions, but doesn't. In this implementation, vacation is compatible -with any other action.