dovecot-2.0-pigeonhole: Updated documentation for upcoming release.

pigeonhole at rename-it.nl pigeonhole at rename-it.nl
Thu Aug 19 19:04:29 EEST 2010


details:   http://hg.rename-it.nl/dovecot-2.0-pigeonhole/rev/9ea3bdda8e15
changeset: 1381:9ea3bdda8e15
user:      Stephan Bosch <stephan at rename-it.nl>
date:      Thu Aug 19 18:04:22 2010 +0200
description:
Updated documentation for upcoming release.

diffstat:

 INSTALL |   58 ++++----
 NEWS    |  360 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
 README  |   32 ++--
 3 files changed, 401 insertions(+), 49 deletions(-)

diffs (truncated from 556 to 300 lines):

diff -r 1ae9569b0383 -r 9ea3bdda8e15 INSTALL
--- a/INSTALL	Tue Aug 17 19:03:36 2010 +0200
+++ b/INSTALL	Thu Aug 19 18:04:22 2010 +0200
@@ -39,7 +39,7 @@
     external plugins. The default is not to install development headers.
 
   --with-unfinished-features=no
-	Controls whether unfinished features and extensions are built. Enabling this
+    Controls whether unfinished features and extensions are built. Enabling this
     will enable the compilation of code that is considered unfinished and highly
     experimental and may therefore introduce bugs and unexpected behavior. 
     In fact, it may not compile at all. Enable this only when you are eager to
@@ -57,7 +57,7 @@
 The Pigeonhole package provides the following items:
 
   - The LDA Sieve plugin for Dovecot's Local Delivery Agent (LDA): This
-	facilitates the actual Sieve filtering upon delivery.
+    facilitates the actual Sieve filtering upon delivery.
 
   - The ManageSieve Service: This implements the ManageSieve protocol through
     which users can remotely manage Sieve scripts on the server. 
@@ -121,21 +121,21 @@
 
 plugin {
 ...
-   # The location of the user's active script:
-   sieve = ~/.dovecot.sieve
+  # The location of the user's active script:
+  sieve = ~/.dovecot.sieve
 
-   # If the user has no personal active script (i.e. if the file 
-   # indicated in sieve= does not exist), use this one:
-   sieve_global_path = /var/lib/dovecot/sieve/default.sieve
+  # If the user has no personal active script (i.e. if the file 
+  # indicated in sieve= does not exist), use this one:
+  sieve_global_path = /var/lib/dovecot/sieve/default.sieve
 
-   # The include extension fetches the :personal scripts from this 
-   # directory. When ManageSieve is used, this is also where scripts 
-   # are uploaded.
-   sieve_dir = ~/sieve
+  # The include extension fetches the :personal scripts from this 
+  # directory. When ManageSieve is used, this is also where scripts 
+  # are uploaded.
+  sieve_dir = ~/sieve
 
-   # The include extension fetches the :global scripts from this 
-   # directory.
-   sieve_global_dir = /var/lib/dovecot/sieve/global/
+  # The include extension fetches the :global scripts from this 
+  # directory.
+  sieve_global_dir = /var/lib/dovecot/sieve/global/
 }
 
 LDA Sieve Plugin - Configurable Limits
@@ -158,9 +158,9 @@
 LDA Sieve Plugin - Per-user Sieve script location
 -------------------------------------------------
 
-By default, the Pigeonhole LDA Sieve plugin looks for the user's Sieve script file
-in the user's home directory (~/.dovecot.sieve). This requires that the home 
-directory is set for the user.
+By default, the Pigeonhole LDA Sieve plugin looks for the user's Sieve script
+file in the user's home directory (~/.dovecot.sieve). This requires that the
+home directory is set for the user.
 
 If you want to store the script elsewhere, you can override the default using 
 the sieve setting, which specifies the path to the user's script file. This can 
@@ -209,16 +209,16 @@
 The script execution ends when the currently executing script in the sequence
 does not yield a "keep" result: when the script terminates, the next script is 
 only executed if an implicit or explicit "keep" is in effect. Thus, to end all
