17.Mai 2012
StartseiteWebdesignPC-TechnikIT-BeratungNetzwerkeSoftwareElektronikSupport
Spamschutz

 

 

Dieses Tutorial basiert auf mehreren Tutorials von Huschi sowie eigenen Tutorials die zu einem kompletten Tutorial zusammengefügt und Fehlerbereinigt wurden. Dieses Tutorial wurde auf einem x64 Root Server von 1und1 getestet dabei wurde SuSE 9.3 sowie Plesk 8x mit qmail verwendet. Das System basiert auf drei Hauptkomponenten einem tcpwrapper für den qmail-daemon, qsheff sowie einem Greylisting System.Der tcpwrapper checkt anhand von Blacklists ob eindeutig identifizierte Systeme versuchen Spam auszuliefern. Das Greylisting verhindert ein sofortiges zustellen der eingehenden E-Mails indem er jede E-Mail die nicht in einer dynamischen Datenbank Tabelle bereits verifiziert ist beim ersten Versuch abweist. Beim zweiten Versuch akzeptiert er diese E-Mail dann, das hat aber auch eine Verzögerung zur Folge die abhängig vom versenden Server ist da er laut RFC einen zweiten Versuch unternehmen muss. Wobei der Zeitabstand variieren kann in der Regel ist der Abstand 10-15 Minuten. Qsheff stellt sicher das alle eingehenden E-Mails durch den Spamfilter sowie durch den Virenscanner gecheckt werden

I.Konzept des Filtersystems

 

1. Einleitung

Dieses Tutorial basiert auf mehreren Tutorials von Huschi  sowie eigenen Tutorials die zu einem kompletten Tutorial zusammengefügt und Fehlerbereinigt wurden. Dieses Tutorial wurde auf einem x64 Root Server von 1und1 getestet dabei wurde SuSE 9.3 sowie Plesk 8x mit qmail verwendet. Das System basiert auf drei Hauptkomponenten einem tcpwrapper für den qmail-daemon, qsheff sowie einem Greylisting System.Der tcpwrapper checkt anhand von Blacklists ob eindeutig identifizierte Systeme versuchen Spam auszuliefern. Das Greylisting verhindert ein sofortiges zustellen der eingehenden E-Mails indem er jede E-Mail die nicht in einer dynamischen Datenbank Tabelle bereits verifiziert ist beim ersten Versuch abweist. Beim zweiten Versuch akzeptiert er diese E-Mail dann, das hat aber auch eine Verzögerung zur Folge die abhängig vom versenden Server ist da er laut RFC einen zweiten Versuch unternehmen muss.  Wobei der Zeitabstand variieren kann in der Regel ist der Abstand  10-15 Minuten. Qsheff stellt sicher das alle eingehenden E-Mails durch den Spamfilter sowie durch den Virenscanner gecheckt werden.

 

 

1.1. Grundvorraussetzungen

Damit die komplette Installation reibungslos funktioniert sollte zuerst geprüft werden ob die Installationsquelle der Distribution noch aktuell und funktionierend ist, in unserem Fall wurde der Update Server von 1und1 abgestellt bzw. in einen anderen Pfad verlegt. Es wird immer wieder notwendig sein bestimmte Komponenten zu installieren bzw. zu ergänzen. Es ist weiterhin zu empfehlen einen Mirror Server der  Distribution zu finden um später manuell auch Quellpakete zu downloaden (ftp.gwdg.de/pub/linux/suse/ftp.suse.com).

 

1.2. Clamav

Die Installation bzw. das Update vom Clamav gestaltete sich schwierig da es kein Binärpaket für die aktuelle Version gab. Mit einem Trick kann man sich aber helfen wir laden uns zuerst das Quellpaket von clamav.org ( hier hab ich bewusst keine Url eingefügt bitte immer die aktuelle Source Version benutzen). Weiterhin das letzte Quellpaket der SuSE Distribution installieren(srpm manuell mit rpm –Uvh clam*.srpm ).

 

            - cd /usr/src/packages

            - rpmbuild –bb /SPEC/clamav.spec

 

Hier bitte erst einmal die Ausgaben prüfen ob noch Pakete fehlen ggf. über Yast nachinstallieren. Wenn der Vorgang ohne Fehler durchläuft befindet sich die fertige 3 Pakete im Verzeichnis RPMS/x86_64

 

            - cd /usr/src

            - tar xvfz clamav-0.91.2.tar.gz

            - tar cvfz  packages/SOURCES/clamav-0.91.2.tar.bz2  clamav-0.91.2

 

Jetzt müssen noch zwei Änderungen gemacht werden zum einen in der Datei

 

packages/SPECS/clamav.spec

 

Zeile 1 ändern in

Version            0.91.2

 

