On Fri, 10 Nov 2000, The Hermit Hacker wrote:
> doing further investigation on this, and if I remove the sieve
> script (a simple redirect "remote user";), the error messages goes away
> and the message is delivered to the mailbox ...
>
> does that make any sense to anyone? I can't seem to find any
> other error messages anywhere ... but may not be looking where I should
> be?
Yep, that makes perfect sense, considering this error message is from
the open_sendmail function in lmtpd.c:414 (line numberss and code from
recent cvs, YMMV)
421 if ((p = fork()) == 0) {
422 /* i'm the child! run sendmail! */
423 close(fds[1]);
424 /* make the pipe be stdin */
425 dup2(fds[0], 0);
426 execv(SENDMAIL, (char **) argv);
427
428 /* if we're here we suck */
429 printf("451 deliver: didn't exec?!?\r\n");
430 fatal("couldn't exec", EC_OSERR);
431 }
So apparently we suck :-)
Do other sieve actions which generate some kind of mail (i.e.
forward, vacation, reject) work for you?
First guess is something's wrong with your path to sendmail.. try
setting "sendmail: /path/to/sendmail" in your imapd.conf or, even easier,
make a symlink from the real location of your sendmail binary to
/usr/lib/sendmail and see if that fixes the problem.
BTW (Ken, you listening? :-) I ran into a problem where Sieve was
generating empty responses to 'vacation' script triggers, which I tracked
down to some of these routines. lmtpd was coredumping on sending
a response because the sendmail command line built up in send_response()
is bogus, and the result code from open_sendmail (EX_SOFTWARE, iirc)
wasn't being handled properly.. fixing this exposed another problem
where (2nd hunk in the diff below) for some reason the 'm' struct
was null'ed out and the In-Reply-To caused a sigsegv. Yuk.
These diffs are cheesy, but at least my users can send vacations now.
On another run through the code just now I realized that send_forward
and send_rejection have the same problem. Next maint window, I guess.
Hope this helps
-=Eric
810,813c811,813
< smbuf[2] = "<>";
< smbuf[3] = "--";
< smbuf[4] = src->addr;
< smbuf[5] = NULL;
---
> smbuf[2] = "[EMAIL PROTECTED]";
> smbuf[3] = src->addr;
> smbuf[4] = NULL;
851c851
< fprintf(sm, "In-Reply-To: %s\r\n", m->id);
---
> /* fprintf(sm, "In-Reply-To: %s\r\n", m->id); */