**!!! ACHTUNG - evtl. veraltet - ACHTUNG !!!** Diese Seite wurde zuletzt am 9. Juli 2014 um 10:35 Uhr geändert. ===== qmail ===== ==== qmail anhalten ==== qmailctl stop ==== Debian-Pakete installieren ==== aptitude install openssl libssl-dev ==== qmail um tls und custom-error-messages erweitern ==== cd /usr/local/src/netqmail-1.06 wget ftp://ftp.bluemetaljackets.de/qmail/tls_20110119_qmail-queue_custom_error_v1_FOR_net-qmail-1.06_auth.patch patch < tls_20110119_qmail-queue_custom_error_v1_FOR_net-qmail-1.06_auth.patch make clean make make setup check make cert //(Sollte man bereits im Besitz eines "richtigen" Zertifikates, z. B. von http://www.startssl.com/ sein, einfach den Key und die Certs hintereinander in eine Datei servercert.pem)// ==== von micro$oft angestoßener inkompatibilität entgegenwirken ==== micro$oft soll mit hotmail der erste e-mail-provider gewesen sein, der gegen den "freien standard" RFC 2822 Section 2.3 (http://tools.ietf.org/html/rfc2822#section-2.3) "verstoßen" hat... leider gibt es mittlerweile neben anderen providern auch clients, die es micro$oft nachmachen. ABER: D. J. Bernstein wäre nicht D. J. Bernstein, wenn er nicht schon vor mehr als einem jahrzehnt ein "gegen-tool" dafür entwickelt hätte: fixcrio! leider bietet es in der original-fassung keine tls-unterstützung, aber hier hat Parallels (http://kb.parallels.com/en/6763) eine lösung entwickelt! wget http://cr.yp.to/ucspi-tcp/ucspi-tcp-0.88.tar.gz tar xzf ucspi-tcp-0.88.tar.gz cd ucspi-tcp-0.88 wget http://djbware.csi.hu/patches/ucspi-tcp-0.88.errno.patch patch < ucspi-tcp-0.88.errno.patch wget ftp://ftp.neumannsland.de/qmail/ucspi-tcp_fixcrio_with_tls-support.patch patch < ucspi-tcp_fixcrio_with_tls-support.patch make cp fixcrio /usr/bin/fixcrio sed -i '/\/var\/qmail\/bin\/qmail-smtpd/ c\/usr/bin/fixcrio \\\n/var/qmail/bin/qmail-smtpd \\' /var/qmail/supervise/qmail-smtpd/run ==== stündlichen cron-job erstellen ==== cat < /etc/cron.hourly/update_tmprsadh #!/bin/sh /var/qmail/bin/update_tmprsadh > /dev/null 2>&1 cd /etc/qmail /usr/bin/wget -N http://curl.haxx.se/ca/cacert.pem > /dev/null 2>&1 /bin/chown vpopmail:vchkpw cacert.pem > /dev/null 2>&1 /bin/chown -h vpopmail:vchkpw clientcert.pem > /dev/null 2>&1 /bin/chown vpopmail:vchkpw dh1024.pem > /dev/null 2>&1 /bin/chown vpopmail:vchkpw dh512.pem > /dev/null 2>&1 /bin/chown vpopmail:vchkpw rsa512.pem > /dev/null 2>&1 /bin/chown vpopmail:vchkpw servercert.pem > /dev/null 2>&1 EOF chmod 755 /etc/cron.hourly/update_tmprsadh /etc/cron.hourly/update_tmprsadh ==== fake-smtpd (bzw. Blacklists) ==== sed '/\/var\/qmail\/bin\/qmail-smtpd/ i\\/usr\/bin\/rblsmtpd \\' /var/qmail/supervise/qmail-smtpd/run //(wenn man keine clients, welche normalerweise über dynamisch vergebene ip-adressen mit dem internet verbunden sind, bedienen muss, kann man rblsmtpd mit dem schalter "-r" auch eine oder mehrere blacklists übergeben!)// ==== qmail neustarten ==== qmailctl start ===== simscan ===== ==== Debian-Pakete installieren ==== aptitude install clamav-daemon spamassassin p0f ==== (System-) Gruppen und Benutzer anlegen ==== addgroup --system simscan adduser --system --ingroup simscan --home /var/qmail/simscan simscan ==== ripmime ==== === Installation === cd /usr/local/src wget http://www.pldaniels.com/ripmime/ripmime-1.4.0.9.tar.gz wget http://qmail.tjc.fi/files/ripmime-1.4.0.9-permissions.patch tar xzf ripmime-1.4.0.9.tar.gz cd ripmime-1.4.0.9 patch < ../ripmime-1.4.0.9-permissions.patch make make install === Konfiguration === cat < /var/qmail/control/ssattach .bat .bin .cmd .com .exe .scr EOF chmod 644 /var/qmail/control/ssattach ==== clamav-Rechte anpassen ==== usermod -a -G simscan clamav usermod -a -G clamav simscan chown -R simscan:clamav /var/lib/clamav/ chown -R simscan:clamav /var/run/clamav/ chown -R simscan:clamav /var/log/clamav/ sed -i s/User\ clamav/User\ simscan/g /etc/clamav/clamd.conf sed -i s/DatabaseOwner\ clamav/DatabaseOwner\ simscan/g /etc/clamav/freshclam.conf ==== Spamassassin ==== === Konfiguration === sed -i s/ENABLED=0/ENABLED=1/ /etc/default/spamassassin === Dienst starten === /etc/init.d/spamassassin start ==== Installation ==== cd /usr/local/src wget http://netcologne.dl.sourceforge.net/project/simscan/simscan/simscan-1.4.0/simscan-1.4.0.tar.gz wget http://qmail.jms1.net/simscan/simscan-1.4.0-clamav.3.patch tar xvzf simscan-1.4.0.tar.gz cd simscan-1.4.0 patch < ../simscan-1.4.0-clamav.3.patch ./configure --enable-clamav=y --enable-attach=y --enable-spam=y --enable-received=y --enable-custom-smtp-reject make make install-strip /var/qmail/bin/simscanmk -g ==== Mail-(v)Server-Integration ==== Zusätzlich zur Integration von ClamAV und Spamassassin in die E-Mail-Warteschlange, wird durch das "=" vor :allow eine DNS-Abfrage durchgeführt und im Fehlerfall wird die E-Mail nicht an den smtpd (qmail) sondern an den **rblsmtpd** (ucspi-tcp) übergeben: sed -i s/:deny/=:allow,QMAILQUEUE="\/var\/qmail\/bin\/simscan"\\n:allow,RBLSMTPD="No Reverse DNS."/ /etc/tcp.smtp qmailctl cdb ===== dspam ===== ==== dspam-Repository hinzufügen ==== wget http://packages.kirya.net/kirya_squeeze.sources.list wget -O - http://packages.kirya.net/Kirya.netDebianpackagesVerificationKey.asc | apt-key add - aptitude update //(In sid ist bereits wieder eine aktuelle Version enthalten, weshalb dieser Schritt in whezzy wieder überflüssig werden dürfte!?)// ==== Debian-Pakete installieren ==== aptitude install dspam procmail ==== MySQL-Datenbank und -Benutzer anlegen ==== mysql --host= --user=root --password -e "CREATE DATABASE ``; \ CREATE USER ''@'' IDENTIFIED BY ''; \ GRANT USAGE ON * . * TO ''@'' IDENTIFIED BY '' \ WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0; \ GRANT SELECT , INSERT , UPDATE , DELETE , CREATE , DROP ON `` . * TO ''@'';" {{Platzhalter}} mysql --host= --user= --password [[...]] mysql> source /usr/share/doc/libdspam7-drv-mysql/sql/mysql_objects-4.1.sql [[...]] mysql> source /usr/share/doc/libdspam7-drv-mysql/sql/virtual_users.sql [[...]] mysql> ALTER TABLE `dspam_signature_data` ENGINE = InnoDB; [[...]] mysql> ALTER TABLE `dspam_stats` ENGINE = InnoDB; [[...]] mysql> ALTER TABLE `dspam_token_data` ENGINE = InnoDB; [[...]] mysql> ALTER TABLE `dspam_virtual_uids` ENGINE = InnoDB; [[...]] mysql> ALTER TABLE `dspam_preferences` ENGINE = InnoDB; [[...]] mysql> quit {{Platzhalter}} ==== Konfiguration ==== sed -i s/StorageDriver\ \/usr\/lib\/dspam\/libhash_drv.so/StorageDriver\ \/usr\/lib\/dspam\/libmysql_drv.so/ /etc/dspam/dspam.conf mv /etc/dspam.d/mysql.conf{,_debian} cat < /etc/dspam.d/mysql.conf MySQLServer MySQLPort 3306 MySQLUser MySQLPass MySQLDb MySQLCompress true MySQLReconnect true EOF chown dspam:dspam /etc/dspam.d/mysql.conf chmod 640 /etc/dspam.d/mysql.conf {{Platzhalter}} sed -i s/START=no/START=yes/ /etc/default/dspam ==== Training ==== mkdir -p /usr/local/src/training/{ham,spam} cd /usr/local/src/training wget http://spamassassin.apache.org/publiccorpus/20030228_spam.tar.bz2 tar xvjf 20030228_spam.tar.bz2 --strip=1 -C spam wget http://spamassassin.apache.org/publiccorpus/20050311_spam_2.tar.bz2 tar xvjf 20050311_spam_2.tar.bz2 --strip=1 -C spam rm spam/cmds wget http://spamassassin.apache.org/publiccorpus/20030228_easy_ham.tar.bz2 tar xvjf 20030228_easy_ham.tar.bz2 --strip=1 -C ham wget http://spamassassin.apache.org/publiccorpus/20030228_easy_ham_2.tar.bz2 tar xvjf 20030228_easy_ham_2.tar.bz2 --strip=1 -C ham wget http://spamassassin.apache.org/publiccorpus/20030228_hard_ham.tar.bz2 tar xvjf 20030228_hard_ham.tar.bz2 --strip=1 -C ham rm ham/cmds dspam_train dspam /usr/local/src/training/spam /usr/local/src/training/ham //(Mit libhash würde es zwar viiiel schneller gehen, dafür ist der Speicherbedarf dann aber auch viiiel höher, also: per "screen" über Nacht laufen lassen!)// ==== Dienst starten ==== /etc/init.d/dspam start ==== Benutzerspezifisches Training ==== cat < /etc/cron.daily/dspam_reclass #!/bin/sh DOMAINS="/home/vpopmail/domains" VUSERINFO="/home/vpopmail/bin/vuserinfo" JUNK="Maildir/.Junk/cur" ISJUNK="Maildir/.IsJunk/cur" NOJUNK="Maildir/.NoJunk/cur" DSPAM="/usr/bin/dspam" for DOMAIN in \$( ls -1 \$DOMAINS ) ; do for USER in \$( ls -1 \$DOMAINS/\$DOMAIN ) ; do if \$VUSERINFO \${USER}@\${DOMAIN} > /dev/null ; then # sicherstellen, dass alle Verzeichnisse vorhanden sind: if [[|! -d \$DOMAINS/\$DOMAIN/\$USER/Maildir/.Junk ]] ; then # weil die dash keine "Brace Expansion" unterstützt drei mkdir-Aufrufe: mkdir -p -m 700 \$DOMAINS/\$DOMAIN/\$USER/Maildir/.Junk/cur mkdir -m 700 \$DOMAINS/\$DOMAIN/\$USER/Maildir/.Junk/new mkdir -m 700 \$DOMAINS/\$DOMAIN/\$USER/Maildir/.Junk/tmp chown -R vpopmail:vchkpw \$DOMAINS/\$DOMAIN/\$USER/Maildir/.Junk fi if [[|! -d \$DOMAINS/\$DOMAIN/\$USER/\$ISJUNK ]] ; then mkdir -p -m 700 \$DOMAINS/\$DOMAIN/\$USER/Maildir/.IsJunk/cur mkdir -m 700 \$DOMAINS/\$DOMAIN/\$USER/Maildir/.IsJunk/new mkdir -m 700 \$DOMAINS/\$DOMAIN/\$USER/Maildir/.IsJunk/tmp chown -R vpopmail:vchkpw \$DOMAINS/\$DOMAIN/\$USER/Maildir/.IsJunk echo "IsJunk" >> $DOMAINS/$DOMAIN/$USER/Maildir/subscriptions fi if [[|! -d \$DOMAINS/\$DOMAIN/\$USER/\$NOJUNK ]] ; then mkdir -p -m 700 \$DOMAINS/\$DOMAIN/\$USER/Maildir/.NoJunk/cur mkdir -m 700 \$DOMAINS/\$DOMAIN/\$USER/Maildir/.NoJunk/new mkdir -m 700 \$DOMAINS/\$DOMAIN/\$USER/Maildir/.NoJunk/tmp chown -R vpopmail:vchkpw \$DOMAINS/\$DOMAIN/\$USER/Maildir/.NoJunk echo "NoJunk" >> $DOMAINS/$DOMAIN/$USER/Maildir/subscriptions fi # vier Wochen alte, gelesene Junk-Mails löschen: find \$DOMAINS/\$DOMAIN/\$USER/\$JUNK -type f -mtime +28 -exec rm {} \; # aus den manuell als Junk "markierten" Mail lernen und löschen: for ISJUNK in \$( ls -1 \$DOMAINS/\$DOMAIN/\$USER/\$ISJUNK ) ; do cat \$ISJUNK | \$DSPAM --user \${USER}@\${DOMAIN} --mode=teft --class=spam --source=error rm \$ISJUNK done # aus den manuell als NICHT-Junk "markierten" Mails lernen und verschieben: for NOJUNK in \$( ls -1 \$DOMAINS/\$DOMAIN/\$USER/\$NOJUNK ) ; do cat \$NOJUNK | \$DSPAM --user \${USER}@\${DOMAIN} --mode=teft --class=innocent --source=error mv \$NOJUNK \$DOMAINS/\$DOMAIN/\$USER/Maildir/cur done fi done done EOF chmod 755 /etc/cron.daily/dspam_reclass ==== .procmailrc ==== cat < /var/vpopmail/domains//.procmailrc MAILDIR="/home/vpopmail/domains/\$USER/\$EXT/Maildir" LOGFILE="/var/log/procmail.log" VERBOSE="on" >0: * ^X-DSPAM-Result: spam .Junk/ >0w | /home/vpopmail/bin/vdelivermail // delete EOF ==== Mail-(v)Server-Integration ==== echo "| /usr/bin/dspam --mode=teft --deliver=innocent --token=chain --feature=noise --user \$EXT@\$USER --stdout \ | /var/qmail/bin/preline /usr/bin/procmail -p -m /home/vpopmail/domains/bluemetaljackets.de/.procmailrc" \ > /var/vpopmail/domains//.qmail-default {{Platzhalter}} ==== Todo ==== - dspam_clean - mysql> purge.sql