-script execution, a script must not execute keep and it must cancel the 
-implicit keep, e.g. by executing "discard; stop;". This means that the command 
-"keep;" has different semantics when used in a sequence of scripts. For normal
-Sieve execution, "keep;" is equivalent to "fileinto "INBOX";", because both 
-cause the message to be stored in INBOX. However, in sequential script 
-execution, it only controls whether the next script is executed. Storing the 
-message into INBOX (the default folder) is not done until the last script in 
-the sequence executes (implicit) keep. To force storing the message into INBOX
-earlier in the sequence, the fileinto command can be used (with ":copy" or 
-together with "keep;").
+script execution, a script must not execute keep and it must cancel the implicit
+keep, e.g. by executing "discard; stop;". This means that the command "keep;" 
+has different semantics when used in a sequence of scripts. For normal Sieve 
+execution, "keep;" is equivalent to "fileinto "INBOX";", because both cause the
+message to be stored in INBOX. However, in sequential script execution, it only
+controls whether the next script is executed. Storing the message into INBOX
+(the default folder) is not done until the last script in the sequence executes
+(implicit) keep. To force storing the message into INBOX earlier in the
+sequence, the fileinto command can be used (with ":copy" or together with
+"keep;").
 
 Apart from the keep action, all actions triggered in a script in the sequence
 are executed before continuing to the next script. This means that when a script
@@ -378,8 +378,8 @@
 it does not exist (as far as the system permits the user to do so; no root 
 privileges are used). This is similar to the behavior of the mail daemons. 
 
-The following provides an example configuration for Sieve and ManageSieve. 
-Only sections and settings relevant to ManageSieve are shown. Refer to 
+The following provides an example configuration for Sieve and ManageSieve. Only
+sections and settings relevant to ManageSieve are shown. Refer to 
 20-managesieve.conf in the doc/example-config/conf.d directory for a full 
 example with comments, but don't forget to configure Sieve and add sieve to the 
 'protocols = ...' setting if you use it.
diff -r 1ae9569b0383 -r 9ea3bdda8e15 NEWS
--- a/NEWS	Tue Aug 17 19:03:36 2010 +0200
+++ b/NEWS	Thu Aug 19 18:04:22 2010 +0200
@@ -1,6 +1,298 @@
-<TO BE RELEASED>
+v0.2.0 [TO BE RELEASED] Stephan Bosch <stephan at rename-it.nl>
+	* Merged Sieve and ManageSieve packages into a single Pigeonhole package. 
+	  There is also no need to patch Dovecot anymore to gain ManageSieve support.
+	  Version numbering of previous Sieve releases is continued as v0.2.0. The
+	  sources originally branched off from Sieve v0.1.5 and ManageSieve v0.11.4,
+	  but the NEWS history of much more recent releases for Dovecot v1.2 is
+	  included since these changes are all included in this release as well. 
+	* The ManageSieve service now binds to TCP port 4190 by default due to the 
+	  IANA port assignment for the ManageSieve service. When upgrading from v1.2,
+	  this should be taken into account. The service can be configured manually to
+	  listen on both 2000 and 4190.
+	* The Dovecot configuration now calls the ManageSieve protocol 'sieve' in
+	  stead of 'managesieve' because it is registered as such with IANA. The 
+	  binaries and the services are still called managesieve and
+	  managesieve-login.
+	* The binary representation of a compiled Sieve script is updated to include
+	  source code locations of all commands and arguments. This is implemented in
+	  a similar manner as such debug information is included in some system
+	  executables and libraries (DWARF-like). Run-time errors can now always refer 
+	  to the proper line number in the Sieve source script.
+	+ Simplified string matching API to use abstract string lists as data sources.
+	  This will also make implementing the index extension easier in the future. 
+	+ Significantly improved trace debugging with the sieve-test tool. The full
+	  execution of the script can be examined, including the matched values and 
+	  keys of the respective Sieve test commands. The executed statements are
+	  listed with their line number (and code address when requested). The level
+	  of detail is configurable from the command line. 
+	+ The SIEVE and NOTIFY capabilities reported by the ManageSieve protocol can
+	  now be configured manually. If left unconfigured, the capabilities are 
+	  determined from the default Sieve and ManageSieve configuration.
+	  User-specific capabilities aren't reported until after configuration.
+	+ Significantly improved file error handling. This means that administrators
+	  get a more useful and informative log message when file operations fail. The
+	  most notable example is that when the LDA Sieve plugin is trying to store a
+	  binary for a global script, the resulting failure message also points the
+	  administrator towards pre-compiling the script with sievec.
+	- Multiscript: fixed duplicate implicit keep caused by erroneous execution
+	  state update.
+	- Prevented assertion failure due to currupt binary string representation. 
+	  If the string were missing a final \0 character an assertion was produced in
+	  stead of a binary corruption error.
+	- Imap4flags: fixed bug in setflag command; when parameter was a stringlist,
+	  only the last item was actually set.
+	- Variables extension: fixed :length set modifier to recognize utf8 characters
+	  in stead of octets.
+	- Testsuite: prevented innocent warning messages, i.e. part of the test,
+	  from showing up by default.
+	- ManageSieve/Sieve storage: fixed error handling of PUTSCRIPT commmand; save
+	  commit errors would not make the command fail.
 
