this is what I'm doing ... and working prety fine..

I agree with Mr Adam.

-- 

Best Regs,
Masood Ahmad Shah
System Administrator

^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^
|   * * * * * * * * * * * * * * * * * * * * * * * *
|   Fibre Net (Pvt) Ltd. Lahore, Pakistan
|   Tel: +92-42-6677024
|   Mobile: +92-300-4277367
|   http://www.fibre.net.pk
|   * * * * * * * * * * * * * * * * * * * * * * * *
^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^
Unix is very simple, but it takes a genius to understand the simplicity.
(Dennis Ritchie)

----- Original Message ----- 
From: "Adam Hooper" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Tuesday, August 12, 2003 10:43 PM
Subject: Re: [vchkpw] vpopmail+spamassassin+clamscan


| Another method (for different needs, of course): On our site, we just
| put qmail-scanner in the qmail queue. All that needs to be done ("all?"
| I spent hours on this :P) is apply the QMAILQUEUE patch to qmail, and
| install qmail-scanner by following its instructions:
| http://qmail-scanner.sourceforge.net/
|
| qmail-scanner works with spamassassin and clamscan and can do primitive
| attachment checks (i.e., "block all .exe/.bat/.vbs attachments"). The
| way we have it set up, it just puts an 'X-Spam-Status: Yes/No' in the
| message's header, and users can set their mail clients to use rules
| based on that.
|
| The downside: If you're running a very large site and only expect a few
| people to use the virus-scanning abilities of spamassassin, you're going
| to be burning lots of processor cycles. Our site is relatively small and
| we need qmail-scanner anyway to block "dangerous" attachments, so the
| waste of CPU isn't an issue for us.
|
| -- 
| Adam Hooper
| [EMAIL PROTECTED]
|
| Tom Walsh wrote:
|
| > There was some discussion a while back about making SA work with
vpopmail.
| >
| > Most solutions I saw used .qmail-username or .qmail-default which wasn't
the
| > right method for us. Below is a quick write up on how to use SA+clamscan
| > from a .qmail file in the users maildir. We also pull user preferences
for
| > SA from SQL, so the line we use to call SA might not be what you want.
| > Delivery and hand off for scanning is handled by maildrop.
| >
| > First and foremost, make certain that the user vpopmail has a valid
shell...
| > this is very important as vdeliermail will run anything in the .qmail as
the
| > user vpopmail, provided the application doesn't do a setuid/setgid,
which
| > maildrop does not do. (That alone cost me 3 hours to troubleshoot.)
| >
| > For each user you want to enable SA and virus scanning put the following
in
| > a .qmail file in the users directory:
| >
| > | /var/qmail/bin/preline /usr/local/bin/maildrop
| > /usr/home/vpopmail/domains/.mailfilter
| >
| > Make sure that this file has been chmod'ed to 600 (u+rw) and is owned by
| > vpopmail:vchkpw otherwise it will not be run.
| >
| > The .mailfilter listed above contains (some of this script has come from
| > another list member, but I forgot his name, if you contact me I will
give
| > credit where credit is due), it must also be chmod'ed to 600 with owner
| > vpopmail:vchkpw :
| >
| > import EXT
| > import HOST
| > VHOME=`/usr/home/vpopmail/bin/vuserinfo -d [EMAIL PROTECTED]
| >
| > # Check for Spam if it is smaller than 250KB
| > if($SIZE < 262144)
| > {
| >         xfilter "/usr/local/bin/spamc -d 192.168.1.2 -t 20 -f -u
[EMAIL PROTECTED]"
| > }
| > if ((/^X-Spam-Flag:.*YES/))
| > {
| >         `/bin/test -d $VHOME/Maildir/.Spam`
| >         if( $RETURNCODE == 1 )
| >         {
| >                 `/var/qmail/bin/maildirmake $VHOME/Maildir/.Spam;
| > /usr/sbin/chown -R vpopmail:vchkpw $VHOME/Maildir/.Spam`
| >         }
| >         to "$VHOME/Maildir/.Spam/"
| > }
| >
| > # If it isn't Spam, then we scan for Virus if it is smaller than 2MB in
| > size... anything larger... they are on their own
| > if($SIZE < 2000000)
| > {
| >         xfilter "/usr/home/vpopmail/domains/clamscan.sh"
| > }
| > if ((/^X-Virus-Status:.*INFECTED/))
| > {
| >         `/bin/test -d $VHOME/Maildir/.Virus`
| >         if ( $RETUNRCODE == 1 )
| >         {
| >                 `/var/qmail/bin/maildirmake $VHOME/Maildir/.Virus;
| > /usr/sbin/chown -R vpopmail:vchkpw $VHOME/Maildir/.Virus`
| >         }
| >         to "$VHOME/Maildir/.Virus/"
| > }
| >
| > #If it isn't Spam or Virus, then deliver normally
| > to "$VHOME/Maildir/"
| >
| > The specific lines of interest are the xfilter lines. We use spamc/spamd
to
| > offload the very CPU intensive process of spam scanning to another
machine
| > on the private network. That is what the -d directive is for which tells
SA
| > which IP to connect to for spamd...
| >
| > The clamscan.sh file is a wrapper for the clamscan binary. We need to do
| > this because of the incompatibility between how clamscan operates and
how
| > maildrop expects an xfilter program to operate. maildrop expects any
message
| > it sends out to an xfilter program to be returned to it via stdout. The
| > problem is that the clamscan binary only returns the results of the
scan,
| > not the message, so we have to create a shell script to pass the altered
| > message back to maildrop via stdout, also we use the shell script to
alter
| > the exit code of clamscan (0 if clean and 1 if infected) to be
compatible
| > with what maildrop expects. maildrop expects the application to return a
| > exit code of 0, so we have to alter it.
| >
| > You will need bash in order to use this.
| >
| > #!/usr/local/bin/bash
| > # Created by Tom Walsh
| > # slim at ala.net
| >
| > MSG=$(/bin/cat /dev/stdin) # Is there a better way to do this?
| > SCAN=$(echo "$MSG" |
/usr/local/bin/clamscan - --stdout --disable-summary)
| > EXIT="$?"
| > VIRUS=$(echo "$SCAN" | awk '{print $2}')
| > SUBJECT=$(echo "$MSG" | /usr/local/bin/reformail -x Subject:)
| >
| > if [ "$EXIT" == "1" ]; then
| >  SUBJECT="**VIRUS** [$VIRUS] $SUBJECT"
| >  MSG=$(echo "$MSG" | /usr/local/bin/reformail -a"X-Virus-Status:
| > INFECTED" -i"Subject: $(echo "$SUBJECT")")
| > else
| >  MSG=$(echo "$MSG" | /usr/local/bin/reformail -a"X-Virus-Status: CLEAN")
| > fi
| >
| > echo "$MSG"
| >
| > exit 0
| >
| > And just for completeness... I have included our spamd config line to
let
| > you know how to pull settings from SQL:
| >
| > /usr/local/bin/spamd -a -d -q -x -m 50 -u spamd -i 192.168.1.2 -A
| > 192.168.1.100 -A 192.168.1.101
| >
| > The -i directive tells spamd to listen on IP 192.168.1.2, by default it
only
| > listens on 127.0.0.1
| > The -A directives tell spamd which IPs to accept connections from.
| >
| > You also need to odify your local.cf file to include the settings for
| > connecting to the SQL server.... All of that is covered in the README
for
| > SQL: http://www.spamassassin.org/dist/sql/README
| >
| > I hope that helps somebody... We are going to be ramping up the load on
the
| > SA box shortly to see how well it scales... We are considering doing
load
| > balancing via two SA boxes and a psuedo-random IP selector script that
will
| > feed a variable $IP to the .mailfilter script above... something like:
| >
| > IP=`/path/to/ipscript.sh`
| >
| > xfilter "/usr/local/bin/spamc -d $IP -t 20 -f -u [EMAIL PROTECTED]"
| >
| > If anybody has any comments or suggestions I would be willing to hear
| > them... I am currently writing up a howto to post to the web soon, but
it is
| > rather FBSD specific I am afraid...
| >
| > As a side note with regard to spamd reading the settings from SQL...
spamd
| > makes a lookup on the [EMAIL PROTECTED], but also makes a lookup on
GLOBAL
| > and @GLOBAL, so you can have a global preference for anybody that
doesn't
| > have an entry in the SQL table... A very nice feature.
| >
| > HTH,
| >
| > Tom Walsh
| > Network Administrator
| > http://www.ala.net/
| >
| >
|
|
|


Reply via email to