QMail: Unterschied zwischen den Versionen

Aus crazylinux.de
Zur Navigation springen Zur Suche springen
(added scripts)
Zeile 43: Zeile 43:
==Konfiguration==
==Konfiguration==
===Supervise===
===Supervise===
/service/qmail-send/run
#!/bin/sh
exec /var/qmail/rc
/service/qmail-send/log/run
#!/bin/sh
exec /usr/bin/setuidgid qmaill /usr/bin/multilog t s5000000 /var/log/qmail
/service/qmail-smtpd/run
<pre>
#!/bin/sh
QMAILDUID=`id -u qmaild`
NOFILESGID=`id -g qmaild`
MAXSMTPD=`cat /var/qmail/control/concurrencyincoming`
LOCAL=`head -1 /var/qmail/control/me`
if [ -z "$QMAILDUID" -o -z "$NOFILESGID" -o -z "$MAXSMTPD" -o -z "$LOCAL" ]; then
    echo QMAILDUID, NOFILESGID, MAXSMTPD, or LOCAL is unset in
    echo /var/qmail/supervise/qmail-smtpd/run
    exit 1
fi
if [ ! -f /var/qmail/control/rcpthosts ]; then
    echo "No /var/qmail/control/rcpthosts!"
    echo "Refusing to start SMTP listener because it'll create an open relay"
    exit 1
fi
. /var/qmail/ssl/env
exec /usr/bin/softlimit -m 90000000 \
        /usr/local/bin/sslserver -vesn -R -l "$LOCAL" -x /etc/tcp.smtp.cdb -c "$MAXSMTPD" \
        -u "$QMAILDUID" -g "$NOFILESGID" 88.198.8.108 smtp /usr/bin/rblsmtpd -r multihop.dsbl.org \
-r sbl.spamhaus.org -r ix.dnsbl.manitu.net -r list.dsbl.org /var/qmail/bin/qmail-smtpd /var/vpopmail/bin/vchkpw /bin/true 2>&1
</pre>
/service/qmail-smtpd/log/run
#!/bin/sh
exec /usr/bin/setuidgid qmaill /usr/bin/multilog t s5000000 /var/log/qmail/smtpd
/etc/tcp.smtp
/etc/tcp.smtp
  127.0.0.1:allow,RELAYCLIENT="",QMAILQUEUE="/var/qmail/bin/qmail-scanner-queue.pl",QS_SPAMASSASSIN="1"
  127.0.0.1:allow,RELAYCLIENT="",QMAILQUEUE="/var/qmail/bin/qmail-scanner-queue.pl",QS_SPAMASSASSIN="1"
192.168.230.:allow,RELAYCLIENT="",QMAILQUEUE="/var/qmail/bin/qmail-scanner-queue.pl",QS_SPAMASSASSIN="1"
  :allow,MFDNSCHECK="",SMTPAUTH="",BADMIMETYPE="",BADLOADERTYPE="M",QMAILQUEUE="/var/qmail/bin/qmail-scanner-queue.pl"
  :allow,MFDNSCHECK="",SMTPAUTH="",BADMIMETYPE="",BADLOADERTYPE="M",QMAILQUEUE="/var/qmail/bin/qmail-scanner-queue.pl"



Version vom 10. Januar 2007, 23:06 Uhr

als Vorlage diente http://www.debianhowto.de/doku.php/de:howtos:sarge:qmail

Installation

apt-get install qmail-src ucspi-tcp-src

UCSPI-TLS (UCSPI-SSL patched)

Ein Ersatz für inetd

Qmail bauen

Qmail patchen mit Spamcontrol

Qmailadmin

http://www.inter7.com/index.php?page=qmailadmin

./configure --enable-cgipath=/member/cgi-bin/qmailadmin --enable-autoresponder-path=/usr/bin --enable-ezmlmdir=/usr/bin --enable-maxpopusers=100
--enable-maxaliases=100 --enable-maxforwards=100 --enable-maxautorepsonders=100 --enable-maxmailinglists=100 --disable-ezmlm-mysql
--enable-htmldir=/home/www/mygretchen.de/htdocs --enable-cgibindir=/home/www/mygretchen.de/cgi-bin --enable-vpopmaildir=/var/vpopmail
--enable-qmaildir=/var/qmail --enable-true-path=/bin/true --enable-no-cache


            qmailadmin 1.2.0
            Current settings
