You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@spamassassin.apache.org by bu...@bugzilla.spamassassin.org on 2004/02/06 16:46:11 UTC

[Bug 3017] New: Tweak for dccifd interface

http://bugzilla.spamassassin.org/show_bug.cgi?id=3017

           Summary: Tweak for dccifd interface
           Product: Spamassassin
           Version: 2.63
          Platform: All
        OS/Version: Linux
            Status: NEW
          Severity: normal
          Priority: P5
         Component: Tools
        AssignedTo: spamassassin-dev@incubator.apache.org
        ReportedBy: millebr@cat.com


I am currently running SpamAssassin 2.63 with MIMEDefang 2.39 and DCCifd 1.2.30 
on a Intel based Red Hat Linux 9 platform.

I was having problems with these two errors (one right after another)in my 
maillogs:

Jan 28 12:59:51 spambox dccifd[10919]: missing message body
Jan 28 12:59:51 spambox mimedefang-multiplexor: Slave 2 stderr: DCCifd -> check 
skipped: Illegal seek Died 
at /usr/lib/perl5/site_perl/5.8.0/Mail/SpamAssassin/Dns.pm line 639

After digging into the code for SpamAssassin, MIMEDefang, and DCCifd, I 
determined that it appeared that SpamAssassin was establishing a connection 
through the UNIX domain socket with DCCifd, even if the message it was 
establishing a connection for did not have a message body (nothing in $self->
{textarray} in the get_pristine sub in NoMailAudit.pm).  A way to reproduce 
this error on a box running those three programs together is to telnet to port 
25, put in your ehlo, mail from, rcpt to, and data, but then for data type 
nothing but the "." to end the message.

So, I altered lines 2561 - 2566 in EvalTests.pm to include a check for the 
message body.  I make a call to get_pristine_body(), and if that comes back 
blank then I skip the DCCifd check and log what I did.  This is the new code:

New EvalTests.pm, lines 2561 - 2571

  my $full = $self->{msg}->get_pristine();
  my $fullcheck = $self->{msg}->get_pristine_body();
  if ( $fullcheck ne "" ) {
    if ( $have_dccifd ) {
      return $self->dccifd_lookup (\$full);
    } else {
      return $self->dcc_lookup (\$full);
    }
  } else {
    warn ("DCCifd -> check skipped: no message body"); 
  }

This alteration seems to have corrected the errors that DCCifd was giving, and 
it avoids the "die" in Dns.pm.  Now, when I get a message with no body all I 
get is the "DCCifd -> check skipped: no message body" error in my logs (which 
is primarly just informational).

Would it be possible to include this fix in the next version of SpamAssassin?

If you have any questions or comments, or if I did this totally wrong  :) feel 
free to contact me at

millebr@cat.com

Thanks!

Billy Miller
Internet Email Administrator
Caterpillar, Inc.



------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.