summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGeorg Greve <greve@kolabsys.com>2011-10-04 20:33:06 (GMT)
committerGeorg Greve <greve@kolabsys.com>2011-10-04 20:33:06 (GMT)
commit68396ab88d7989be85b1d24746756c589637c88d (patch)
tree08194436cecd6b7f00455d42f4ac1f6204408cde
parentffcdc4c0d367e6be4c9fad294844aa2363c21b8c (diff)
downloadkeps-68396ab88d7989be85b1d24746756c589637c88d.tar.gz
Added references provided by Stephan Bosch
-rw-r--r--KEP-0014.txt20
1 files changed, 13 insertions, 7 deletions
diff --git a/KEP-0014.txt b/KEP-0014.txt
index 1fc0739..92de687 100644
--- a/KEP-0014.txt
+++ b/KEP-0014.txt
@@ -24,11 +24,13 @@ For the purpose of this KEP, all file names of Sieve<ref name="sieve" /> scripts
For reading and writing, clients '''SHALL''' consistently use the upper case form for all of [[#MASTER|MASTER]], [[#MANAGEMENT|MANAGEMENT]] and [[#USER|USER]] and '''SHALL''' append extensions in lower case, e.g. '.siv' and '.sieve' as done consistently in this KEP.
== Enabling Non-Conflicting Sieve Editing ==
-In order to enable Non-Conflicting Sieve Editing according to this KEP, a [[#MASTER|MASTER]] alongside an no-op [[#MANAGEMENT|MANAGEMENT]] and [[#USER|USER]] file '''MUST''' be defined during platform integration and adapted during deployment. The [[#MASTER|MASTER]] '''SHALL''' then be considered authoritative for that deployment.
+In order to enable Non-Conflicting Sieve Editing according to this KEP, a [[#MASTER|MASTER]] file '''MUST''' be defined during platform integration and adapted during deployment. The [[#MASTER|MASTER]] '''SHALL''' then be considered authoritative for that deployment.
-It '''SHALL''' be automatically deployed and activated for all users in that system that are to make use of the Non-Conflicting Sieve Editing alongside the no-op [[#MANAGEMENT|MANAGEMENT]] and [[#USER|USER]] files.
+Where the IMAP server supports at least version 13 of the 'Sieve Email Filtering: Include Extension' draft<ref name="include" />, the [[#MASTER|MASTER]] file '''SHOULD''' use the ':optional' parameter for its includes and '''SHALL''' constitute the entire authoritative set of files for this deployment. Otherwise the [[#MASTER|MASTER]] file '''MUST''' be accompanied by a no-op [[#MANAGEMENT|MANAGEMENT]] and [[#USER|USER]] file which '''SHALL''' constitute part of the authoritative set of files for this deployment alongside the [[#MASTER|MASTER]] file.
-{{note|Why do we need dummy files?|The 'Sieve Email Filtering: Include Extension' draft specifies that the server MUST generate an error when trying to include non-existing files. Because [[#MASTER|MASTER]] is immediately active, typically before the management system or the user had any time to touch the Sieve scripts, empty files are required to avoid superfluous error messages and potentially break the functionality, e.g. when the user has created Sieve scripts, but the management system has not yet done so.}}
+The authoritative set of files '''SHALL''' be automatically deployed and activated for all users in that system that are to make use of the Non-Conflicting Sieve Editing alongside the no-op [[#MANAGEMENT|MANAGEMENT]] and [[#USER|USER]] files.
+
+{{note|Why and when do we need dummy files?|The 'Sieve Email Filtering: Include Extension' draft up until version 12 specifies that the server MUST generate an error when trying to include non-existing files. In such cases, because [[#MASTER|MASTER]] is immediately active, typically before the management system or the user had any time to touch the Sieve scripts, empty files are required to avoid superfluous error messages and potentially break the functionality, e.g. when the user has created Sieve scripts, but the management system has not yet done so. From version 13 of the draft onwards the ':optional' parameter can be used to avoid this issue, but this KEP cannot rely upon all implementations being against version 13 or later.}}
=== Sieve Editor Requirements ===
To be compliant with this KEP, Sieve editors '''MUST''' check for the presence of the [[#MASTER|MASTER]] file, and, if present, '''MUST''' do the following:
@@ -94,10 +96,10 @@ This is an example of the MASTER script, which can act as a template and '''SHAL
# include :global "this-group-of-users";
# The script maintained by the general management system
- include :personal "MANAGEMENT";
+ include :personal :optional "MANAGEMENT";
# The script(s) maintained by one or more editors available to the user
- include :personal "USER";
+ include :personal :optional "USER";
MASTER, [[#MANAGEMENT|MANAGEMENT]] and [[#USER|USER]] '''SHALL''' be receiving their file extension as required and appropriate for the IMAP server used.
@@ -230,10 +232,12 @@ There are multiple issues around Sieve (RFC 5228<ref name="sieve" />) scripts. T
=== Issue No 1 ===
A major issue is the incompatibility of multiple Sieve editors with each others' output. Due to the complexity of Sieve, editors typically only implement a subset of how certain rules are expressed, typically oriented around how the editing of these rules is presented to the user. When presented with an arbitrary Sieve script written by another editor or human being, editors typically '''CANNOT''' just parse this script and present it visually for editing.
-Reasons for this are likely the complexity and flexibility of the language, which make it hard for clients to parse existing scripts into their internal model and representation of what kind of filtering is supposed to take place how and when. To circumnavigate this issue and allow users to edit existing scripts, editors typically have some metainformation about the rules that have been expressed in Sieve which are modeled after their own approach to editing these scripts. That information is either stored in a separate data store, such as the file system or an SQL based data base, or injected into the Sieve script itself as comments.
+Reasons for this are the complexity and flexibility of the language, which make it hard for clients to parse existing scripts into their internal model and representation of what kind of filtering is supposed to take place how and when. To circumnavigate this issue and allow users to edit existing scripts, editors typically have some metainformation about the rules that have been expressed in Sieve which are modeled after their own approach to editing these scripts. That information is either stored in a separate data store, such as the file system or an SQL based data base, or injected into the Sieve script itself as comments.
This fundamental incompatibility is the reason that it is very difficult for two different Sieve editors to work on the same script, and the reason why usually only one Sieve editor is authoritative in any one installation.
+Providing the first step of resolving this issue at the root through a joint XML based meta language is the intent of {{rfc|5784}}<ref name="sievexml">{{rfc|5784|title=Sieve Email Filtering: Sieves and Display Directives in XML}}</ref>. In order to implement this there would have to be a subsequent definition of metadata fields, so no Sieve editor currently supports this.
+
=== Subsequent Issue ===
The Kolab Groupware Server often finds itself integrated into existing products which provide their own user and system administration infrastructure. This infrastructure typically also involves some level of vacation notice and/or spam management which may be the preferred way for customers to make use of such functionality.
@@ -244,11 +248,13 @@ With the Sieve: Include Extension<ref name="include" />, Sieve knows two namespa
For corporate environments, this is not always desirable. Admins may want to set scripts from the global context to be executed or even have user specific scripts that are being executed in a way that does not allow the user to accidentally or intentionally disable these scripts. The inability of Sieve to protect local scripts from editing, or define global scripts that are always executed then results in a similar workaround to the one described in the [[#Subsequent_Issue|Subsequent Issue]], above: Access to Sieve is blocked in its entirety for all users.
+It should be noted that the 'Sieve -- Sequential Execution of Multiple Scripts' draft<ref name="multiscript">[https://tools.ietf.org/html/draft-degener-sieve-multiscript-00 Sieve -- Sequential Execution of Multiple Scripts]</ref> sought to provide this functionality through an extension of Sieve itself, but expired in October 2003 and never made it to RFC stage. Should this be picked up again and moved forward, it would provide a more robust solution to this issue and Kolab should probably move towards it.
+
=== Issue No 3 ===
Sieve scripts can get fairly complex. It would be much more convenient and easier to manage the functionality with different scripts that define certain subsets of functionality and get executed as required. This was the original intention behind the 'Sieve Email Filtering: Include Extension' draft<ref name="include" />.
=== Scope of this KEP ===
-This KEP addresses the [[#Subsequent_Issue|Subsequent Issue]] and [[#Issue_No_2|Issue No 2]] through a workaround that is largely based on convention and procedure in a way that keeps the resolution of [[#Issue_No_3|Issue No 3]] through the Include Extensiont<ref name="include" /> intact. It does nothing to address [[#Issue_No_1|Issue No 1]], which is out of its reach, although hopefully the workaround may help to bring some convergence in the field of editors and consequently contribute to a solution for that issue some time in the future.
+This KEP addresses the [[#Subsequent_Issue|Subsequent Issue]] and [[#Issue_No_2|Issue No 2]] through a workaround that is largely based on convention and procedure in a way that keeps the resolution of [[#Issue_No_3|Issue No 3]] through the Include Extensiont<ref name="include" /> intact. It does nothing to address [[#Issue_No_1|Issue No 1]], which is out of its reach, although hopefully the workaround may help to bring some convergence in the field of editors and consequently contribute to a solution for that issue some time in the future, ideally based upon the work done in {{rfc|5784}}<ref name="sievexml"/>.
== References ==