network/amavisd-new: Added (MTA <--> content checker interface)

amavisd-new is an interface between message transfer agent
      (MTA) and one or more content checkers.
This commit is contained in:
Nishant Limbachia 2010-04-09 13:19:58 -04:00 committed by David Somero
parent 6f23c76e28
commit 966d49843a
8 changed files with 290 additions and 0 deletions

View file

@ -0,0 +1,4 @@
amavisd-new is an interface between message transfer agent (MTA) and one
or more content checkers: virus scanners, SpamAssassin and/or dkim signing.
Please refer to README.SBo for detailed instructions and dependencies.

View file

@ -0,0 +1,38 @@
DEPENDENCIES:
FOR SPAMASSASSIN (please install in this order): perl-Test-Pod,
perl-Encode-Detect, perl-Image-Info, perl-TimeDate, perl-Test-Simple,
perl-Net-libIDN, Net-SSLeay, perl-Socket6, perl-IO-Socket-SSL,
perl-IO-Socket-INET6, perl-Crypt-OpenSSL-Bignum, perl-Crypt-OpenSSL-Random,
perl-Crypt-OpenSSL-RSA, perl-DB-File, perl-DBI, perl-Digest-SHA,
perl-Geography-Countries, perl-IP-Country, perl-IO, perl-URI, perl-digest-sha1,
perl-digest-hmac, perl-html-tagset, perl-html-parser, perl-libnet, re2c,
libwww-perl, perl-NetAddr-IP, perl-Net-Server, perl-Net-Ident, perl-MailTools,
perl-net-ip, perl-net-dns, perl-Net-DNS-Resolver-Programmable, perl-Mail-SPF,
perl-Mail-DKIM, spamassassin
FOR AMAVISD-NEW (please install in this order): perl-Convert-TNEF,
perl-Convert-UUlib, perl-Convert-BinHex, perl-Archive-Zip, perl-IO-stringy,
perl-MIME-tools, perl-Unix-Syslog, perl-BerkeleyDB
SETUP:
1. Create amavis user/group, before running the script.
groupadd -g 225 amavis
useradd -d -m /var/lib/amavis -s /bin/bash -u 225 -g 225 amavis
2. Make sure you have write perms for amavis group to amavis home (in this
case, /var/lib/amavis)
3. Create /var/log/amavisd.log file, change perms to allow write access
to amavisd user/group.
4. Add amavis user to clamav group and set "AllowSupplementaryGroups yes"
in fresclam.conf to allow amavis to scan messages.
5. To scan messages using spamassassin, you need to provide write access
to amavis user to /var/lib/spamassassin, which is the default. If the
directory doesn't exist, it will be created by spamassassin but the
permissions will correspond to the user invoking it.
6. Edit /etc/amavisd.conf. Verbose version of config file is included to
aid in configuration.

View file

