On Thu 08/Jan/2015 23:51:56 +0100 Jeff Potter wrote:
> 4. After start, pythonfilter is not started — 'filterctl start pythonfilter' 
> fails to bring it up with this:
>       filterctl start pythonfilter
>       ln: creating symbolic link `/etc/courier/filters/active/pythonfilter' 
> to `/usr/lib/courier/libexec/filters/pythonfilter': File exists

filterctl is used once to install a filter.  Thereafter, it can be used again
to uninstall it.  You need to stop it before you can start it again.  The
difference vs. courierfilter is that the latter makes Courier bounce messages
with "432 Mail filters temporarily unavailable."

On Fri 09/Jan/2015 01:25:16 +0100 Sam Varshavchik wrote: 
> You're not really missing anything. It's really the filter's responsibility to
> wind down its business, once it gets the signal to do so.

For my part, I just fixed a race condition bug.  It was the opposite of what
Jeff complains; that is, sometimes the filter terminated without being asked
to, thus forcing Courier into 432-mode.

http://www.tana.it/sw/avfilter/
http://www.tana.it/sw/zdkimfilter/

> Currently, the shutdown code just gives up, after a timeout, in this manner. I
> do agree that an attempt should be made to kill all processes, after a
> reasonable timeout, so it's something that I need to look at.

To kill by pid is going to be difficult for forked filters.  I issue a call
kill(0, SIGTERM) when the pipe is closed, but I had previously called setsid().
SIGTERM (15) should suffice to quickly exit; SIGKILL (9) is what I'd call
"overkill".  It seems several users issue `killall -9 ...`.  It shouldn't be
needed, and I'd expect some kind of bug report if runaway children refuse to
exit, please.

I suggest to amend courierfilter's man page, where it says:

   All mail filters also inherit a pipe on standard input, and must terminate
   when the pipe is closed.  Mail filters must simultaneously listen for new
   connections on the mail filter socket, and for their standard input to
   close.

It could say something more pressing, for example like so:

   All mail filters also inherit a pipe on standard input, and must terminate
   when the pipe is closed, possibly aborting the current message  --Courier
   will issue a temporary 4xx bounce in that case.  Mail filters must
   simultaneously listen for new connections on the mail filter socket, and
   for their standard input to close.

Ale
-- 



































------------------------------------------------------------------------------
Dive into the World of Parallel Programming! The Go Parallel Website,
sponsored by Intel and developed in partnership with Slashdot Media, is your
hub for all things parallel software development, from weekly thought
leadership blogs to news, videos, case studies, tutorials and more. Take a
look and join the conversation now. http://goparallel.sourceforge.net
_______________________________________________
courier-users mailing list
courier-users@lists.sourceforge.net
Unsubscribe: https://lists.sourceforge.net/lists/listinfo/courier-users

Reply via email to