Good morning,

I've been running Spamassassin since 2.43 and we are quite happy with it.
I just finished an upgrade from 2.55 to 2.60 and seemed to go well. I
upgraded two servers, boith configured identically, with same software,OS,
etc installed.

SPARC 20, Solaris 2.6
Spamassassin 2.60
qmail 1.03
Vpopmail 5.3.20
snprintf 2.2
Perl 5.6.1

Both boxes handle 400k to 500k messages a day total, scanning nearly 40% for
spam and have been handling the load quite well.

After the upgrade I noticed one box had the following errors show up in
the spamd log,

----------------------------------------------------------------
2003-11-24 09:49:21.652105500 Unsuccessful stat on filename containing
newline at /usr/local/bin/spamd line 1086, <GEN17934> line 2.
2003-11-24 09:49:21.666938500 Creating default_prefs [domain invalid
[EMAIL PROTECTED]
2003-11-24 09:49:21.666984500 Error: Illegal
username/.spamassassin/user_prefs]
2003-11-24 09:49:21.676890500 Use of uninitialized value in string ne at
/usr/local/lib/perl5/site_perl/5.6.1/Mail/SpamAssassin.pm line 1295,
<GEN17934> line 2.
2003-11-24 09:49:21.678123500 Use of uninitialized value in concatenation
(.) or string at /usr/local/lib/perl5/site_perl/5.6.1/Mail/SpamAssassin.pm
line 1296, <GEN17934> line 2.
2003-11-24 09:49:21.679526500 Oops! user_dirs don't match! 'domain invalid
[EMAIL PROTECTED]
2003-11-24 09:49:21.679560500 Error: Illegal username' vs ''
2003-11-24 09:49:21.681029500 Unsuccessful stat on filename containing
newline at /usr/local/lib/perl5/site_perl/5.6.1/Mail/SpamAssassin.pm line
1299, <GEN17934> line 2.
2003-11-24 09:49:21.716999500 security: cannot untaint path: "domain
invalid [EMAIL PROTECTED]
2003-11-24 09:49:21.717057500 Error: Illegal
username/.spamassassin/user_prefs"
2003-11-24 09:49:21.718737500 Insecure dependency in open while running
with -T switch at
/usr/local/lib/perl5/site_perl/5.6.1/Mail/SpamAssassin.pm line 1310,
<GEN17934> line 2.
-----------------------------------------------------------------

Looking at SpamAssassin.pm it would appear that SpamAssassin is not
getting the username when the message is being passed off by spamc to
spamd and the errors are all a result of that issue.

I am passing the message to spamd with the following script in a
.qmail-<user> file. It is a modified version of ifspamh.sh and has worked
very well since 2.43.

------------------------------------------------------------------
#!/bin/sh
# spamc - client location
SPAMC=/usr/local/bin/spamc
# qmail's forward program location
INJECT=/var/qmail/bin/qmail-inject
# mess822 822field location
M822FIELD=/usr/local/bin/822field

SPAMBOX="$1"
DELIVER="$2"
SENDER="[EMAIL PROTECTED]"

# we used to skip 'From ' - the 1st line that got added by spamd/spamc
# but it seems newer versions don't add it (and SA 2.50 adds a 3 line 
# Received header)
output="`$SPAMC -f -d 127.0.0.1 -u $DELIVER| sed '1{/^From .*/d;}'`"
exitcode=$?

# spamc will not process a "large email"
msize=`echo "$output" | wc -c`
# there's also a sizelimit with some shells that triggers around the 512kB mark
# with an external printf and arguments size so we stop at this point
if [ $msize -gt 250000 ]; then
  # probably deemed too large anyway .. let it through
  exit 0
fi

flagvalue=`echo "$output" | $M822FIELD X-Spam-Flag | sed 's/^ //'`
# X-Spam-Flag might contain "YES"

if [ "$flagvalue" = "YES" ]; then
  # match - likely spam
  # no match - not a spam
  # forward on the email
  echo "$output" | $INJECT -a -f "$SENDER" $SPAMBOX
  if [ $? -eq 0 ]; then
    # so qmail will not do any further deliveries in .qmail file
    exit 99
  fi
  # problem calling inject - temp failure
  exit 111
else
  # spamc doesn't distinguish temporary failure 
  # if we're passing through the message
  # so look for signs that spamd provided the output..
  flag2value=`echo "$output" | $M822FIELD X-Spam-Status`
  exitcode2=$?
  if [ $exitcode2 -ne 0 ]; then
    # X-Spam-Status header not present in message -> failure of spamc/spamd?
    # spamc will not process a "large email", but this is accounted for above
    # so indicate temporary failure
    echo "spamc returned temporary failure"
    exit 111
  fi

  # indicate that qmail should continue processing dot-qmail file
  exit 0
fi
----------------------------------------------------------
spamd is launched with the following run file from daemontools.

----------------------------------------------------------
#!/sbin/sh

PATH=$PATH:/usr/bin:/usr/local/bin

exec /usr/local/bin/softlimit -a 20000000 \
        /usr/local/bin/spamd -c -v -u vpopmail -s stderr -L 2>&1
        
------------------------------------------------------------

I suspected at first that I had a .qmail-<user> file calling spamc without
the $DELIVER arg, hence no user value. I checked and every .qmail-<user>
file has a valid entry in vpasswd. They do, I have no orphaned .qmail
files.

I am at a loss to find a cause, any thoughts?

DAve



-- 
Dave Goodrich
(812)378-4100
http://www.tls.net
I can save you money on Long Distance...Ask me how!




-------------------------------------------------------
This SF.net email is sponsored by: SF.net Giveback Program.
Does SourceForge.net help you be more productive?  Does it
help you create better code?  SHARE THE LOVE, and help us help
YOU!  Click Here: http://sourceforge.net/donate/
_______________________________________________
Spamassassin-talk mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/spamassassin-talk

Reply via email to