---------------------------------------
       cgi-bin dir = /home/www/mygretchen.de/cgi-bin
          html dir = /home/www/mygretchen.de/htdocs
         image dir = /home/www/mygretchen.de/htdocs/images/qmailadmin
         image URL = /images/qmailadmin
      template dir = /usr/local/share/qmailadmin
         qmail dir = /var/qmail
      vpopmail dir = /var/vpopmail
   autorespond dir = /usr/bin
         ezmlm dir = /usr/bin
         ezmlm idx = yes
   mysql for ezmlm = no
              help = no
      modify quota = no
   domain autofill = no
 modify spam check = no

Konfiguration

Supervise

/service/qmail-send/run

#!/bin/sh
exec /var/qmail/rc


/service/qmail-send/log/run

#!/bin/sh
exec /usr/bin/setuidgid qmaill /usr/bin/multilog t s5000000 /var/log/qmail


/service/qmail-smtpd/run

#!/bin/sh

QMAILDUID=`id -u qmaild`
NOFILESGID=`id -g qmaild`
MAXSMTPD=`cat /var/qmail/control/concurrencyincoming`
LOCAL=`head -1 /var/qmail/control/me`

if [ -z "$QMAILDUID" -o -z "$NOFILESGID" -o -z "$MAXSMTPD" -o -z "$LOCAL" ]; then
    echo QMAILDUID, NOFILESGID, MAXSMTPD, or LOCAL is unset in
    echo /var/qmail/supervise/qmail-smtpd/run
    exit 1
fi

if [ ! -f /var/qmail/control/rcpthosts ]; then
    echo "No /var/qmail/control/rcpthosts!"
    echo "Refusing to start SMTP listener because it'll create an open relay"
    exit 1
fi

. /var/qmail/ssl/env
exec /usr/bin/softlimit -m 90000000 \
        /usr/local/bin/sslserver -vesn -R -l "$LOCAL" -x /etc/tcp.smtp.cdb -c "$MAXSMTPD" \
        -u "$QMAILDUID" -g "$NOFILESGID" 88.198.8.108 smtp /usr/bin/rblsmtpd -r multihop.dsbl.org \
 -r sbl.spamhaus.org -r ix.dnsbl.manitu.net -r list.dsbl.org /var/qmail/bin/qmail-smtpd /var/vpopmail/bin/vchkpw /bin/true 2>&1


/service/qmail-smtpd/log/run

#!/bin/sh
exec /usr/bin/setuidgid qmaill /usr/bin/multilog t s5000000 /var/log/qmail/smtpd


/etc/tcp.smtp

127.0.0.1:allow,RELAYCLIENT="",QMAILQUEUE="/var/qmail/bin/qmail-scanner-queue.pl",QS_SPAMASSASSIN="1"
192.168.230.:allow,RELAYCLIENT="",QMAILQUEUE="/var/qmail/bin/qmail-scanner-queue.pl",QS_SPAMASSASSIN="1"
:allow,MFDNSCHECK="",SMTPAUTH="",BADMIMETYPE="",BADLOADERTYPE="M",QMAILQUEUE="/var/qmail/bin/qmail-scanner-queue.pl"

cdb neubauen:

tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp

Qmail

Start-Config:

echo "meinhostname.domain.tld" > /etc/qmail/me

Procmail

Procmail ist ein Mailfilter mit dem man z.b. Spam- oder Maillinglistenmails automatisch in ein Unterordner verschieben kann. Filterregeln können mit Horde(Ingo) erstellt werden.
von http://www.qmailinfo.org/index.php/Horde-Procmail-Filters

/etc/procmailrc:

SHELL="/bin/sh"
#LOGFILE="/tmp/procmail.log"
#VERBOSE=on
VPOPHOME="/var/vpopmail"
DOMHOME="$VPOPHOME/domains/$DOM"
USERHOME="$DOMHOME/$USERNAME"
SENDMAIL="/usr/sbin/sendmail -f $USERNAME@$DOM"

DEFAULT="$USERHOME/Maildir/"
HOME="$USERHOME"
INCLUDERC="$USERHOME/.procmailrc"

##### move_Spam #####
:0
* ^X-Spam-Status:.*Yes
"$DEFAULT/.Spam/"

##### move_unknown #####
:0
* ^X-Spam-Level:.*++
"$DEFAULT/.Unknown/"

:0 w
| /usr/bin/safecat "${HOME}/Maildir/tmp" "${HOME}/Maildir/new"

/usr/sbin/preprocmail:

#!/bin/sh

VPOPMAIL=`echo ~vpopmail`
DOMDIR=`$VPOPMAIL/bin/vdominfo -d $HOST`

#convert to lower
EXT=`echo $EXT | tr "[:upper:]" "[:lower:]" `;

#check, if maildir exist
if [ -d $DOMDIR/$EXT/Maildir ]; then
        #create spamfolder if not exists
        if [ ! -d $DOMDIR/$EXT/Maildir/.Spam ]; then
                /usr/bin/maildirmake.courier -f Spam $DOMDIR/$EXT/Maildir/
                cat > /dev/null
        fi

        #create unknownfolder if not exists
        if [ ! -d $DOMDIR/$EXT/Maildir/.Unknown ]; then
                /usr/bin/maildirmake.courier -f Unknown $DOMDIR/$EXT/Maildir/
                cat > /dev/null
        fi

        #create subscription or subscribe to spamfolder
        if [ ! -r $DOMDIR/$EXT/Maildir/courierimapsubscribed ]; then
                `echo INBOX.Spam>>$DOMDIR/$EXT/Maildir/courierimapsubscribed`;
        else
                #exist the subscription?
                if [ `/bin/grep Spam $DOMDIR/$EXT/Maildir/courierimapsubscribed |wc -l` = 0 ]; then
                        `echo INBOX.Spam>>$DOMDIR/$EXT/Maildir/courierimapsubscribed`;
                fi
        fi

        #create subscription or subscribe to unknownfolder
        if [ ! -r $DOMDIR/$EXT/Maildir/courierimapsubscribed ]; then
                `echo INBOX.Unknown>>$DOMDIR/$EXT/Maildir/courierimapsubscribed`;
        else
                #exist the subscription?
                if [ `/bin/grep Unknown $DOMDIR/$EXT/Maildir/courierimapsubscribed |wc -l` = 0 ]; then
                        `echo INBOX.Unknown>>$DOMDIR/$EXT/Maildir/courierimapsubscribed`;
                fi
        fi
fi

if [ -r $DOMDIR/$EXT/.procmailrc ]; then
        env -i DOM=$HOST USERNAME=$EXT /usr/bin/procmail -p -m /etc/procmailrc
        cat > /dev/null
        exit 99
else
        env -i DOM=$HOST USERNAME=$EXT /usr/bin/procmail -p -m /etc/procmailrc
        cat > /dev/null
fi
cat > /dev/null
exit 0


This script will be called from a .qmail file. For example,

/var/vpopmail/domains/somedomain.com/.qmail-default:

| /var/qmail/bin/preline /usr/sbin/preprocmail
| /var/vpopmail/bin/vdelivermail '' bounce-no-mailbox

Links

Beispiele für Filterung

Betrieb

Logfiles

QMail schreibt seine Daten in dem im TAI64N-Format in seine Logfiles. Das mag zwar für die Auswertung der Logfiles sehr nützlich sein, lesbar ist es nicht.

cat /var/log/qmail/smtpd/current | tai64nlocal

Start/Stop/Status

qmailctl
Usage: /usr/sbin/qmailctl {start|stop|restart|doqueue|flush|reload|stat|pause|cont|cdb|queue|help}
mygretchen:/# qmailctl stat
/service/qmail-send: up (pid 5465) 151263 seconds
/service/qmail-send/log: up (pid 2106) 151373 seconds
/service/qmail-smtpd: up (pid 2109) 151373 seconds
/service/qmail-smtpd/log: up (pid 2111) 151373 seconds
messages in queue: 0
messages in queue but not yet preprocessed: 0

Links

Howtos & Co

http://www.lifewithqmail.org/lwq.html
http://www.gentoo.org/doc/de/qmail-howto.xml
http://www.debianhowto.de/doku.php/de:howtos:sarge:qmail
http://www.cargal.org/downloads/HOW-TO/debianqmail/debianqmail.html
Installing Qmail, Courier, Ezmlm, ... on Debian

AntiSpam

Big all-in-one patch. MUST!
Erstellt badmailfrom-file
http://www.chrishardie.com/tech/qmail/qmail-antispam.html

Patches

Integrate Virusscanner/Spamassassin
http://toribio.apollinare.org/qmail-scanner/
Qmail SMTP Plugin patch (SPP)

Sonstiges

Qmail Ldap/Big Picture
About relaying (blacklist und smtp_auth)
Qmail Bugs and Wishlist