!!! ACHTUNG - evtl. veraltet - ACHTUNG !!!
Diese Seite wurde zuletzt am 9. Juli 2014 um 10:35 Uhr geändert.
qmailctl stop
aptitude install openssl libssl-dev
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)
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
cat <<EOF > /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
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!)
qmailctl start
aptitude install clamav-daemon spamassassin p0f
addgroup --system simscan adduser --system --ingroup simscan --home /var/qmail/simscan simscan
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
cat <<EOF > /var/qmail/control/ssattach .bat .bin .cmd .com .exe .scr EOF chmod 644 /var/qmail/control/ssattach
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
sed -i s/ENABLED=0/ENABLED=1/ /etc/default/spamassassin
/etc/init.d/spamassassin start
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
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
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!?)
aptitude install dspam procmail
mysql --host=<HOST> --user=root --password -e "CREATE DATABASE `<DB>`; \ CREATE USER '<USER>'@'<FROM_HOST>' IDENTIFIED BY '<PASSWORD>'; \ GRANT USAGE ON * . * TO '<USER>'@'<FROM_HOST>' IDENTIFIED BY '<PASSWORD>' \ 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 `<DB>` . * TO '<USER>'@'<FROM_HOST>';"
mysql --host=<HOST> --user=<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
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 <<EOF > /etc/dspam.d/mysql.conf MySQLServer <HOST> MySQLPort 3306 MySQLUser <USER> MySQLPass <PASSWORD> MySQLDb <DB> MySQLCompress true MySQLReconnect true EOF chown dspam:dspam /etc/dspam.d/mysql.conf chmod 640 /etc/dspam.d/mysql.conf
sed -i s/START=no/START=yes/ /etc/default/dspam
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!)
/etc/init.d/dspam start
cat <<EOF > /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
cat <<EOF > /var/vpopmail/domains/<DOMAIN>/.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
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/<DOMAIN>/.qmail-default