Hi list, We've been testing SpamAssassin 2.43 with Exim 4.10 and 4.12, using a slightly modified version of:
http://dman.ddts.net/~dman/config_docs/exim4_spamassassin.html When spamd is running; spamc returns a 0 exitcode, and the message is scanned and delivered. When spamd is not running, spamc (from "libspamc.c"), returns an EX_UNAVAILABLE exitcode (69), even though spamc would have safe-failed fine by outputting the unscanned message. The area of focus from our configuration is: ----8<---- Exim Config Snippet ----8<---- spamassassin_transport: driver = pipe command = /usr/local/sbin/exim/exim -oMr spam-scanned -bS use_bsmtp = true transport_filter = /usr/local/bin/spamc -u ${local_part} home_directory = "/tmp" current_directory = "/tmp" user = exim group = eximgrp log_output = true return_fail_output = true return_path_add = false message_prefix = message_suffix = headers_add = "X_Spam-Scanned: Yn1ghjJ5jy78gjk" headers_remove = X-Spam-Flag : X-Spam-Status : X-Spam-Level ----8<---- Exim Config Snippet ----8<---- Evidently, a non-0 exit code in a transport_filter means the filter failed utterly. In the "pipe" driver, it's too bad you can't set an "ignore_status" or "temp_errors" for a transport_filter. Those options only effect the "command" itself. So, spamc is causing Exim to freeze the message: ----8<---- Exim Debug Snippet ----8<---- waiting for filter process (Here, spamc tries to connect to spamd. It cannot.) filter process returned 69 waiting for writing process end of filtering transport writing: yield=0 errno=-24 more_errno=69 search_tidyup called spamassassin_transport transport returned PANIC for [EMAIL PROTECTED] post-process [EMAIL PROTECTED] (9) LOG: MAIN <[EMAIL PROTECTED]>: spamassassin_transport transport_output: An error was detected while processing a file of BSMTP input LOG: MAIN PANIC == [EMAIL PROTECTED] R=spamassassin_router T=spamassasin_transport defer (-24): Filter process failure ----8<---- Exim Debug Snippet ----8<---- We need it to be delivered, just unscanned, if spamd dies. This is the same problem brought up last month: http://www.exim.org/mailman/htdig/exim-users/Week-of-Mon-20021125/046735 .html One solution could be to modify "libspamc.c" to EX_OK if it can't connect to spamd. Since spamc has a safe-fail mechanism, shouldn't that be fine? Another solution might be to modify Exim to apply "temp_errors" to the transport_filter. Wouldn't that be best, for the same reasons "temp_errors" is used for the main pipe "command"? There's bound to be other solutions. Has someone already solved this? How do you keep your mail flowing, when spamd dies, besides bandaids like process checkers? Rich Sandberg [EMAIL PROTECTED] ------------------------------------------------------- This SF.NET email is sponsored by: Take your first step towards giving your online business a competitive advantage. Test-drive a Thawte SSL certificate - our easy online guide will show you how. Click here to get started: http://ads.sourceforge.net/cgi-bin/redirect.pl?thaw0027en _______________________________________________ Spamassassin-talk mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/spamassassin-talk