[Dovecot] Segfault in managesieve with "sieve_extensions = -redirect"

Stephan Bosch stephan at rename-it.nl
Wed Mar 2 19:21:11 EET 2011


Op 2-3-2011 15:15, Sven Hartge schreef:
> Hi!
>
> I've got a segfault in managesieve while using:
> sieve_extensions = -vacation -reject -spamtest -virustest -enotify -redirect
>
> The problem seems to lie in "-redirect".

The redirect command is part of the Sieve core specification and it is 
thus no extension. It's availability can therefore not be disabled using 
the sieve_extensions setting.

When I wouldn't have made a bug here, you would have been warned with 
the following message:

"ignored unknown extension 'redirect' while configuring available 
extensions"

Instead, you got a segfault, which is now fixed:

http://hg.rename-it.nl/dovecot-2.0-pigeonhole/rev/bb26cdb18bdf

> Reason for excluding "redirect" from sieve is my users should not use
> sieve to forward or redirect mails but use an external method
> (web-script to set LDAP attribute) which checks several things like
> active spam-checker, existing target mailbox, etc.
>
> The version ov dovecot ist 1:2.0.9-1~3.gbp785ad1~dvz60+1 on Debian
> Squeeze which is from the Debian maintainers git repository recompiled
> on Squeeze (I know, pretty wild.)

Hmm, considering what Sieve RFC 5228 says:

"Implementations MAY ignore a redirect action silently due to policy 
reasons. For example, an implementation MAY choose not to redirect to an 
address that is known to be undeliverable. Any ignored redirect MUST NOT 
cancel the implicit keep." (page 24)

"(2) MUST provide the means for administrators to limit the ability of 
users to abuse redirect. In particular, it MUST be possible to limit the 
number of redirects a script can perform.  Additionally, if no use cases 
exist for using redirect to multiple destinations, this limit SHOULD be 
set to 1. Additional limits, such as the ability to restrict redirect to 
local users, MAY also be implemented." (page 38)

"Allowing redirects at all may not be appropriate in situations where 
email accounts are freely available and/or not trackable to a human who 
can be held accountable for creating message bombs or other abuse." 
(page 39)

Unfortunately, we currently don't have a means to actually disable 
redirect. The number of redirects can be limited using the existing 
sieve_max_redirects option, but a value of 0 stands for 'unlimited', 
meaning that 1 is the minimum.  In hindsight, this was a really bad 
choice :)

So we have two options:
     - Change the meaning of 0 for sieve_max_redirects. It's quite 
likely no one has set this to 0.
     - Add a separate setting to disable redirect, e.g. 
sieve_redirect_disable.

Not sure what to choose yet.

Regards,

Stephan.


More information about the dovecot mailing list