@ -0,0 +1,129 @@
#!/bin/sh
# Slackware Package Build Script for amavisd-new
# Home Page http://www.ijs.si/software/amavisd/
# Copyright (c) 2009-2010, Nishant Limbachia, Hoffman Estates, IL, USA (nishant__AT__mnspace__DOT__net)
# All rights reserved.
# Redistribution and use of this script, with or without modification, is
# permitted provided that the following conditions are met:
# 1. Redistributions of script must retain the above copyright notice,
# this list of conditions and the following disclaimer.
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
PRGNAM="amavisd-new"
VERSION=2.6.4
ARCH=noarch
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
CWD=$(pwd)
set -e
if [ "$ARCH" = "i486" ]; then
SLKCFLAGS="-O2 -march=i486 -mtune=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
fi
# Create system user and group for policyd
if ! grep -q ^amavis: /etc/group ; then
echo " Please add a dedicated group to run amavisd-new"
echo " # groupadd -g 225 amavis"
echo " Or something similar."
echo " Add amavis user to clamav group and set AllowSupplementaryGroups yes"
echo " in fresclam.conf to allow amavis to scan incoming messages"
exit 1
fi
if ! grep -q ^amavis: /etc/passwd ; then
echo " Please add a dedicated user to run amavisd-new"
echo " # useradd -d /var/lib/amavis -s /bin/bash -u 225 -g 225 amavis"
echo " Or something similar."
exit 1
fi
USER=${USER:-amavis}
GROUP=${GROUP:-amavis}
AMAVIS_HOME=${AMAVIS_HOME:-/var/lib/amavis}
QUARANTINE_DIR=${QUARANTINE_DIR:-$AMAVIS_HOME/quarantine}
DOCS="RELEASE_NOTES LICENSE AAAREADME.first INSTALL TODO
amavisd*.conf LDAP* test-messages README_FILES"
rm -fr $TMP/$PRGNAM-$VERSION $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
tar xvf $CWD/$PRGNAM-$VERSION.tar.?z*
cd $TMP/$PRGNAM-$VERSION
chown -R root:root .
find . \
\( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
-exec chmod 755 {} \; -o \
\( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
-exec chmod 644 {} \;
### amavisd-new home directory
mkdir -p $PKG/$AMAVIS_HOME/{tmp,var,db,home}
### amavisd-new runtime directory
mkdir -p $PKG/var/run/amavis
### make and populate quarantine directory with subdirectories
### this is only useful if you wish to spread out
### your quarantine directory into different categories
### used by $(clean|banned_files|bad_header|spam|virus)_quarantine_method directive
### in amavisd config file
mkdir -p $PKG/$QUARANTINE_DIR/{clean,spam,banned,badh,virus}
mkdir -p $PKG/usr/{sbin,doc/$PRGNAM-$VERSION}
install -m 0755 -D amavisd $PKG/usr/sbin/$PRGNAM
( cd $PKG/usr/sbin; ln -sf $PRGNAM amavisd )
install -m 0755 amavisd-agent amavisd-nanny amavisd-release \
amavisd-snmp-subagent p0f-analyzer.pl $PKG/usr/sbin
install -D amavisd.conf $PKG/etc/amavisd.conf.new
# change permissions
chown $USER:$GROUP $PKG/etc/amavisd.conf.new
chmod 0640 $PKG/etc/amavisd.conf.new
chown -R $USER:$GROUP $PKG/$AMAVIS_HOME $PKG/var/run/amavis $PKG/$QUARANTINE_DIR
chmod -R 0770 $PKG/$AMAVIS_HOME $PKG/var/run/amavis $PKG/$QUARANTINE_DIR
cp -a $DOCS $PKG/usr/doc/$PRGNAM-$VERSION
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
### install rc script
install -m 0755 -D $CWD/rc.amavisd $PKG/etc/rc.d/rc.amavisd.new
### install logrotate script
install -D -m 0644 $CWD/amavisd.logrotate $PKG/etc/logrotate.d/amavisd
### putting slack-desc and doinst.sh in place
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cat $CWD/doinst.sh > $PKG/install/doinst.sh
cd $PKG
/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}

View file

@ -0,0 +1,10 @@
PRGNAM="amavisd-new"
VERSION="2.6.4"
HOMEPAGE="http://www.ijs.si/software/amavisd/"
DOWNLOAD="http://www.ijs.si/software/amavisd/amavisd-new-2.6.4.tar.gz"
MD5SUM="03d31657f14cd64c1cb38786214234b4"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
MAINTAINER="Nishant Limbachia"
EMAIL="nishant@mnspace.net"
APPROVED="dsomero"

View file

@ -0,0 +1,8 @@
/var/log/amavisd.log {
rotate 5
notifempty
missingok
size 1M
nocompress
copytruncate
}

View file

@ -0,0 +1,22 @@
config() {
NEW="$1"
OLD="$(dirname $NEW)/$(basename $NEW .new)"
# If there's no config file by that name, mv it over:
if [ ! -r $OLD ]; then
mv $NEW $OLD
elif [ "$(cat $OLD | md5sum)" = "$(cat $NEW | md5sum)" ]; then
# toss the redundant copy
rm $NEW
fi
# Otherwise, we leave the .new copy for the admin to consider...
}
# Keep same perms on rc.amavisd.new:
if [ -e etc/rc.d/rc.amavisd-new ]; then
cp -a etc/rc.d/rc.amavisd-new etc/rc.d/rc.amavisd-new.new.incoming
cat etc/rc.d/rc.amavisd-new.new > etc/rc.d/rc.amavisd-new.new.incoming
mv etc/rc.d/rc.amavisd-new.new.incoming etc/rc.d/rc.amavisd-new.new
fi
config etc/rc.d/rc.amavisd.new
config etc/amavisd.conf.new

View file

@ -0,0 +1,60 @@
#!/bin/sh
#
# Copyright (c) 2008-2010, Nishant Limbachia, Hoffman Estates, IL, USA [nishant@mnspace.net]
#
# /etc/rc.d/rc.amavisd
# start|stop|restart|status amavisd for Postfix
#
# For automatic startup at boot, call this script from rc.local
PIDFILE=/var/run/amavis/amavisd.pid
amavisd_start() {
if [ -x /etc/rc.d/rc.amavisd ]; then
if [ -f $PIDFILE ]; then
echo "amavisd-new daemon running with PID: $(cat $PIDFILE)"
echo "try /etc/rc.d/rc.amavisd stop|restart"
echo ""
exit 1
else
echo "Starting amavisd-new daemon"
/usr/sbin/amavisd start
fi
fi
}
amavisd_stop() {
if [ -f $PIDFILE ]; then
echo "Stopping amavisd-new daemon"
/usr/sbin/amavisd stop
else
echo "amavisd-new daemon is not running"
fi
}
amavisd_restart() {
echo "Restarting amavisd-new daemon"
/usr/sbin/amavisd reload
}
amavisd_status() {
echo "amavisd-new daemon running with PID: $(cat $PIDFILE)"
}
case "$1" in
'start')
amavisd_start
;;
'stop')
amavisd_stop
;;
'restart')
amavisd_restart
;;
'status')
amavisd_status
;;
*)
echo "USAGE: $0 start|stop|restart|status"
exit 1
;;
esac

View file

@ -0,0 +1,19 @@
# HOW TO EDIT THIS FILE:
# The "handy ruler" below makes it easier to edit a package description. Line
# up the first '|' above the ':' following the base package name, and the '|'
# on the right side marks the last column you can put a character in. You must
# make exactly 11 lines for the formatting to be correct. It's also
# customary to leave one space after the ':'.
|-----handy-ruler-----------------------------------------------------|
amavisd-new: amavisd-new (interface between mailer and content checkers)
amavisd-new:
amavisd-new: amavisd-new is a high-performance interface between mailer (MTA)
amavisd-new: and content checkers: virus scanners, and/or SpamAssassin.
amavisd-new:
amavisd-new:
amavisd-new:
amavisd-new: Homepage: http://www.ijs.si/software/amavisd/
amavisd-new:
amavisd-new:
amavisd-new: