Plesk mit Postfix, Dovecot, Spamassassin und ClamAV

Hier zeigen wir euch, wie ihr eure Plesk 9.5.3 Installation mit Postfix mit Dovecot anstatt Courier betreiben könnt. Außerdem installieren wir ClamAV als Viren- und Spamassassin als Spamschutz. Zu guter Letzt nutzen wir RoundCube als Webmail und zur Einstellung der Benutzerdefinierten Spam- und Sieve-Regeln.


Update

Das ganze funktioniert auch mit Plesk 10! Wir nutzen Dovecot so mit Plesk seitdem wir diesen Artikel hier veröffentlicht haben – also seit ca einem Jahr. Bisher gab es dadurch nie Probleme – es läuft also sehr gut zusammen.

Einziger Kritikpunkt ist, dass man die „Aktion“ wieder rückgängig machen sollte, bevor man ein Update fährt. Danach kann man sich Dovecot getrost wieder einrichten.

vollautomatisches Script zur Installation

Deshalb haben wir seit einiger Zeit auch ein Script zur Installation des Mods.Das Script gibt es hier zum Download: PleskModInstall.sh.zip. Jedoch bitte mit Vorsicht genießen. Hier nochmals der Hinweis, dass ich keinerlei Haftung übernehme.

Deinstallieren könnt ihr den gesamten Mod, wenn ihr keine der Optionen wählt und fortfahrt. Ihr könnt den Installer immer wieder nutzen um entsprechende Komponenten zu installieren oder zu deinstallieren.


Achtung: Wir haften nicht für möglicherweise entstandene Fehler. Diese Anleitung wurde nach bestem Gewissen erstellt, jedoch können wir nicht garantieren, dass bei einem solch aufwändigem Eingriff keine Fehler auftreten.

Wir bitten außerdem, diese Anleitung zunächst komplett zu lesen. Erst wenn ihr alle Vorgänge verstanden haben (und auch alle Befehle kennen), solltet ihr euch überlegen ob ihr diesen Eingriff durchführen möchtet.

Wir empfehlen natürlich vorher ein Backup zu erstellen. Nur für den Fall der Fälle. Und nun geht’s los…

Was ihr schon haben solltet

Ihr solltet bisher eine Plesk 9.5.3 Version installiert haben. Als MTA solltet ihr Postfix gewählt und gezwungener Maßen Courier am laufen haben.

  • Plesk 9.5.3
  • Debian 5.0
  • Postfix
  • Courier

ClamAV und ClamSMTP

Die Installation von ClamAV und ClamSMTP ist mittels apt-get denkbar einfach. Wir führen folgendes Command aus:

apt-get install clamav clamsmtp

ClamAV binden wir nun mittels ClamSMTP in Postfix ein. Dazu fügen wir folgende Zeilen an das Ende der entsprechenden Dateien von Postfix an (Achtung: Portangaben kontrollieren):

main.cf

...
content_filter = scan:127.0.0.1:10029
receive_override_options = no_address_mappings

master.cf

...
#
# AV scan filter (used by content_filter)
#
scan              unix  -   -   n   -   16 smtp -o smtp_send_xforward_command=yes
127.0.0.1:6001    inet  n   -   n   -   16 smtpd
		-o content_filter=spamchk
		-o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
		-o smtpd_helo_restrictions=
		-o smtpd_client_restrictions=
		-o smtpd_sender_restrictions=
		-o smtpd_recipient_restrictions=permit_mynetworks,reject
		-o mynetworks_style=host
		-o smtpd_authorized_xforward_hosts=127.0.0.0/8

Nun müssen noch die Ports von ClamSMTP anpassen (/etc/clamsmtpd.conf) und ClamSMTP starten, damit die E-Mails auch weitergegeben werden können.

...
Listen: 127.0.0.1:10029
...
/etc/init.d/clamsmtp start

Spamassassin