-v0.1.5 18-4-2009  Stephan Bosch <stephan at rename-it.nl>
+Sieve NEWS history:
+
+v0.1.17 19-06-2010 Stephan Bosch <stephan at rename-it.nl>
+	- Made sure source code positions for compiler messages are recorded at start
+	  of tokens.
+	- Fixed a few potential memory leaks in the Sieve compiler and the
+	  spam/virustest extensions.
+	- Made command line tools return proper exit status upon failure.
+
+v0.1.16 30-04-2010 Stephan Bosch <stephan at rename-it.nl>
+
+	* Finished implementation of spamtest, spamtestplus and virustest extensions.
+	  These are not enabled by default and need to be activated with the
+	  sieve_extensions setting. Documentation available in 
+	  doc/spamtest-virustest.txt
+	+ Vacation extension: the from address of the generated reply is now by 
+	  default equal to whatever known recipient alias matched the headers of the
+	  message. If it is one of the aliases specified with :addresses, it is used
+	  in stead of the envelope recipient address that was used before. 
+	+ Restructured and optimized the lexical scanner. 
+	+ Added --with-docs configure option to allow disabling installation of 
+	  documentation. 
+	- Accidentally omitted 'extern' in two declarations of global variables in
+	  header files, causing compile failures on certain systems.
+	- Deprecated imapflags extension: fixed implicit assignment of flags. Turns
+	  out this never really worked, but the effect of this bug was obscured by the
+	  removeflag bug fixed in the previous release.
+	- Fixed various memset argument mixups in enotify extension. This caused 
+	  warnings on certain systems, but luckily no adverse effects at runtime.
+
+v0.1.15 25-01-2010 Stephan Bosch <stephan at rename-it.nl>
+
+	* Enotify extension: 
+	  - Adjusted notify method API for addition of new notification methods.
+	  - Set default importance level to 'normal' (was 'high').
+	* Include extension: updated implementation towards most recent specification
+	  (all should be backwards compatible):
+	  - Implemented global variables namespace.
+	  - Global command may now appear anywhere in a script.
+	  - Implemented script name checking using the requirements specified in the
+	    ManageSieve draft.
+	  - One issue remains: ManageSieve currently requires included scripts to be
+	    uploaded first, which is not according to specification.
+	* Changed envelope path parser to allow to and from envelope addresses that
+	  have no domain part. 
+	+ Added preliminary support for Sieve plugins and added support for installing
+	  Sieve development headers.
+	+ Started work on the implementation of the spamtest, spamtestplus and
+	  virustest extensions (unfinished).
+	+ Deprecated notify extension: implemented denotify command.
+	+ Variables extension: added support for variable namespaces.
+	+ Added configurable script size limit. Compiler will refuse to compile files
+	  larger than sieve_max_script_size.
+	+ Testsuite changes: 
+	  - Added support for changing and testing an extension's configuration.
+	  - Added a command line parameter for copying errors to stderr.
+	- Fixed a bug in the i;ascii-numeric comparator. If one of the strings started
+	  with a non-digit character, the comparator would always yield less-than.
+	- Imap4flags extension: fixed bug in removeflag: removing a single flag failed 
+	  due to off-by-one error (bug report by Julian Cowley).
+	- Improved EACCES error messages for stat() and lstat() syscalls and slightly
+	  improved error messages that may uccur when saving a binary.
+	- Vacation extension: fixed typo in runtime log message (patch by Julian 
+	  Cowley).
+	- Fixed use of minus '-' in man pages; it is now properly escaped.
+	- Fixed parser recovery. In particular cases it would trigger spurious errors
+	  after an initial valid error and sometimes additional errors were
+	  inappropriately ignored.
+
+v0.1.14 19-12-2009 Stephan Bosch <stephan at rename-it.nl>
+
+	* Made the imposed limits on the number of redirects and the number of 
+	  actions configurable. The settings are called sieve_max_actions and 
+	  sieve_max_redirects.
+	* Did a major rework of extension handling, making sure that no global state
+	  is maintained. This change was triggered by problems that global state info
+	  would cause for Dovecot v2.0, but it is also important for v1.2 as it
+	  significantly cleans up the library implementation. 
+	+ Made LDA Sieve plugin recognize the deliver_log_format setting.
+	+ Message headers produced from user-supplied data are now RFC2047-encoded if
+	  necessary for outgoing messages. This is for example important for the
+	  :subject argument of the vacation action.  
+	+ Added support for the $text$ substitution in the deprecated notify 
+	  extension.
+	+ The subaddress extension now also accepts recipient_delimiter setting as an 
+	  alias for sieve_subaddress_sep setting. This anticipates the 
+	  recipient_delimiter setting in v2.0. 
+	- Fixed logging of mailbox names. It logged the converted mUTF7 version in 
+	  stead of the original UTF8 version supplied by the user.
+	- Fixed a minor memory leak in the multiscript support.
+	- Fixed a bug in the recompilation of Sieve scripts. Made sure that scripts 
+	  are only recompiled when the script file - or the symlink pointing to it - 
+	  is strictly newer.
+
+v0.1.13 18-10-2009 Stephan Bosch <stephan at rename-it.nl>
+
+	+ Body extension: implemented proper handling of the :raw transform and added 
+	  various new tests to the test suite. However, :content "multipart" and
+	  :content "message/rfc822" are still not working. 
+	+ Fixed race condition occuring when multiple instances are saving the same 
+	  binary (patch by Timo Sirainen).
+	+ Test suite: added support for testing multiscript execution.
+	- Made compiler more lenient towars missing CRLF at the end of the script in a 
+	  hash comment.
+	- Body extension: don't give SKIP_BODY_BLOCK flag to message parser, we want 
+	  the body! (patch by Timo Sirainen).
+	- Fixed handling of implicit side effects for multiscript execution.
+	- Fixed bugs in multiscript support; subsequent keep actions were not always 
+	  merged correctly and implicit side effects were not always handled
+	  correctly.
+	- Fixed a segfault bug in the sieve-test tool occuring when compile fails.
+	- Fixed segfault bug in action procesing. It was triggered while merging side 
+	  effects in duplicate actions.
+	- Fixed bug in the Sieve plugin that caused it to try to stat() a NULL path, 
+	  yielding a 'Bad address' error. 
+
+v0.1.12 21-08-2009 Stephan Bosch <stephan at rename-it.nl>
+
+	+ Testsuite: added support for testing binaries stored on disk.
+	+ Implemented the new date extension. This allows matching against date values 
+	  in header fields and the current date at the time of script evaluation.
+
+v0.1.11 08-08-2009 Stephan Bosch <stephan at rename-it.nl>
+
+	+ Built skeleton implementation for the date extension (RFC 5260). It
+	  compiles, but it does not do anything useful yet. Therefore, it is not part 
+	  of the default compilation. 
+	- Fixed ARM portability issues caused by char type not being signed on that
+	  platform. Reading optional operands from a binary would fail for action side 
+	  effects. Also, an accidental mixup of an int return type with bool caused 
+	  the interpreter to continue on ARM even though an error occured.  
+	- Removed direct stdint.h includes to prevent portability issues.
+	- Fixed segfault bug in the handling of script open failures.
+	- Include: improved user error messages and system log messages.
+	- Fixed copy-paste mixup between sieve_after and sieve_before settings in the
+	  LDA Sieve plugin. If only a sieve_after script was active, nothing would 
+	  have been executed. Patch by Mike Abbott.
+	- Include: fixed a bug in HOME substitution in the sieve_dir path. Surfaced in 


More information about the dovecot-cvs mailing list