On Wednesday 17 September 2003 12:27, you wrote:
> ----- Original Message -----
> From: "Jesse Guardiani" <[EMAIL PROTECTED]>
>
> > I have written (and currently use in production) a python script
> > designed to block email addresses and/or domains using a flat file/auto
> > generated CDB file.
> >
> > It differs from the badmailfrom file in that it:
> >
> > 1.) Uses a CDB database for bad from address lookups
> > 2.) Checks the envelope sender address of the incoming email (like
> >     traditional badmailfrom), AND blocks based on the email header's
> >     from address.
> >
> > The script is very efficient (for an interpretted script) and fast.
> > It's also well tested at this point, and relatively bug-free. It
> > runs under qmail-qfilter (a C wrapper for QMAILQUEUE scripts).
> >
> > Let me know if you're interested.
>
> I'm very interested.  Please email me the script and any instructions you
> may have.

Here is the script and supporting files:

     
ftp://ftp.wingnet.net/pub/MAIL/qmail-related/queue-filters/block-forged-sender.tar.gz

And here is a quick patch against qmail-qfilter to make it call qmail-scanner-queue.pl
instead of qmail-queue:

     
ftp://ftp.wingnet.net/pub/MAIL/qmail-related/queue-filters/qmail-qfilter-scanner.diff

And I have attached my typical setup instructions to this email. Please test this 
script
on a test system, NOT a production system! There are MANY things that can go wrong
with a low-level filter script install like this. Use at your own risk!

Note: Most of the block-forged-sender.py script is regurgitated/slightly modified TMDA
code, but there are a few distinctions, like the fact that block-forged-sender.py ONLY
loads the headers of the email into memory, and TMDA actually loads the entire email
into memory. In this respect, block-forged-sender.py is much more efficient than TMDA.

-- 
Jesse Guardiani, Systems Administrator
WingNET Internet Services,
P.O. Box 2605 // Cleveland, TN 37320-2605
423-559-LINK (v)  423-559-5145 (f)
http://www.wingnet.net

# -----------------------------------------------------------------
# 29.) do the qmail-qfilter build && install
# -----------------------------------------------------------------
    fetch http://untroubled.org/qmail-qfilter/qmail-qfilter-1.5.tar.gz
    mkdir qmail-qfilter-scanner-diff
    cd qmail-qfilter-scanner-diff
    fetch 
ftp.wingnet.net/pub/MAIL/qmail-related/queue-filters/qmail-qfilter-scanner.diff
    cd ..
    tar -xvzf qmail-qfilter-1.5.tar.gz

    cd qmail-qfilter-1.5
# --
# Patch qmail-qfilter to call qmail-scanner-queue.pl (virus scanner)
# instead of the qmail-queue binary. qmail-scanner-queue.pl will then
# call qmail-queue.
# --
    patch <../qmail-qfilter-scanner-diff/qmail-qfilter-scanner.diff

# --
# Make a temporary directory that only qmail-qfilter has write
# permissions to.
# --
    mkdir /var/qmail/tmp
    chown qmaild:qmail /var/qmail/tmp
    chmod 750 /var/qmail/tmp

# --
# Do build & install
# --
    gmake
    ./installer
    cd ..


# -----------------------------------------------------------------
# 30.) do the queue-filters install
# -----------------------------------------------------------------
    mkdir queue-filters
    cd queue-filters
    fetch 
ftp.wingnet.net/pub/MAIL/qmail-related/queue-filters/block-forged-sender.tar.gz

# --
# NOTE: block-forged-sender.py is a python script. It REQUIRES
#       Python 2.x or higher AND the py-cdb module to be
#       installed. FreeBSD's Python package does NOT come with
#       the py-cdb module installed by default. It resides in
#       a seperate port/package, and can be installed like this:
#       
#           cd /usr/ports
#           make search name=py22-cdb
#       
#       Then either this:
#
#           cd /usr/ports/databases/py-cdb
#           make
#           make install
#
#        Or something like this:
#
#           portupgrade -NNP <py22-cdb-package-name-from-make-search-goes-here>
#       
# --
    mkdir /var/qmail/queue-filters
    chown qmaild:qmail /var/qmail/queue-filters
    chmod 750 /var/qmail/queue-filters

    tar -C /var/qmail/queue-filters -xvzf block-forged-sender.tar.gz

    chown -R qmaild:qmail /var/qmail/queue-filters/*
    chmod -R 754 /var/qmail/queue-filters/*

    cd ..

# --
# Now, we should set up logging for block-forged-sender:
# block-forged-sender, by default, uses the syslog name 'bfs' when
# logging.
# 
# If you would like to change the default log name, please run:

    /var/qmail/queue-filters/block-forged-sender.py --help

# for command line options and more information.
#
# The below information assumes the default log name: bfs
# --

    vim /etc/syslog.conf

# --
# Add the following to the bottom of syslog.conf:
# --
#
# !bfs
# *.*                                           /var/log/mailblock
#
# --
# and uncomment.
# --

    vim /etc/newsyslog.conf

# --
# Then add the following to newsyslog.conf:
# --
#
# /var/log/mailblock                    640  7     *    @T00  J
#
# --

    touch /var/log/mailblock
    chown root:wheel /var/log/mailblock
    chmod 644 /var/log/mailblock
    killall -HUP syslogd

    vim /var/qmail/supervise/qmail-smtpd/run

# --
# In /var/qmail/supervise/qmail-smtpd/run, Change the
# softlimit from 2000000 to 15000000. This allows qmail-smtpd
# to use more memory, which allows it to run qmail-qfilter/
# block-forged-sender.py AND qmail-scanner/ClamAV.
#
# My tests have shown that block-forged-sender.py can use up
# to 5M of RAM while searching incoming messages. However,
# block-forged-sender.py is VERY effecient and will NOT load
# the entire message into memory. Instead, it passes the
# message from STDIN to STDOUT in 256 byte chunks.
#
# Ideally, the qmail-smtpd->qmail-qfilter->block-forged-sender.py->
# qmail-scanner-queue.pl->clamdscan->qmail-queue "pipeline"
# would only require about 8-10M of softlimit RAM, but for some
# reason qmail-scanner-queue.pl thinks it's necessary to run two
# instances of itself while it passes the message off to qmail-queue,
# which effectively adds another 5M of RAM to the required softlimit.
# --

# --
# You're pretty much done installing block-forged-sender now.
# However, a few things must still be done which this manual
# does not cover:
#
# 1.) Populate /var/qmail/queue-filter/badsenders with a list
#     of domains/email addresses you wish to block. You can do
#     this manually or via cron script.
# 2.) Populate your QMAILQUEUE environment variable in
#     /etc/tcp.smtp with "queue-filters/block-forged-sender",
#     like this:
#
#     127.0.0.1:allow,QMAILQUEUE="queue-filters/block-forged-sender"
#
#     and rebuild your /etc/tcp.smtp.cdb by running the
#     following command:
#
#     qmailctl cdb
#
# 3.) Try sending some forged emails to your server via
#     telnet or sendmail, then check /var/log/mailblock to
#     see if it's working.
# --

Reply via email to