Als nächtes installieren wir Spamassassin. Dies geschieht mit folgendem Command:

apt-get install spamassassin spamc

Als nächstes passen wir die Spamassassin Startoptionen an. Dazu legen wir zunächst einen Benutzer für Spamassassin an. In unserem Fall lautet dieser „vmail“.

Danach teilen wir diesen Benutzer Spamassassin mit und aktivieren diesen.

adduser --no-create-home vmail

/etc/default/spamassassin

...
ENABLED=1
...
OPTIONS="-u vmail --create-prefs --max-children 5 --sql-config --helper-home-dir"
...
/etc/init.d/spamassassin restart

Nun binden wir auch Spamassassin in Postfix ein. Dazu benötigen wir zunächst ein spamchk Script, welches die E-Mails an den spamd übermittelt. Dieses haben wir etwas modifiziert und dient so nun lediglich zur Übermittlung.

Unser modifiziertes Script könnt ihr hier herunterladen. Das Original, welches direkt auch Spam-Mails verwirft ist hier zu finden – für uns aber ungeeignet, da jeder Benutzer später wunderbar selber entscheiden kann was mit Spam-Mails passiert.

Ladet das spamchk Script von uns herunter, bringt es auf euren Server und passt ggf. die Pfade in diesem Script an. Außerdem benötigt der neue Benutzer „vmail“ Rechte um diese Datei auszuführen. Danach legen wir noch einen Ordner an „/var/tempfs“, welcher ebenfalls Schreibrechte für Benutzer „vmail“ aufweist.

Nun binden wir das spamchk Script und somit Spamassassin wie folgt in Postfix ein (im master.cf Eintrag müsst ihr ggf. User und Pfad anpassen):

main.cf

...
spamchk_destination_recipient_limit = 1

master.cf

...
#
# SpamAssassin
#
spamchk           unix  -   n   n   -   10 pipe flags=Rq user=vmail argv=/var/vmail/spamchk -f ${sender} -- ${recipient}

Der eigentliche Aufruf des spamchk Scripts wurde im master.cf Eintrag von ClamAV getätigt. Und zwar als „content-filter“.

Postfix reload und bisheriger Test

Nun sollten wir einmal Postfix reloaden und testen ob E-Mails nun schon einen Spamassassin und ClamAV Header besitzen.

/etc/init.d/postfix reload

Wenn alles läuft, sollten neue, versandte E-Mails ungefähr folgende Dinge im Header stehen haben:

X-Spam-Checker-Version: SpamAssassin 3.2.5
X-Spam-Status: No, score=0 required=3.0
X-AV-Checked: ClamAV using ClamSMTP

Wenn alles wie erwartet läuft, fahren wir fort.

Dovecot

Zunächst stoppen wir Courier. Dies können wir bekanntermaßen ganz bequem über die Plesk Oberfläche erledigen. Dazu loggen wir uns als Admin in Plesk ein, gehen zur Dienstverwaltung stoppen den Dient „IMAP-/POP3-Server (Courier-IMAP)“.

Danach laden wir uns die Dovecot Sources runter. Diese finden wir hier: http://dovecot.org/download.html. Außerdem laden wir die Sieve Sources herunter: http://pigeonhole.dovecot.org/download.html.

Da wir Dovecot leider nicht gleichzeitig mit Courier installieren können, diesem aber auch nicht unbedingt sofort entfernen möchten, kompilieren wir Dovecot einfach selber.

Dazu entpacken wir die Sources und kompilieren diese wir hier schön beschrieben: http://wiki2.dovecot.org/CompilingSource. Achtet darauf, dass ihr „mit SQL Support“ und zwar als „MySQL“ kompiliert. Außerdem achtet ihr darauf, dass ihr mit „OpenSSL“ Support kompiliert.

Die Befehle könnten ungefähr so aussehen:

./configure --with-ssl=openssl --with-sql --with-mysql
make
make install
./configure --with-dovecot=/usr/local/lib/dovecot
make
make install

Die Zusammenfassung der Kompilierung findet ihr aber auch nach dem kompilieren. Dort steht wie ihr Dovecot kompiliert habt und was unterstützt wird.

Nun konfigurieren wir Dovecot ein wenig. Nachfolgend findet ihr die wichtigsten Einstellungen von Dovecot (aus dieversen Dovecot Config Dateien) für den Betrieb mit Plesk. Ihr müsst ggf. ein wenig anpassen – muss aber nicht der Fall sein.

adduser --no-create-home dovecot
adduser --no-create-home dovenull
protocols = imap pop3 lmtp sieve
 
auth_mechanisms = plain
passdb {
  driver = sql
  args = /usr/local/etc/dovecot/dovecot-sql.conf.ext
}
userdb {
  driver = static
  args = uid=popuser gid=popuser home=/var/qmail/mailnames/%d/%n/
}
 
mail_location = maildir:/var/qmail/mailnames/%d/%n/Maildir
 
protocol lda {
  mail_plugins = $mail_plugins sieve
}
 
plugin {
  sieve = ~/.dovecot.sieve
}

dovecot-sql.conf.ext

driver = mysql
 
connect = host=localhost dbname=psa user=admin password=XXXXX
 
default_pass_scheme = PLAIN
 
password_query = SELECT CONCAT_WS('@',mail.mail_name,domains.name) AS user, accounts.password FROM domains,mail,accounts WHERE domains.id=mail.dom_id AND accounts.id=mail.account_id AND CONCAT_WS('@',mail.mail_name,domains.name) = '%u';

Nun binden wir Dovecot in Postfix ein. Das machen wir wie folgt (die Kommentarzeilen extistieren schon und müssen einfach auskommentiert werden):

main.cf

virtual_alias_maps = hash:/etc/postfix/virtual_aliases_dynamic, $virtual_maps, hash:/var/spool/postfix/plesk/virtual, hash:/etc/postfix/virtual_aliases
...
#virtual_transport = plesk_virtual
#plesk_virtual_destination_recipient_limit = 1
virtual_transport = dovecot
dovecot_destination_recipient_limit = 1

master.cf

#
# Dovecot
#
dovecot           unix  -   n   n   -   -  pipe flags=DRhu user=popuser argv=/usr/local/libexec/dovecot/deliver -d ${recipient}

Der Eintrag „virtual_alias_maps = …“ in der main.cf für sorgt dafür, dass zukünftige E-Mail Weiterleitungen auch berücksichtigt werden (unter der virtual_alias_map in „/etc/postfix/virtual_aliases_dynamic“).

Und zwar werden mit einem Perl Skript alle E-Mail Weiterleitungen ausgelesen, in diese Datei geschrieben und ein Postmap erzeugt, damit Postfix diese E-Mail Weiterleitungen erkennt und auch nutzt. Desweiteren werden im Plesk angelegt E-Mail Gruppen und Autoresponder via Sieve-Regeln erstellt. Da ganze natürlich vollautomatisch.

Download: Perl Skript für E-Mail Weiterleitungen, E-Mail Gruppen und Autoresponder Untersützung

Die MySQL Daten in diesem Skript müsst ihr anpassen. Außer müsst ihr einen Cronjob auf dieses Skript einrichten. Ich empfehle hier alle 2 Minuten.

Sollte es mit diesem Script Probleme geben, bitte ich um eine entsprechende Nachricht.

Nun starten wir Dovecot neu oder starten Dovecot überhaupt einmal. Außerdem machen wir nochmals einen Postfix reload um die neue Konfiguration einzulesen.

/etc/init.d/dovecot restart
/etc/init.d/postfix reload

Wir beobachten die Logs und versenden eine erste Testmail. An sich sollte Dovecot nun schon alles schön übermitteln. Falls nicht, seht ihr in den Logs wo der Fehler liegt.

