[Dovecot] Dovecot Deliver?

Jakob Hirsch jh at plonk.de
Wed Aug 17 23:59:15 EEST 2005

Timo Sirainen wrote:

>>have a "socket listen { master ... client }" part? 
> Only the master socket.
> Inside auth default.

Thanks. I see this is now in the wiki (or was before and I overlooked it).

As I understand, Sieve is only in CVS, right? I want to use it, but it
failed to build:

# ./autogen.sh
configure.in: installing `./install-sh'
configure.in: installing `./missing'
src/Makefile.am: installing `./depcomp'
src/libsieve/Makefile.am:3: `CFLAGS' is a user variable, you should not
override it;
src/libsieve/Makefile.am:3: use `AM_CFLAGS' instead.
Makefile.am: installing `./INSTALL'
configure.in:4: required file `lda-config.h.in' not found

Running it again looks better:

# ./autogen.sh
src/libsieve/Makefile.am:3: `CFLAGS' is a user variable, you should not
override it;
src/libsieve/Makefile.am:3: use `AM_CFLAGS' instead.

# ./configure --with-dovecot=../dovecot
(../dovecot is dovecot-1.0-test80)

but the make fails:

gcc -std=gnu99 -g -O2 -Wall -W -Wmissing-prototypes
-Wmissing-declarations -Wpointer-arith -Wchar-subscripts -Wformat=2
-Wbad-function-cast -I/usr/kerberos/include -o deliver deliver.o
duplicate.o imparse.o mail-send.o map.o sieve-cmu.o smtpclient.o
-Wl,--export-dynamic  libsieve/libsieve.a
/root/sw/dovecot/lda/dovecot/src/lib/liblib.a -ldl
deliver.o(.text+0xa60): In function `main':
/root/sw/dovecot/lda/dovecot-lda/src/deliver.c:364: undefined reference
to `mbox_from_create'
collect2: ld returned 1 exit status
make[3]: *** [deliver] Error 1
make[3]: Leaving directory `/root/sw/dovecot/lda/dovecot-lda/src'
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory `/root/sw/dovecot/lda/dovecot-lda/src'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/root/sw/dovecot/lda/dovecot-lda'
make: *** [all] Error 2

seems that the lda doesn't like "--with-storages=maildir" on the
configure of dovecot itself (I use no mbox), after running dovecot's
configure and make without this made me a working deliver binary with sieve.

>>dovecot-auth is running chrooted, will this interfere with the
>>master/client concept, so I have to change the socket path to be in the
>>chrooted directory?
> The socket is created before chrooting (I'm pretty sure anyway :)

Seems you are right. :)

Only one little problem arised:
deliver wants to use /var/run/dovecot/auth-master as a default, but
/var/run/dovecot is owned by root with 0700 permissions (set by dovecot
at startup). but deliver never runs as root, so this fails. No big
thing, I changed the path (-a /another/path), but the default makes
little sense, then.
Is there an option to set the path in dovecot-deliver.conf?

>>deliver (after strip) is about double the size of maildrop. AFAIK, Cyrus
>>uses LMTP for delivery, which does not have this downside.
> That works only as long as all (or "most", with more code) users use the
> same system UIDs. 

Isn't that depending on how it's done? If implemented as an additional
protocol handled directly by dovecot, it should work.
Anyway, I configured every virtual setup with only one UID.

> LMTP server is in my TODO list, but not before v1.0..

That's fine with me.

> Anyway I think the benefit of having the mail immediately indexed is
> overall greater than a bit of forking/initialization overhead.

I'll trust you on this. :)

More information about the dovecot mailing list