Login
Newsletter
Werbung

So, 24. Mai 2009, 00:00

Mailserver auf Debian mit IMAP, Smarthost und Filter

Die Einrichtung eines Mailservers auf Debian mit IMAP, Smarthost und Filter ist eine umfangreiche Aufgabe.

Wir wollen uns für den Hausgebrauch einen kleinen Mailserver einrichten, der für uns einige Aufgaben erledigt. Was wollen wir eigentlich mit unserem Mailserver? Wir haben einige Mailboxen extern bei unseren Internetprovidern, Webdiensten oder eigene Webauftritte extern liegen. Diese Mails rufen wir normalerweise mit einem Mailprogramm auf unserem Rechner ab. Haben wir mehrere Rechner, so muss dies für jede Maschine mühevoll eingerichtet werden. Hier kommt nun unser kleiner Server ins Spiel, der bei uns daheim steht. Hierzu muss dieser natürlich ständig mit dem Internet verbunden sein, wodurch hier definitiv nur eine echte Flatrate in Frage kommt. Alles andere wäre nicht bezahlbar. Zudem wollen wir von extern mit einem Webmailer unsere Mails einsehen können und auch versenden. Dies setzt voraus, dass auf unserem Webserver ein Apache läuft. Entsprechende Sicherheitsmaßnahmen wie Firewall und einen IP-Filter wie Fail2ban sollten natürlich aktiviert sein. Als Basis verwende ich ein Linux Debian 5 »Lenny«.

Wir werden in diesem Tutorial lernen, wie wir E-Mails von unseren externen Mailboxen in einem kurzen Intervall regelmäßig abrufen, diese auf Viren und Spam überprüfen, dann über ein Verteilsystem in unsere lokalen Mailboxen vorsortieren und schon nach jeweiligen Inhalten (Werbung, Privates etc.) aufteilen können, ohne dass entsprechende Filterregeln von lokalen Mailprogrammen erst bemüht werden müssen.

Desweiteren müssen wir unserem Server beibringen, auch Mails über einen externen Mailserver (Smarthost) zu versenden, und wir richten uns einen kleinen Webmailer ein.

Den Weg einer Mail auf unserem Server habe ich einmal über ein Schema verdeutlicht, das uns zeigen soll, welche Bausteine wir benötigen, um eine Mail bei uns daheim sauber in die Kiste zu bringen:

Mailserver-Schema

Pierre Kretschmer

Mailserver-Schema

Hier also einmal der Ablauf: Eine Mail landet auf dem Server unseres Providers und liegt dort in seiner Mailbox. Sie wartet darauf, dass wir diese zunächst mit getmail abrufen. Hier wird bereits die Mail mit Spamassassin geprüft, ob es sich um Spam handelt. Die Mail wird dann an Procmail übergeben, der zum einen entscheidet, in welches Postfach und in welchen Ordner des Postfachs die Mail geht. Hierbei wird noch überprüft, ob die Mails frei von Viren sind. Dazu wird das Virenprüfprogramm ClamAV mit Clamassassin verwendet. Herr der Mailboxen und der Verzeichnisse ist der IMAP-Server Dovecot, der allen Mailprogrammen die Verzeichnisse im Netz intern und extern zur Verfügung stellt. Wer dann von außerhalb über einen Browser auf seine Mails zugreifen möchte, der kann das dann mit einem Webmailer auf dem Webserver Apache bewerkstelligen. Als Webmailer nehmen wir Squirrelmail, der unsere Schnittstelle nach außen darstellt. Es kann natürlich sein, dass man über den Webmailer eine Mail versenden will. Das übernimmt dann der MTA (Mail Transport Agent) Exim4, der diese Mail dann an einen externen SMTP-Server des Providers (Smarthost) weitergibt, der dann dafür sorgt, dass die Mail auch ihren Empfänger erreicht.

Installation und Konfiguration von Getmail

Wir installieren zuerst getmail mit apt-get install getmail4. Wir legen nun eine neuen User getmail an, der für uns in Zukunft die Sache erledigen wird: adduser getmail.

Vergeben Sie hier ein Passwort. Da es kein Standarduser sein soll, muss er ggf. vom FTP-Zugriff ausgeschlossen werden. Das erledigt man, indem man den User getmail in die Datei /etc/ftpusers einträgt. Nach einer Änderung ist proftpd neu zu starten: /etc/init.d/proftpd restart

Gleiches machen wir nun mit einem User postfach1. Den Namen kann man frei wählen, denn das werden die Mailnutzer werden, die dann via IMAP ihre Mails abrufen können.

Wir wollen auch nicht, dass eventuell über ssh auf die Mailboxen zugegriffen werden kann. Man kann das Anmelden (auch lokal am Rechner) unterbinden, indem man in der Datei /etc/passwd für den jeweiligen Benutzer am Zeilenende das /bin/bash in /bin/false abändert.

Um auch ganz sicher zu sein, dass das richtig konfiguriert ist, prüft man, dass keine Anmeldung an FTP und SSH möglich ist.

Nun wechseln wir in das Verzeichnis /home/getmail und legen ein neues verstecktes Verzeichnis an:

mkdir .getmail

Dort erstellen wir eine Konfigurationsdatei .getmail/mailbox1.conf mit folgenden Inhalt (ohne die mit # beginnenden Kommentare):

[options]
verbose = 0
delete = true
# true= mails werden auf Server gelöscht; false= Mails werden nicht gelöscht
read_all = false
# true= alle Mails werden abgeholt; false= nur neue Mails werden abgeholt
message_log = ~/.getmail/mailbox1.log
# Fehler beim Abholen werden in die Logdatei mailbox1 geschrieben
[retriever]
type = SimplePOP3Retriever
server = mail.ihrprovider.de
# Die Adresse des Mailservers des Providers
username = username
# Der Username des Mailservers
password = passwort
# Passwort, Achtung, steht im Klartext hier
[destination]
type = MDA_external
# Das sagt aus, dass ein externes Programm die Mails übernimmt
path = /usr/bin/procmail
# Procmail nimmt alles in die Hand
arguments = ("-dpostfach1", )
# Der Nutzer postfach1 bekommt die Mails überstellt

Wenn Sie mehrere externe Mailboxen besitzen, legen Sie für jede Mailbox eine eigene Konfigurationsdatei an. Benennen Sie jede eindeutig, damit Sie diese später auseinanderhalten können. Zudem legen Sie in jeder Datei fest, welcher Nutzer die Mails bekommen soll. Das wird im Bereich »arguments = ("-dxyz", )« festgelegt. xyz ist der jeweilige Nutzer, der die Mails bekommen soll.

Damit nur getmail die Datei lesen darf, ändern Sie die Zugriffsrechte wie folgt

cd /home/getmail
chown getmail:getmail -R .getmail
chmod 640 .getmail/*

Im Grunde haben wir nun unseren kleinen Daemon schon fertig, der später regelmäßig all unsere Mailboxen nach neuen E-Mails abklappert. Falls ein Firewall aktiv ist, muss Port 110 nach außen offen sein.

Pro-Linux
Pro-Linux @Facebook
Neue Nachrichten
Werbung