Wenn nun alles wie gewünscht funktioniert und im Log keine Fehlermeldungen zu verzeichnen sind, können wir Dovecot in die Autostart packen und Courier herausnehmen.

Der Befehl um Dovecot in die Autostart zu bekommen ist folgender:

update-rc.d dovecot defaults

Da Plesk ziemlich hartnäckig ist, habe ich Courier zunächst aus der Autostart genommen indem ich die „/etc/init.d/courier-imap“ in „/etc/init.d/courier-imap.bkp“ umbenannt habe.

RoundCube Webmail

Nun installieren wir RoundCube Webmail. Auf der Website von RoundCube findet ihr die aktuelle Version.

Dies sollte eigentlich problemlos ablaufen. Die Installation von RoundCUbe ist in der mitgeliferten „INSTALL“ Datei beschrieben und sollte somit kein größerer Akt werden.

Haben wir RoundCube erfolgreich installiert und zum laufen gebracht, importieren wir diese SQL-Datei (z.B. über phpMyAdmin). Dadurch wird die Tabelle für die Benutzer Regeln des Spamassassin erstellt.

Haben wir auch dies gemeistert, müssen wir zunächst das RoundCube Plugin „Spamassassin User Prefs (SQL)“ installieren, welches ihr hier findet. Dazu laden wir die Daten herunter und kopieren Sie in den „plugin“-Ordner von RoundCube.

Als nächstes müssen wir RoundCube noch mitteilen, welche Plugins genutzt werden sollen. Dies erledigen wir über die „main.inc.php“ von RoundCube. Ca. in Zeile 280 setzen wir folgenden Eintrag:

...
$rcmail_config['plugins'] = array('sauserprefs', 'managesieve');
...

Dadurch wird zum Einen das Plugin für die benutzerdefinierten Spamassassin Regeln aktiviert, zum Anderen das Plugin für serverseitige Filter Regeln durch Sieve.

Nun können wir als eingeloggter Benutzer im RoundCube Webmail oben rechts unter „Einstellungen“ entsprechend „Spam“ und „Filter“ wählen um unsere persönlichen Einstellungen zu hinterlegen.

Ein Test wäre Beispielweise, den Spam-Betreff auf etwas eindeutiges zu ändern und in den Filter Regeln eine Regel einzutragen, die Nachrichten mit diesem Betreff in den Ordner Spam verschiebt. Ein Versandt einer Spam-Mail sollte dies bestätigen und funktionieren.

Schlusswort

Somit hätten wir meines Erachtens ein nahezu perfektes Mail-System. Mit Dovecot als super schnellem IMAP/POP3 Server, Sieve für benutzerdefinierte, serverseitige Filter-Reglen, Postfix als MTA, Spamassassin mit benutzerdefinierten Regeln zum Spamschutz, ClamAV als zuverlässigen Virescanner und RoundCube als fortschrittliches Webmail. Besser kann ich es mir kaum vorstellen.

Ich hoffe ihr hattet mit dieser Anleitung Erfolg. Für weitere Ergänzungen bin ich natürlich gerne offen und wünsche euch nun viel Vergnügen bei der Umsetzung und eurem neuen Mail-System.

Dank & Grüße!

Bewerte diese Seite

 
 
 
 
 
 
 
Bewerten
 
 
 
 
 
 
7 Bewertungen
94 %
1
5
4.7
 

Veröffentlicht von

Kevin Lieser

Kevin Lieser

Kevin Lieser ist ausgebildeter Mediendesigner und seit 2008 mit der TYPO3 Agentur KA Mediendesign unternehmerisch tätig. Seine Leidenschaften sind gutes Webdesign und die PHP Programmierung. Als App Entwickler und Autor mehrerer TYPO3 Extensions engagiert er sich aktiv für die Weiterentwicklung von Webapplikationen und mobilen Anwendungen.