[Dovecot] Dict client unescaping sieve script

Joshua Perry josh at 6bit.com
Fri Nov 22 19:41:13 EET 2013


On Nov 22, 2013, at 10:03 AM, Stephan Bosch <stephan at rename-it.nl> wrote:

> On 11/9/2013 12:32 AM, Joshua Perry wrote:
>> I've created a dict service that listens on a unix socket and answers
>> queries for sieve scripts (among other things).
>> 
>> As I understand it (from the source code at
>> http://hg.dovecot.org/dovecot-2.2/file/tip/src/lib-dict/dict-client.c), the
>> dict client will unescape \001n, \001t, and \0011 to line feeds, tabs,
>> and the \001 character respectively.
>> 
>> In my service I am escaping those three characters in my response (if
>> I don't escape them the line-oriented nature of the protocol causes a
>> failure for multiline sieve scripts) but every time LDA attempts to
>> process a sieve script I get an error in the logs (see below) showing
>> sieve choking on \001 characters.
>> 
>> Is there some configuration value I've missed or something?
>> 
>> *dovecot log*
>> Nov  8 23:04:54 www dovecot: lmtp(29940, josh at redacted.com):
>> pxg7JxZufVL0dAAAPhZyyg: sieve: failed to compile script
>> dict:proxy:/var/run/dovecot-auth.sock:sieve;name=main script (view
>> user logfile /var/mail/vhosts/redacted.com/josh/.dovecot.sieve.log for
>> more information)
>> 
>> *.dovecot.sieve.log*
>> sieve: info: started log at Nov 08 16:14:38.
>> main script: line 1: error: unexpected character(s) starting with 0x01.
>> main script: line 1: error: unexpected unknown characters found at
>> (the presumed) end of file.
>> main script: error: parse failed.
> 
> This is likely a problem in Dovecot somewhere. We haven't had time to
> look at it so far. I'll get back on this later.
> 
> Regards,
> 
> Stephan.
> 

Hey Stephen,

Thank you for responding, I didn't update the list because I kind of figured from the non-reponse that no-one had any ideas. I actually found the problem and it was a stupid mistake on my part, I was escaping tab and carriage return and _THEN_ escaping \001... Ooops.

Love Dovecot, hoping to spend more time with it in the near future, I've been playing with making a one-stop repo of all virtual-hosted data for Postfix, Prosody, Dovecot, Seive, etc.  I know LDAP is meant for stuff like that, but I don't like LDAP.

Josh


More information about the dovecot mailing list