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

Reply via email to