Zeile 21 ändern in

Version:           0.91.2

 

packages/SOURCES/clamav-conf.patch

 

Zeile 45 ändern in

 

-LocalSocket /tmp/clamd.socket

 

 

            - cd /usr/src/packages

            - rpmbuild –bb /SPEC/clamav.spec

 

Wenn keine Pakete mehr fehlen sollten jetzt alle drei neuen Pakete fertig erstellt sein im Verzeichnis RPMS/x86_64

.

Diese können nun per

 

rpm –Uvh clamav-0.91.2-0.1.x86_64.rpm

rpm –Uvh clamav-db-0.91.2-0.1.x86_64.rpm

 

installiert werden

 

Notwendige Änderungen an den Konfigurationsdateien

 

In der /etc/clamd.conf

Logfile /var/log/clamd.log

 

In der /etc/freshclam.conf

UpdateLogfile /var/log/freshclam.log

 

chown –R vscan:vscan /var/log/clamd.log

chown –R vscan:vscan /var/log/freshclam.log

 

Die Dienste werden wie folgt aktiviert

 

insserv clamd

insserv freshclam

 

/etc/init.d/rcclamd start

/etc/init.d/rcfreshclam start

 

Logfiles checken auf Fehler

 

 

1.2.1 Spamassassin

Hier habe ich glücklicherweise auf dem SuSE Mirror ein aktuelles srpm gefunden dies Installieren und mit rpm –Uvh spam*srpm

 

cd /usr/src/packages

rpmbuild –bb SPEC/spamassassin.spec

 

cd /usr/src/packages/RPMS

rpm –Uvh spamassassin-3.1.8-9.1.x86_64.rpm  perl-spamassassin-3.1.8-9.1.x86_64.rpm

 

Bei mir gab es das Problem das razor-agents-2.67-3.2.x86_64.rpm auch noch vorher neu kompiliert werden musst dafür gab es aber auch ein srpm von SuSE dieses kann nach dem gleichen Verfahren installiert werden.

 

So jetzt noch die /etc/mail/ spamassassin/local.cf anpassen

 

 

required_score  3

rewrite_header  subject *****SPAM*****

report_safe             1

use_bayes               1

bayes_auto_learn        1

skip_rbl_checks         0

use_razor2              1

use_pyzor               1

ok_locales              de

 

insserv spamd

rcspamd start

 

Logfiles checken auf Fehler

 

Tipp: Es gibt noch ein paar Zusatzmodule deren anschauen sich lohnt zb iXHash, antidrug.cf, evilnumbers.cf, 70_zmi_german.cf usw.

 

 

 

 

1.2.2. tcpwrapper

 

Der tcpwrapper muss vollständig selber kompiliert werden dazu folgendes Source Pakte laden

           

            - cd /usr/src

- wget  http://cr.yp.to/ucspi-tcp/ucspi-tcp-0.88.tar.gz

- tar xvfz ucspi-tcp-0.88.tar.gz

- cd ucspi-tcp-0.88.tar.gz

- make

- make setup check

 

Hier wird es ein wenig knackig das kompilieren ist bei mir sofort fehlgeschlagen da eine Header Datei fehlte bzw falsch referenziert wurde um diesen Fehler zu beheben muss in jeder Datei(c-source) die einen errno Fehler produziert im Header folgendes nachgetragen werden

 

#inlcude <errno.h>

 

Wenn dann alles reibungslos funktioniert hat muss noch die /etc/xinetd.d/smtp_psa angepasst werden in der Zeile server_args muss vor den bestehenden String folgendes eingefügt werden

 

server_args= -Rt0 /usr/sbin/rblsmtpd  -r bl.spamcop.net -r rhsbl.ahbl.org -r dnsbl.ahbl.org -r sbl.spamhaus.org  <rest></rest>

 

ein

rcxinted restart

aktiviert das ganze

           

1.2.3. qhseff

 

 
Ripmime installieren
cd /usr/local/src

wget www.pldaniels.com/ripmime/ripmime-1.4.0.5.tar.gz



tar zxvf ripmime-1.4.0.5.tar.gz



cd ripmime-1.4.0.5



make

make install



ln -s /usr/local/bin/ripmime /usr/bin/

 

Qsheff installieren

 
cd /usr/local/src



wget www.huschi.net/download/qsheff-1.0-r4.tar.gz

tar -xzvf qsheff-1.0-r4.tar.gz

cd qsheff-1.0-r4

./configure

make



#qmail kurz anhalten:

/etc/init.d/qmail stop

#Backup der zu überschreibenenden qmail-queue:

cp -p /var/qmail/bin/qmail-queue /var/qmail/bin/qmail-queue.bak



#erster Installlationsschritt

make install

