On 3/6/2014 5:19 PM, Dennis Kuhn wrote:
i have a problem with sieve and lmtp_save_to_detail_mailbox = yes. If the mailbox "detail" exists everything works fine, but if the mailbox detail does not exist then sieve does not work. The .dovecot.sieve.log file says
sieve: info: started log at Mar 06 14:28:47. error: msgid=531877EE.7070806@heinlein-support.de: failed to store into mailbox 'test2': Mailbox doesn't exist: test2.
I think this is the reason why no sieve script is executed, but why is sieve here involved? Is there any relation between lmtp_save_to_detail_mailbox=yes and sieve or is this a bug?
The same sieve file works with the same mailaddress without mailextension, so the sieve script is not the reason for the failure.
That setting changes the default `keep;' mailbox from INBOX to whatever the detail is. You can set lda_mailbox_autocreate=yes to make sure that the detail folder exists.
If you don't want to create this folder implicitly, you have a bit of an
issue. The use of the detail as the default keep mailbox has existed
since the old CMUSieve plugin and I didn't bother to change this. There
is currently no way to prevent this behavior, other than using fileinto "INBOX";' explicitly rather than
keep;'. You can check for the presence
of a detail in the message using the subaddress extension
(http://tools.ietf.org/html/rfc5233) and then do whatever is needed to
prevent this error; i.e. not execute (implicit) keep.
Better yet: you can also turn off this setting and let Sieve do everything. This way, you can define a default script that recognizes the detail and stores the mail in the corresponding folder if it exists. An example is here: http://wiki2.dovecot.org/Pigeonhole/Sieve/Examples#Plus_Addressed_mail_filte... . Use the sieve_default setting to configure a default script which is executed when the user has no active Sieve script. Alternatively, if you always want a certain action for a detail'ed message, you can force it using a sieve_before script.
Of course, it all depends a bit on what you're trying to achieve.
Regards,
Stephan.