Justin McAleer
2007-Apr-19 14:25 UTC
[Dovecot] deliver failing to execute sendmail (sieve)
I have apparently done something to mess up my test installation, as deliver's attempts to send messages now fail with the following error: deliver(user at example.com): execv() failed: No such file or directory In these cases, I have sieve rules trying to send messages. It had been working though, and I've tried going through all the changes I made yesterday (related to dictionary quota debugging) to find what could be wrong, but no luck so far. So, I was hoping for suggestions. Basically, deliver seems to not know where sendmail is. I have sendmail_path set in dovecot.conf (never changed that), yet when deliver tries to pull the location via deliver_set->sendmail_path, it's just returning an empty string. If I hard-code the location in smtp-client.c, it works again. Any ideas?
Justin McAleer wrote:> I have apparently done something to mess up my test installation, as > deliver's attempts to send messages now fail with the following error: > > deliver(user at example.com): execv() failed: No such file or directoryAre you useing mail_chroot ? If so, you don't have sendmail binary in chroot... Actually LDA sieve don't work as expected if mail_chroot is set. Uldis
Justin McAleer
2007-Apr-19 20:13 UTC
[Dovecot] deliver failing to execute sendmail (sieve)
Justin McAleer wrote:> I have apparently done something to mess up my test installation, as > deliver's attempts to send messages now fail with the following error: > > deliver(user at example.com): execv() failed: No such file or directory > > In these cases, I have sieve rules trying to send messages. It had > been working though, and I've tried going through all the changes I > made yesterday (related to dictionary quota debugging) to find what > could be wrong, but no luck so far. So, I was hoping for suggestions. > > Basically, deliver seems to not know where sendmail is. I have > sendmail_path set in dovecot.conf (never changed that), yet when > deliver tries to pull the location via deliver_set->sendmail_path, > it's just returning an empty string. If I hard-code the location in > smtp-client.c, it works again. > > Any ideas? >Sigh, well I finally found the problem. Ironically, this was caused by mail_debug being enabled. In smtp-client.c, with mail_debug enabled, smtp_env_clean() is called to prevent conflicts with postfix's debug setting. That results in the deliver_set structure getting wiped out, so deliver forgets where sendmail is (deliver_set->sendmail_path), effectively. Sorry for not supplying a fix, but I've already spent the better part of my day tracking this down... It does seem to be trying to preserve all the proper env variables, just not putting them back into the env.