[kwlug-disc] how to convince exim/valiases never to whine about non-delivery?

Robert P. J. Day rpjday at crashcourse.ca
Tue May 4 12:44:37 EDT 2010


    as a followup to a once-upon-a-time post of mine, i finally  
figured out how to have exim use valiases to redirect incoming mail  
simultaneously to more than one PHP script thusly:

/etc/valiases/<domain>:
   *: "| .../dup_out.sh scr1.php scr2.php"

where dup_out.sh contains simply:

   tee >(php -q $1) >(php -q $2) > /dev/null 2>&1
   exit 0

but here's a new wrinkle.  *apparently*, if the programs being piped  
into generate any output whatsoever, exim interprets this as a  
delivery error and reacts accordingly by returning a non-delivery  
diagnostic.  grrrrrrr.  and it doesn't even have to be an error  
message -- i added

   echo "hello world.\n";

to one of the scripts and, voila, non-delivery error message.

   that redirection on the end didn't help -- after random  
experimenting, i finally came up with this:

   (tee >(php -q $1) >(php -q $2)) > /dev/null 2>&1
   exit 0

in short, run the entire thing in a subshell and throw away all  
possible output, and that seems to have done the trick.  but, geez,  
that's hacky.   and i'm not sure of the performance impact in starting  
a subshell for every incoming message.

   but is there a better way to do this?  once exim redirects the  
incoming message through the pipe, i don't care what happens in those  
programs -- error codes, output, anything.  is there an exim option to  
specify that?  the above hack will work, but i have to believe there's  
a nicer way.

rday






More information about the kwlug-disc mailing list