Debian Mini-HowTo: QMail mit Spam- und Virenschutz
Posted: 2003-12-26 15:33
// Version 0.0.5; changelog am Ende //
Hallo zusammen,
dieses Mini-Howto (BTW mein erstes) soll helfen, ein Mailsystem, bestehend aus QMail, qmail-scanner, spamassassin, courier und clamav auf einem Debian stable-System aufzusetzen. Dabei lege ich hier besonders Wert auf eine möglichst großzügige Verwendung des apt-Mechanismus um so wenige Probleme wie möglich zu haben.
Besonderen Dank aber zunächst einmal an scythe42 für seinen "Qmail-Toaster" (Teil 1 und Teil 2) sowie an olfi für sein Debian-Howto zu Qmail (http://www.debianhowto.de/howtos/de/qma ... l_MTA.html).
Ich werde mich so weit wie möglich vor allem auf das debianhowto.de beziehen um nicht alles zu wiederholen.
So, beginnen wir.
Zunächst einmal empfiehlt es sich, die /etc/apt/sources.list um folgende Einträge zu erweitern:
Dadurch werden die Backports für einige Pakete eingesetzt. Backports sind neuere Versionen von Softwarepaketen die auf Debian stable-Distributionen lauffähig sind. Dadurch hat man neuere Software auf seinem System ohne auf Testing oder gar Unstable wechseln zu müssen.
Außerdem wird das Repository des ClamAV Virenscanners hinzugefügt um ihn später bequem installieren zu können.
Für den nächsten Schritt, nämlich die Installation des eigentlichen QMail-Systems verweise ich nochmal auf debianhowto.de.
Hiernach solltet ihr ein lauffähiges Mailsystem haben. Dieses solltet ihr auch ausgiebig getestet haben bevor ihr weiter macht um Fehler bis dato auszuschließen.
Kommen wir also endlich zu was Neuem.
Als allererstes installieren wir einige Programme, auf die von den zu installierenden Programmen zurückgegriffen wird:
So, die Vorarbeiten wären erledigt, weiter im Text.
Zunächst einmal installieren wir spamassassin:
Anschließend ändern wir die Datei /etc/default/spamassassin so ab, dass SA (=Spamassassin) als Daemon in der Kombination mit spamc läuft. Dies beschleunigt den Spamerkennungsprozess. Genauer ändern wir die Zeile
in (oh Wunder)
Ein
genügt für's Erste.
Nun ist SA installiert, kümmern wir uns als nächstes um einen Virenscanner:
Letzteres ist das Programm zum automatischen Aktualisieren der Virusdefinitionen.
Nach diesem Schritt sollte auch der Virenscanner einsatzbereit sein.
Zur korrekten Funktionsweise benötigt qmail-scanner auch noch das Modul reformime aus dem maildrop-Paket. Leider ist die in Debian-stable vorhandene Version veraltet, daher die letzte Zeile in der /etc/apt/sources.list. Nur noch schnell ein
und auch dieses Problem ist gelöst.
Kommen wir zum logistischen Herzstück des Beitrags. Denn bisher haben wir ja nur die eigentlichen Programme installiert, irgendwie müssen e-Mails aber ja auch noch an diese Programme weitergeleitet werden. Dazu nutzen wir QMail-Scanner, ein Perl-Script, welches die Standard-Queue von qmail ersetzt und dabei Mails durch bestimmte Programme schickt. De Facto ist es nur eine einzige Perl-Datei, welche mit Hilfe von ./configure aber an die speziellen Bedürfnisse auf eurem Server angepasst wird.
Eine kurze Erklärung zu den Optionen, die nicht sofort ersichtlich sind und warum ich sie verwendet habe:
Hier muss eure E-Mail Adresse hin bzw. die Adresse, an die Fehlerbenachrichtigungen gehen sollen. Sie setzt sich zusammen aus webmaster @ euer-domainname.tld
Wird eine Mail gefiltert, so wird nur der Sender darüber benachrichtigt. Standardeinstellung ist "sender,admin", es werden also auch Benachrichtigungen an den admin (hier: webmaster@euer-domainname.tld) geschickt. Bei der heutigen Spamflut beileibe keine Freude... Deswegen die Umstellung
Hier müsst ihr alle lokalen Domains eintragen. Ich habe nicht 100%ig verstanden wofür das gut ist aber ich habe mal alle meine Domains, für die der Server den Mailverkehr handhabt hier eingetragen. Achtung: Keine Leerzeichen zwischen den einzelnen Domains, nur ein Komma!
Kommt es zu Problemen, das ganze nochmal mit --debug yes neu kompilieren. Das Log schwillt allerdings extrem stark an da jede Mail protokolliert wird.
Hier werden die eigentlichen Scanner eingetragen, in unserem HowTo nur clamscan und SA. Normalerweise funktioniert auch die default-Einstellung "auto", dann werden clamscan und fast_spamassassin auch gefunden und installiert. Ich habe die beiden explizit angegeben, um bei fast_spamassassin das Argument **SPAM** mitzugeben welches bewirkt, dass zusätzlich zum "X-Spam-Status: Yes"-Header das Subject um **SPAM** am Anfang erweitert. Dadurch können auch Mailprogramme, die nicht nach Headern filtern können Spammails aussortieren.
Der genaue Unterschied zwischen den beiden Optionen fast_spamassassin und verbose_spamassassin ist hier unter Punkt 14 erklärt.
Sollte die Meldung kommen, dass eure Sprachwahl nicht unterstützt wird ist das nicht weiter schlimm, dann läuft das Programm halt auf englisch...
Die Liste aller Optionen gibt es übrigens mit ./configure --help oder als HTML-Seite hier.
OK, die Installation sollte jetzt durchlaufen (hat sie zumindest bei mir getan...).
Jetzt ist qmail-scanner einsatzbereit, noch aber ist diese schicke Erweiterung nirgends im Mailsystem integriert. Das ändern wir aber jetzt.
Ich gehe auch hier davon aus, dass qmail nach der Anleitung auf debianhowto.de installiert wurde und daher über tcpserver läuft.
Bauen wir also jetzt die neue queue in das System ein:
Hier sollte bisher etwas stehen, was in etwa so aussieht:
Die Bedeutung ist, dass alle Verbindungen von 127.0.0.1 (also localhost) automatisch relayed werden, sie also als sicher gelten. Wir ändern die Datei ab in
Nun werden alle Verbindungen, die nicht vom localhost aus kommen über qmail-scanner-queue.pl geleitet.
Als letzten Schritt muss die neue Datei nur noch kompiliert werden:
und wenn alles gutgegangen ist, funktioniert nun alles.
qmail neu starten, SA neu starten und ihr seid auf der sicheren Seite.
Beachtet bitte, dass der Scanner jetzt ein- und ausgehende Mails überprüft.
Noch was zu /etc/spamassassin/local.cf:
Hier sollte der required_hits-Wert nicht zu niedrig eingestellt werden da es ansonsten zu false-spam-positives kommt. Die Einstellungen wie rewrite_subject, etc. haben übrigens bei fast_spamassassin keine Auswirkung, warum steht in o.g. Vergleich zwischen fast_spamassassin und verbose_spamassassin.
Die Bayes-Filterung mit sa-learn würde ich auch gerne einbauen, ich habe aber bisher noch keine komfortable Möglichkeit gefunden das ganze in den IMAP-Server einzubauen.
Ich hoffe, ihr könnt auf eurem Server etwas mit diesem Mini-HowTo anfangen und erwarte Rückmeldungen *gg*
Mein Dank gilt hier nochmal den Autoren der beiden anderen HowTos.
Natürlich übernehme ich keinerlei Funktionsgarantie für dieses HowTo!
Alle Ã?nderungen an euren Systemen müsst ihr selber verantworten.
Außerdem hafte ich für keinerlei "verschwundene" Mails, was während des Betriebes mit dem System aufgrund von Falschfilterung passieren kann!
--------------------------
Changelog:
0.0.5; 2004-04-21
Update von qmail-scanner auf Version 1.22 um Problemen mit der aktuellen suidperl-Version zu entgegnen
0.0.4; 2003-12-28
Hinzufügen zweier apt-get Zeilen, um Probleme mit Perl zu beheben.
Dank an tobi^ und Pjacobs
0.0.3; 2003-12-26
Korrektur der useradd und groupadd-Zeilen von qmaild nach qscand.
Dank an Thomas_Schwerin.
0.0.2; 2003-12-26
Hinzufügen des dotdeb-Repositorys in die sources.list und Ã?nderung der Konfiguration des mime-decoders
0.0.1; 2003-12-26
Erste Veröffentlichung
--------------------------
Gruß,
Dominik
Hallo zusammen,
dieses Mini-Howto (BTW mein erstes) soll helfen, ein Mailsystem, bestehend aus QMail, qmail-scanner, spamassassin, courier und clamav auf einem Debian stable-System aufzusetzen. Dabei lege ich hier besonders Wert auf eine möglichst großzügige Verwendung des apt-Mechanismus um so wenige Probleme wie möglich zu haben.
Besonderen Dank aber zunächst einmal an scythe42 für seinen "Qmail-Toaster" (Teil 1 und Teil 2) sowie an olfi für sein Debian-Howto zu Qmail (http://www.debianhowto.de/howtos/de/qma ... l_MTA.html).
Ich werde mich so weit wie möglich vor allem auf das debianhowto.de beziehen um nicht alles zu wiederholen.
So, beginnen wir.
Zunächst einmal empfiehlt es sich, die /etc/apt/sources.list um folgende Einträge zu erweitern:
Code: Select all
# Backports für Debian stable
deb http://www.backports.org/debian stable spamassassin
deb http://www.backports.org/debian stable razor
deb http://www.backports.org/debian stable libdigest-nilsimsa-perl
# Clam AV Virenscanner
deb http://clamav.catt.com/debian stable main
# Neuere Version von maildrop
deb http://packages.dotdeb.org ./
Außerdem wird das Repository des ClamAV Virenscanners hinzugefügt um ihn später bequem installieren zu können.
Für den nächsten Schritt, nämlich die Installation des eigentlichen QMail-Systems verweise ich nochmal auf debianhowto.de.
Hiernach solltet ihr ein lauffähiges Mailsystem haben. Dieses solltet ihr auch ausgiebig getestet haben bevor ihr weiter macht um Fehler bis dato auszuschließen.
Kommen wir also endlich zu was Neuem.
Als allererstes installieren wir einige Programme, auf die von den zu installierenden Programmen zurückgegriffen wird:
Code: Select all
debian:~# apt-get install libtime-hires-perl
debian:~# apt-get install perl-suid
Zunächst einmal installieren wir spamassassin:
Code: Select all
debian:~# apt-get install spamassassin
Code: Select all
# Change to one to enable spamd
ENABLED=0
Code: Select all
# Change to one to enable spamd
ENABLED=1
Code: Select all
debian:~# /etc/init.d/spamassassin restart
Nun ist SA installiert, kümmern wir uns als nächstes um einen Virenscanner:
Code: Select all
debian:~# apt-get install clamav clamav-freshclam
Nach diesem Schritt sollte auch der Virenscanner einsatzbereit sein.
Zur korrekten Funktionsweise benötigt qmail-scanner auch noch das Modul reformime aus dem maildrop-Paket. Leider ist die in Debian-stable vorhandene Version veraltet, daher die letzte Zeile in der /etc/apt/sources.list. Nur noch schnell ein
Code: Select all
debian:~# apt-get install maildrop
Kommen wir zum logistischen Herzstück des Beitrags. Denn bisher haben wir ja nur die eigentlichen Programme installiert, irgendwie müssen e-Mails aber ja auch noch an diese Programme weitergeleitet werden. Dazu nutzen wir QMail-Scanner, ein Perl-Script, welches die Standard-Queue von qmail ersetzt und dabei Mails durch bestimmte Programme schickt. De Facto ist es nur eine einzige Perl-Datei, welche mit Hilfe von ./configure aber an die speziellen Bedürfnisse auf eurem Server angepasst wird.
Code: Select all
debian:~# groupadd qscand
debian:~# useradd -c "Qmail-Scanner Account" -g qscand -s /bin/false qscand
debian:~# cd /usr/local/src/
debian:/usr/local/src/# wget http://heanet.dl.sourceforge.net/sourceforge/qmail-scanner/qmail-scanner-1.22.tgz
debian:/usr/local/src/# tar xzf qmail-scanner-1.22.tgz
debian:/usr/local/src/# cd qmail-scanner-1.22
debian:/usr/local/src/qmail-scanner-1.22/# ./configure
> --lang de_DE
> --admin webmaster
> --domain euer-domainname.tld
> --notify "sender"
> --local-domains "euer-erster-domainname.tld,euer-zweiter-domainname.tld"
> --debug no
> --scanners "clamscan","fast_spamassassin=**SPAM**"
> --install
Code: Select all
> --admin webmaster
> --domain euer-domainname.tld
Code: Select all
> --notify "sender"
Code: Select all
> --local-domains "euer-erster-domainname.tld,euer-zweiter-domainname.tld"
Code: Select all
> --debug no
Code: Select all
> --scanners "clamscan","fast_spamassassin=**SPAM**"
Der genaue Unterschied zwischen den beiden Optionen fast_spamassassin und verbose_spamassassin ist hier unter Punkt 14 erklärt.
Sollte die Meldung kommen, dass eure Sprachwahl nicht unterstützt wird ist das nicht weiter schlimm, dann läuft das Programm halt auf englisch...
Die Liste aller Optionen gibt es übrigens mit ./configure --help oder als HTML-Seite hier.
OK, die Installation sollte jetzt durchlaufen (hat sie zumindest bei mir getan...).
Jetzt ist qmail-scanner einsatzbereit, noch aber ist diese schicke Erweiterung nirgends im Mailsystem integriert. Das ändern wir aber jetzt.
Ich gehe auch hier davon aus, dass qmail nach der Anleitung auf debianhowto.de installiert wurde und daher über tcpserver läuft.
Bauen wir also jetzt die neue queue in das System ein:
Code: Select all
debian:/usr/local/src/qmail-scanner-1.22/# cd /etc/
debian:/etc/# vi tcp.smtp
Code: Select all
127.0.0.1:allow,RELAYCLIENT=""
Code: Select all
127.0.0.1:allow,RELAYCLIENT="",RBLSMTPD="",QMAILQUEUE="/var/qmail/bin/qmail-queue"
:allow,QMAILQUEUE="/var/qmail/bin/qmail-scanner-queue.pl"
Als letzten Schritt muss die neue Datei nur noch kompiliert werden:
Code: Select all
debian:/etc/# tcprules tcp.smtp.cdb tcp.smtp.tmp < tcp.smtp
qmail neu starten, SA neu starten und ihr seid auf der sicheren Seite.
Beachtet bitte, dass der Scanner jetzt ein- und ausgehende Mails überprüft.
Noch was zu /etc/spamassassin/local.cf:
Hier sollte der required_hits-Wert nicht zu niedrig eingestellt werden da es ansonsten zu false-spam-positives kommt. Die Einstellungen wie rewrite_subject, etc. haben übrigens bei fast_spamassassin keine Auswirkung, warum steht in o.g. Vergleich zwischen fast_spamassassin und verbose_spamassassin.
Die Bayes-Filterung mit sa-learn würde ich auch gerne einbauen, ich habe aber bisher noch keine komfortable Möglichkeit gefunden das ganze in den IMAP-Server einzubauen.
Ich hoffe, ihr könnt auf eurem Server etwas mit diesem Mini-HowTo anfangen und erwarte Rückmeldungen *gg*
Mein Dank gilt hier nochmal den Autoren der beiden anderen HowTos.
Natürlich übernehme ich keinerlei Funktionsgarantie für dieses HowTo!
Alle Ã?nderungen an euren Systemen müsst ihr selber verantworten.
Außerdem hafte ich für keinerlei "verschwundene" Mails, was während des Betriebes mit dem System aufgrund von Falschfilterung passieren kann!
--------------------------
Changelog:
0.0.5; 2004-04-21
Update von qmail-scanner auf Version 1.22 um Problemen mit der aktuellen suidperl-Version zu entgegnen
0.0.4; 2003-12-28
Hinzufügen zweier apt-get Zeilen, um Probleme mit Perl zu beheben.
Dank an tobi^ und Pjacobs
0.0.3; 2003-12-26
Korrektur der useradd und groupadd-Zeilen von qmaild nach qscand.
Dank an Thomas_Schwerin.
0.0.2; 2003-12-26
Hinzufügen des dotdeb-Repositorys in die sources.list und Ã?nderung der Konfiguration des mime-decoders
0.0.1; 2003-12-26
Erste Veröffentlichung
--------------------------
Gruß,
Dominik