On Sun, 9 Dec 2007, Timo Sirainen wrote:
On Sun, 2007-12-09 at 13:48 -0500, Benjamin R. Haskell wrote:
vmu1@test:~$ echo "quit" | /usr/lib/dovecot/pop3 pop3(vmu1): Fatal: pop3_uidl_format setting is missing from config file
I have pop3_uidl_format correctly defined in the config file. I've also tried to strace pop3, to find where it does look for it, but with no success.
It gets it from environment:
POP3_UIDL_FORMAT=... pop3
In general all settings are passed in environment using uppercased names.
In other words, you (Maciej) probably don't want to run 'pop3' directly. I suspect you'd rather do:
/path/to/dovecot --exec-mail pop3
This will set up the environment for the 'pop3' executable the same way dovecot normally does it.
Yes, I was going to mention that but I wasn't sure how well it'd work when you want to run it for multiple users. At least you can't then override MAIL environment directly, but rather you need to override USER and/or HOME.
Maybe it'd be easiest with 'su'? Something along the lines of:
su username -l -c /path/to/dovecot --exec-mail pop3
(Though this doesn't seem to be working for me. I've reïnstalled dovecot too many times. Something's up with permissions.)
Another way that might be relatively easy:
Set up, in dovecot.conf:
protocol pop3 { # in this section mail_executable = /path/to/envscript.sh
And, in /path/to/envscript.sh:
#!/bin/sh env > /path/to/saved-environment exec /path/to/pop3
That'll give you all the environment variables dovecot would normally set up. Then you could filter out the user-specific ones to set up manually, and use e.g. envdir (from DJB's daemontools) to handle the common ones:
$ mkdir common-env $ perl -F= -lanwe 'my $var = shift; open my $f, ">common-env/$var" or die ">$var: $!"; print $f join "=", @F' /path/to/saved-environment
Then:
env USER=blah HOME=blah MAIL=blah envdir /path/to/common-env /usr/libexec/dovecot/pop3
Best, Ben