You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@spamassassin.apache.org by Geoff Soper <ge...@alphaworks.co.uk> on 2014/09/10 23:25:09 UTC

Program failure (69) of "spamc"

Hi,
I'm calling spamc (3.3.2) from procmail as suggested at 
https://wiki.apache.org/spamassassin/UsedViaProcmail

Having made a change to not use the lockfile (as suggsted in another 
thread) I'm now getting the following error in my procmail log:

procmail: Program failure (69) of "spamc"
procmail: Rescue of unfiltered data succeeded
 From ****************  Wed Sep 10 22:10:47 2014
  Subject: ********************************
   Folder: /var/qmail/mailnames/*************

This persists even after SA has been restarted and the procmailrc file 
restored to its original state.

Can anyone suggest what the issue may be?

Thanks,
Geoff

Re: Program failure (69) of "spamc"

Posted by Mark Martinec <Ma...@ijs.si>.
2014-09-10 23:25 Geoff Soper wrote:
> Hi,
> I'm calling spamc (3.3.2) from procmail as suggested at
> https://wiki.apache.org/spamassassin/UsedViaProcmail
> 
> Having made a change to not use the lockfile (as suggsted in another
> thread) I'm now getting the following error in my procmail log:
> 
> procmail: Program failure (69) of "spamc"
> procmail: Rescue of unfiltered data succeeded
> From ****************  Wed Sep 10 22:10:47 2014
>  Subject: ********************************
>   Folder: /var/qmail/mailnames/*************
> 
> This persists even after SA has been restarted and the procmailrc file
> restored to its original state.
> 
> Can anyone suggest what the issue may be?

According to spamc/libspamc.c the EX_UNAVAILABLE (code 69)
can be a result of any of the following conditions:

/*
  * translate_connect_errno()
  *
  *      Given a UNIX error number obtained (probably) from "connect(2)",
  *      translate this to a failure code. This module is shared by both
  *      transport modules - UNIX and TCP.
  *
  *      This should ONLY be called when there is an error.
  */
static int _translate_connect_errno(int err)
{
     switch (err) {

[...]

     case ECONNREFUSED:
     case ETIMEDOUT:
     case ENETUNREACH:
         return EX_UNAVAILABLE;



Mark