#Konfiguration anpassen:

edit /usr/local/etc/qsheff/qsheff.conf

# in der Zeile von VIRUS_PROG den Pfad anpassen:

# VIRUS_PROG = "/usr/bin/clamdscan –-quiet"



#zweiter Installlationsschritt

/usr/local/etc/qsheff/install-wrapper.sh

#Spamassassin in die qmail-queue einbinden:

rm -f /var/qmail/bin/qmail-queue

echo '#!/bin/sh' >/var/qmail/bin/qmail-queue

echo '/usr/bin/spamc | /var/qmail/bin/qmail-qsheff' >>/var/qmail/bin/qmail-queue

chmod 4755 /var/qmail/bin/qmail-queue



#qmail wieder starten:

/etc/init.d/qmail start

 

1.2.4. qmail-greylist

 

mysql -u admin -p`cat /etc/psa/.psa.shadow` mysql

 

# Datenbank 'qmail':
CREATE DATABASE qmail;
# User 'greylist' (ändert evtl. das Passwort):
GRANT ALL ON qmail.* TO 'greylist'@'localhost' IDENTIFIED BY 'achtung pw eintragen';
FLUSH PRIVILEGES;
# Tabelle 'relaytofrom':
USE qmail;
CREATE TABLE relaytofrom (
  id bigint(20) NOT NULL auto_increment,
  relay_ip varchar(16) default NULL,
  mail_from varchar(255) default NULL,
  rcpt_to varchar(255) default NULL,
  block_expires datetime NOT NULL default '0000-00-00 00:00:00',
  record_expires datetime NOT NULL default '0000-00-00 00:00:00',
  blocked_count bigint(20) NOT NULL default '0',
  passed_count bigint(20) NOT NULL default '0',
  aborted_count bigint(20) NOT NULL default '0',
  origin_type enum('MANUAL','AUTO') NOT NULL default 'MANUAL',
  create_time datetime NOT NULL default '0000-00-00 00:00:00',
  last_update timestamp(14) NOT NULL,
  PRIMARY KEY  (id),
  KEY relay_ip (relay_ip),
  KEY mail_from (mail_from(20)),
  KEY rcpt_to (rcpt_to(20))
) TYPE=MyISAM;

 

quit

 

 

 

yast -i mysql-devel openssl-devel zlib-devel

 

cd /usr/src

wget www.huschi.net/download/qmail-103-greylist-psa8.tar.gz
 
tar xfz qmail-1*
cd qmail-1.03
echo "-lssl -lcrypto" >ssl.lib
 
 
<code>die local_scan.c</code> muss angepasst werden
 
#define MYSQLHOST "localhost"
#define MYSQLUSER "greylist"
#define MYSQLPASS "dein passwort"
#define MYSQLDB   "qmail"
 
 
 
edit Makefile
#ersetzte alle Vorkommen von "/usr/lib/mysql/libmysqlclient.a"
#durch "/usr/lib64/mysql/libmysqlclient.a"
 
 
# Email-Empfang stoppen:
/etc/init.d/inetd stop
# oder:
/etc/init.d/xinetd stop
#(Qmail selbst muß nicht beendet werden.)
 
# installieren:
cp -p /var/qmail/bin/qmail-smtpd /var/qmail/bin/qmail-smtpd.old
cp qmail-envelope-scanner /var/qmail/bin/.
chown root.qmail /var/qmail/bin/qmail-envelope-scanner
cp -pf qmail-smtpd /var/qmail/bin/.
chown root.qmail /var/qmail/bin/qmail-smtpd
 
# qmail wieder starten:
/etc/init.d/inetd start
# bzw.  /etc/init.d/xinetd start
 
Aufräum script
Es kann sein das hier noch Pakete fehlen diese können per Yast nachinstalliert werden einfach die Datei manuell starten und die Ausgaben beobachten.
 

<code>/etc/cron.daily/qmail-</code>greylist<code>-cleanup.pl</code>

 

#!/usr/bin/perl -w
use strict;
 
use constant DBD => 'DBI:mysql:qmail:localhost:3306';
use constant DBUSER => 'greylist';
use constant DBPASS => 'achtung dein passwort';
 
use DBI;
 
system ('cat /dev/null > /tmp/greylist_dbg.txt');
 
my $dbh = DBI->connect(DBD,DBUSER,DBPASS) or die "can't connect to db ", $DBI::errstr, ":$!";
 
$dbh->do("DELETE FROM relaytofrom WHERE record_expires < NOW() - INTERVAL 1 HOUR AND origin_type = 'AUTO'");
$dbh->do("OPTIMIZE TABLE relaytofrom");
$dbh->disconnect;

 

 

chmod +x /etc/cron.daily/qmail-greylist-cleanup.pl