**!!! 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