Subject: [Dovecot-news] Released Pigeonhole v0.4.1 for Dovecot v2.2.4.
Date: Wed, 03 Jul 2013 22:15:31 +0200
To: dovecot-news@dovecot.org, Dovecot Mailing List <dovecot@dovecot.org>
Reply-To: dovecot@dovecot.org
Content-Transfer-Encoding: 7bit
Hello Dovecot users,
Now that I am not preoccupied anymore, I quickly release a new version
of Pigeonhole for Dovecot v2.2. This consists mainly of bug fixes. One
new feature is that the Sieve plugin will try to pass temporary
failures (e.g. from mail storage) back to LDA/LMTP as much as
possible. However, this change turned out a little bigger than I would
have liked, so experiment with it a bit before you deploy it in
production.
Changelog v0.4.1:
+ Added support for handling temporary failures. These are passed back
to LDA/LTMP to produce an appropriate response towards the MTA.
- Sieve storage: Removed PATH_MAX limitation for active symlink. This
caused problems for GNU/Hurd.
- Fixed line endings in X-Sieve headers added by redirect command.
- ManageSieve: Fixed '[' ']' stupidity for response codes (only
happened before login).
- Fixed setting name in example-config/conf.d/20-managesieve.conf.
- Sieve extprograms plugin: Fixed interaction between pipe command and
remote script service. The output from the script service was never
read, causing a broken pipe error at the script service. Apparently,
this was broken since the I/O handling for extprograms was last
revised.
- Fixed assertion failure due to datastack problem in message header
composition.
v0.4.0 09-05-2013 Stephan Bosch <stephan@rename-it.nl>
+ Added doveadm-sieve plugin that provides the possibility to synch Sieve
scripts using doveadm sync along with the user's mailboxes.
+ Added the Sieve extprograms plugin to the main Pigeonhole package. It is
still a plugin, but it is now included so that a separate compile is no
longer necessary and distributors are likely to include it. The extprograms
plugin provides Sieve language extensions that allows executing
(administrator-controlled) external programs for message delivery,
message filtering and string manipulation. Refer to
doc/plugins/sieve_extprograms.txt for more information.
+ Added debug message showing Pigeonhole version at initialization. Makes it
very clear that the plugin is properly loaded.
+ Finished implementation of the Sieve include extension. It should now
fully conform to RFC 6609. The main addition is the new :optional tag which
makes the include command ignore missing included scripts without an error.
+ Finished implementation of the Sieve environment extension as much as
possible. Environment items "location", "phase" and "domain" now also
return a usable value.
Changelog v0.3.2:
+ sieve-refilter tool: improved man page documentation by explicitly specifying
the syntax used for mailbox arguments.
+ Sieve: spamtest and virustest extensions: improved trace debugging of score
calculation.
+ Sieve: made error messages about exceeding the maximum number of actions more
verbose.
- Sieve tools: fixed problems with running as root: sievec and sieve-dump now
ignore mail_uid and mail_gid settings when run as root.
- Sieve: fixed bug in action accounting (for limit checking): increase action
instance count only when an action is actually created.
- Sieve: include extension: fixed namespace separation of :global and :personal
scripts.
- ManageSieve: fixed segfault bug triggered by CHECKSCRIPT command.
- Fixed linking with ld.gold.
- Fixed several Clang compile warnings and a few potential bugs.
Changelog v0.3.3:
- Fixed compile against installed Dovecot headers. This was broken by the
ld.gold fix in the previous release.
* Added support for retrieving Sieve scripts from dict lookup. This
means that Sieve scripts can now be downloaded from a database.
Compiled script binaries are still put on disk somewhere if used.
The INSTALL documentation is updated with information on this new
feature and the (backwards-compatible) changes to the configuration.
Note that his feature is currently not supported for
sieve_before/sieve_after or script management through ManageSieve.
+ Incorporated the sieve_duplicate plugin into main Pigeonhole tree as
a normal extension (vnd.dovecot.duplicate). This Dovecot-specific
extension adds the ability to check for duplicate deliveries based
on message ID. Specification can be found in:
doc/rfc/spec-bosch-sieve-duplicate.txt
+ Added support for specifying multiple sieve_before and sieve_after
paths. This adds much more flexibility to the multiscript
configuration. One application is to have user-specific Sieve
scripts outside the user's normal control through ManageSieve.
+ Added a "session ID" string for managesieve connections, available in
%{session} variable (analogous to Dovecot change).
- Fixed several small issues, including a few potential segfault bugs,
based on static source code analysis.
- ManageSieve: changed use of EPROTO error to EIO in ManageSieve
string stream implementation because it is apparently not known in
BSD.
- Gave stamp.h.in (needed for autotools) some content to prevent it
from disappearing in patch files.
- Fixed bug that caused a SunStudio CC compile failure (reported by
Piotr Tarnowski).
* Renamed sieve_global_path setting to sieve_default for clarity. Old name is
still recognized for backwards compatibility. Support for the ancient (pre
v1.1) name for this setting "global_script_path" is now dropped.
* Added means to prohibit use of redirect action. Setting sieve_max_redirects
to 0 now means that redirect is disallowed in stead of unlimited. Default
value remains four.
* Fixed interaction of Sieve include extension with ManageSieve. It is updated
to match new requirements in the draft include specification. Missing
included scripts are no longer an error at upload time.
* Updated RFC2822 header field body verification to exclude non-printing
characters (RFC5322). Only Sieve actions that can create unstructured header
values (currently enotify/mailto and editheader) are affected by this change.
+ Completed sieve-filter tool to a useful state. The sieve-filter tool provides
a means to (re)filter messages in a mailbox through a Sieve script.
+ Implemented the Sieve editheader extension. It is now possible to add and
remove message headers from within Sieve.
+ ManageSieve: added support for reading quoted and literal strings as a
stream. Fixes support for handing large SASL responses (analogous to similar
changes in Dovecot). It is now also allowed to use a quoted string for the
PUTSCRIPT script argument.
+ Added code to cleanup tmp directory in Sieve storage directory (sieve_dir)
every once in a while.
+ Added support for substituting the entire message during Sieve processing.
This is used for the filter action provided by the new sieve_extprograms
plugin (provided separately for now). The filter action allows passing the
message through an external program.
+ Added support for restricting certain Sieve language extensions to
(admin-controled) global scripts. Restricted extensions can be configured
using the new sieve_global_extensions setting. This is particularly useful
for some of the Dovecot-specific (plugin-based) Sieve extensions, that can
be somewhat hazardous when under direct control of users (e.g.
sieve_extprograms).
+ Sieve vacation extension: made discard message for implicit
delivery more verbose
- The sieve-test tool: mixed up original and final envelope recipient
in implementation of command line arguments.
- Sieve vacation extension: resolved FIXME regarding the use of
variables in the :handle argument. Variables are now handled
correctly.
- Sieve body extension: fixed handling of :content "message/rfc822".
This now yields the headers of the embedded message as required by
the specification. Handling of :content "multipart" remains to be
fixed.
- LDA Sieve plugin: fixed problem with recipient_delimiter
configuration. Now it falls back to global recipient_delimiter
setting if plugin/recipient_delimiter is not set.
Changelog:
+ Vacation extension: finally added support for using the original
recipient in vacation address check. It is also possible to disable
the recipient address check entirely. Check doc/vacation.txt for
configuration information.
+ Include extension: made limits on the include depth and the total
number of included scripts configurable. Check doc/include.txt for
configuration information.
+ Implemented ihave extension. This allows checking for the availability
of Sieve language extensions at 'runtime'. Actually, this is checked
at compile time. At runtime the interpreter checks whether extensions
that were not previously available are still unavailable. If the
situation changed, the script is re-compiled and the ihave tests are
evaluated again.
+ Sieve: optimized compilation of tests that yield constant results
(i.e. known at compile tme), such as 'true' and 'false'. No code is
produced anymore for script sections that are never executed. Also,
semantics are not verified anymore in uncompiled script sections.
+ Made vnd.dovecot.debug extension available to the LDA plugin instead
of only the command line tools.
+ Sieve: redirect action now adds X-Sieve-Redirected-From header
(mainly for people using SPF/SRS).
- Sieve: fixed bug in handling flags and keywords; in case of error an
assertion was triggered.
- Script storage: improved handling of unconfigured user home directory.
Originally this would produce an unhelpful error message.
- Imap4flags extension: prevent forcibly enabling imap4flags when
imapflags is enabled.
- Fixed various -Wunused-but-set-variable compiler warnings.
- Include extension: forgot to check variable identifier syntax for
'global' command.
- Sieve: fixed debug mode; no messages were logged in some situations.
- sievec tool: forgot to enable -D (debug) parameter.
* Sieve filter tool: finished implementing basic functionality. It is not
quite ready yet, but it is available for those willing to experiment
with it (needs --with-unfinished-features config to compile). Also
includes man page.
* Vacation extension now inhibits replies to messages from sender listed
in :addresses, thus preventing replies to one of the user's other known
addresses.
* Vacation extension: implemented the (draft) vacation-seconds extension.
This also adds min/max period configuration settings. Refer to
doc/vacation.txt for configuration information.
* ManageSieve: fixed bug in UTF-8 checking of string values. This is done
by discarding the original implementation and migrating to the Dovecot
API's UTF-8 functionality.
* Sieve command line tools now avoid initializing the mail store unless
necessary. This prevents sievec and sieve-dump from failing when
executed by root for example.
* Enotify extension: fixed inappropriate return type in mailto URI parse
function, also fixing ARM compiler warning.
* Vacation extension: fixed handling of sendmail errors. It produced an
additional confusing success message in case of error.
* Removed header MIME-decoding to fix erroneous address parsing. Applies to
address test and vacation command.
* Fixed segfault bug in extension configuration, triggered when unknown
extension is mentioned in sieve_extensions setting.
* LDA Sieve plugin: started using Dovecot LDA reject API for the
reject extension. This means that the LDA reject_reason and
reject_subject settings now also work for Pigeonhole's LDA Sieve
plugin.
* Did some work on the new sieve-filter tool. It is mostly
functional, but it is not finished yet.
* Dovecot change: services' default vsz_limits weren't being enforced
correctly in earlier v2.0 releases. Now that they are enforced, you
might notice that the default limits are too low and you need to
increase them. This problem will show up in logs as "out of memory"
errors. See default_vsz_limit and service { vsz_limit } settings.
- Imap4flags: fixed segfault bug occurring in multiscript context.
- Added version checking to the ManageSieve settings plugin. This
plugin was forgotten when the LDA plugin was updated with this
change in the previous release.
- LDA Sieve plugin: fixed memory leak at deinitialization.
It adds support for the Sieve language (RFC 5228) and the ManageSieve protocol
(RFC 5804) to the Dovecot Secure IMAP Server.
The Sieve language is used to specify how e-mail needs to be processed. By
writing Sieve scripts, users can customize how messages are delivered, e.g.
whether they are forwarded or stored in special folders. Unwanted messages can
be discarded or rejected, and, when the user is not available, the Sieve
interpreter can send an automated reply. Above all, the Sieve language is meant
to be simple, extensible and system independent. And, unlike most other mail
filtering script languages, it does not allow users to execute arbitrary
programs. This is particularly useful to prevent virtual users from having full
access to the mail store. The intention of the language is to make it impossible
for users to do anything more complex (and dangerous) than write simple mail
filters.
Using the ManageSieve protocol, users can upload their Sieve scripts remotely,
without needing direct filesystem access through FTP or SCP. Additionally,
aManageSieve server always makes sure that uploaded scripts are valid,
preventing compile failures at mail delivery.
This package provides Sieve support as a plugin to Dovecot's Local Delivery
Agent (LDA) and Dovecot's LMTP service. The ManageSieve protocol is provided is
an additional service, next to Dovecot's own POP3 and IMAP services.