OK, so the problem is Dovecot master process isn't passing environment variables to child processes it creates. Well,
i added some code to env_put() to log all the environment variables passed to it.
void env_put(const char *env) { ...
printf("env_put()\n"); FILE *file; file = fopen("/tmp/dov.env", "a");
fprintf(file, "%s\n", env);
fclose(file);
}
after running "telnet localhost 143" there are these variables:
$ telnet.exe localhost 143 Trying 127.0.0.1... Connected to zoidberg. Escape character is '^]'. FBUG: PROCESS_UID environment not given env_put() env_put() env_put() env_put() env_put() env_put() env_put() Connection closed by foreign host.
Administrator@zoidberg ~/dovecot-1.0.9 $ cat /tmp/dov.env RESTRICT_USER= RESTRICT_CHROOT= RESTRICT_SETUID= RESTRICT_SETGID= RESTRICT_SETEXTRAGROUPS= RESTRICT_GID_FIRST= RESTRICT_GID_LAST=
So PROCESS_UID is never set using env_put() till the point where it is looked for!
Cheers Ronny