doing some more research on it, the error appears to be in read_response:

May 10 10:46:02 alumni lmtpd[87552]: read_response: header sscanf failed, buf: Spam: 
True ; 9.0 / 5.0^M

where its trying to do a sscanf of:

    if (sscanf (buf, "Spam: %5s ; %d / %d", is_spam, &score, &threshold) != 3) {
        syslog (LOG_ERR, "read_response: header sscanf failed, buf: %s",
                buf);
        return SIEVE_FAIL;
    }

The following patch appears to correct the problem:

*** lmtpd.c.o   Fri May 10 10:54:08 2002
--- lmtpd.c     Fri May 10 10:52:58 2002
***************
*** 981,988 ****
      int major;
      int minor;
      int response;
!     int score;
!     int threshold;

      if (! getline (s, buf, sizeof (buf))) {
        syslog (LOG_ERR, "read_response: response getline failed");
--- 981,988 ----
      int major;
      int minor;
      int response;
!     float score;
!     float threshold;

      if (! getline (s, buf, sizeof (buf))) {
        syslog (LOG_ERR, "read_response: response getline failed");
***************
*** 1002,1008 ****
        syslog (LOG_ERR, "read_response: header getline failed");
        return SIEVE_FAIL;
      }
!     if (sscanf (buf, "Spam: %5s ; %d / %d", is_spam, &score, &threshold) != 3) {
        syslog (LOG_ERR, "read_response: header sscanf failed, buf: %s",
                buf);
        return SIEVE_FAIL;
--- 1002,1008 ----
        syslog (LOG_ERR, "read_response: header getline failed");
        return SIEVE_FAIL;
      }
!     if (sscanf (buf, "Spam: %5s ; %f / %f", is_spam, &score, &threshold) != 3) {
        syslog (LOG_ERR, "read_response: header sscanf failed, buf: %s",
                buf);
        return SIEVE_FAIL;


On Fri, 10 May 2002, Marc G. Fournier wrote:

>
> Morning all ...
>
>       In case anyone else is thinking of using this, or has ...
>
>       The patch applies cleanly to the v2.0.16 sources using 'patch' ...
> I manually walked the patch after applying it, just to make sure, and it
> looks fine ... configure, build and install all work great, and things are
> running.
>
>       After making a default sieve file of simply:
>
> require [ "spam", "fileinto" ];
> if spam  {
>       fileinto "inbox.spam";
> }
>
>       Causes spam filtering to run no problem, as displayed in the log
> files:
>
> May 10 10:00:18 alumni sendmail[76825]: g4AD0Iu76825: from=<[EMAIL PROTECTED]>, 
>size=735, class=0, nrcpts=1, msgid=<[EMAIL PROTECTED]>, 
>proto=ESMTP, daemon=MTA, relay=garlic.acadiau.ca [131.162.138.193]
> May 10 10:00:18 alumni spamd[74495]: connection from alumni.acadiau.ca [ 
>131.162.201.19 ] at port 4465
> May 10 10:00:20 alumni spamd[76837]: clean message (0.0/5.0) for marc:1000 in   2 
>seconds.
> May 10 10:00:21 alumni sendmail[76836]: g4AD0Iu76825: to=<[EMAIL PROTECTED]>, 
>delay=00:00:03, xdelay=00:00:03, mailer=cyrus, pri=30735, relay=localhost, dsn=2.0.0, 
>stat=Sent
>
>       As does sending a known spam message:
>
> May 10 09:59:46 alumni sendmail[76456]: g4ACxku76456: from=<[EMAIL PROTECTED]>, 
>size=2081, class=0, nrcpts=1, msgid=<[EMAIL PROTECTED]>, 
>bodytype=7BIT, proto=ESMTP, daemon=MTA, relay=garlic.acadiau.ca [131.162.138.193]
> May 10 09:59:46 alumni spamd[74495]: connection from alumni.acadiau.ca [ 
>131.162.201.19 ] at port 4462
> May 10 09:59:49 alumni spamd[76459]: identified spam (5.4/5.0) for marc:1000 in   3 
>seconds.
> May 10 09:59:49 alumni sendmail[76458]: g4ACxku76456: to=<[EMAIL PROTECTED]>, 
>delay=00:00:03, xdelay=00:00:03, mailer=cyrus, pri=32081, relay=localhost, dsn=2.0.0, 
>stat=Sent
>
>       But ... it isn't filtering it to 'inbox.spam' ... I've tried just
> using the 'fileinto "inbox.spam";' without the spam stuff, and the
> sub-folder is working fine ... its as if the 'if spam' isn't returning
> true where spamd is ...
>
>       I'm running spamd simply as:
>
> spamd -A <IP> -d
>
>       Has anyone else tried to use it with other then 2.1.3 and had
> success?  Is there something obviously wrong with my sieve script that I'm
> not seeing?
>
> Thanks ...
>
>

Reply via email to