Workshop: Linux als Mailserver mit XMail

06.04.2004 von STEFAN RUBNER 
Nicht nur als Web- oder Fileserver macht Linux eine gute Figur. Mit Hilfe von XMail wird aus Linux ein universeller Mailserver, der allen Anforderungen gewachsen und einfacher zu konfigurieren ist als Sendmail.

Mit Linux lassen sich nicht nur erstklassige Webserver oder schnelle und zuverlässige Fileserver für Windows-Clients einrichten. Auch als Basis für einen Mailserver bietet sich das Open-Source-Betriebssystem an. Allerdings wird diese Option von vielen Anwendern nicht genutzt, da die bekannteren Mailserver-Pakete wie Sendmail, Postfix und Qmail zwar in den meisten Linux-Distributionen enthalten, trotzdem aber alles andere als einfach zu konfigurieren und vor allem zu verwalten sind.

Eine gute Alternative zu diesen Systemen ist XMail. Dieser von Davide Libenze programmierte Mailserver leistet alles, was für den Betrieb auch in großen Umgebungen notwendig ist, bietet flexible Schnittstellen und lässt sich trotzdem vergleichsweise einfach konfigurieren und verwalten. Zudem ist XMail sowohl für Linux wie für Windows ab NT 4.0 verfügbar, so dass selbst dem Einsatz in gemischten Umgebungen oder einer schrittweisen Migration nichts im Wege steht.

Diesen Artikel und eine ganze Reihe weiterer Praxis-Themen finden Sie auch in unserem neuesten tecCHANNEL-Compact. Dort erfahren Sie nicht nur, wie Sie einen Apache 1.x unfallfrei auf Apache 2 upgraden, sondern unter anderem auch wie Sie einen E-Mail-Server mit dem Freeware-Tool XMail aufsetzen und via SpamAssassin vor unerwünschten Mails schützen. Auf der Heft-CD finden Sie einen kompletten LAMP-Server von SuSE sowie den Intel C++-Compiler für Linux, mit dem Sie Ihre Programme optimal auf Ihre Prozessor-Architektur abgestimmt compilieren können. Der Compiler ist für den Privatgebrauch sogar kostenlos.

Das Leistungsspektrum von XMail

XMail ist ein vollwertiger Mailserver, der via ESMTP Nachrichten von Clients entgegennimmt oder mit anderen Mailservern austauscht. Eintreffende Post für einzelne Nutzer legt er in Postfächern ab, die je nach verwendetem Betriebssystem entweder im Maildir-Format (Linux) oder im Mailbox-Format (Windows) erzeugt werden. Die Übertragung der Mails an die Anwender erfolgt per POP3. IMAP wird von XMail (noch) nicht unterstützt.

Zum Schutz vor Spammern bietet XMail gleich mehrere Optionen. Neben dem Vergleich der Daten des sendenden Systems mit verschiedenen schwarzen Listen lässt sich auch festlegen, von welchen IP-Adressen aus überhaupt E-Mail angenommen wird. Das Verwalten der E-Mail-Accounts für mehrere Domains stellt XMail nicht vor Probleme, Schnittstellen zur Integration externer Programme wie zum Beispiel eines zusätzlichen Spam-Filters sind ebenfalls vorhanden.

Besonders interessant für Anwender, die im Laufe ihrer Internet-Aktivität eine größere Anzahl von Mail-Accounts gesammelt haben, ist die Fähigkeit von XMail, externe POP-Accounts abzurufen und die so gesammelten Nachrichten an lokal definierte Benutzer weiterzuleiten. Das gilt sowohl für die Accounts einzelner Benutzer als auch für die Post eines ganzen Unternehmens. Für jedes externe Postfach erlaubt XMail genaue Einstellungen darüber, wie die empfangene Mail weiterzuleiten ist. Wer per DSL mit automatischer Zwangstrennung ans Internet angeschlossen ist, kann sich ebenfalls freuen: XMail unterstützt auch dynamische DNS-Dienste wie etwa DynDNS.org.

Trotz dieser umfangreichen Funktionen ist XMail aber keineswegs schwer zu installieren. Das liegt zum einen an der extrem logisch aufgebauten, über mehrere Textdateien verteilten Struktur der Konfigurationsdaten. Zum anderen existiert eine Vielzahl von Hilfsprogrammen, die sich die interne Kommandoschnittstelle von XMail zu Nutze machen und so die Arbeit mit XMail erheblich erleichtern.

Die Installation

Die Installation von XMail unter Linux erfolgt am besten über das auf der XMail-Homepage angebotene RPM-Paket. Das gilt auch für Power-User, die Software gerne selbst kompilieren, um das letzte Quäntchen Performance herauszukitzeln. Der Grund ist, dass das RPM-Paket die von XMail verwendeten Pfade gleich richtig erzeugt - eine Arbeit, die andernfalls mühselig von Hand zu erledigen ist. Zur Grundinstallation der Software auf der lokalen Platte reichen drei Befehle auf der Linux-Kommandozeile:

su -
wget http://www.xmailserver.org/xmail-1.17-1.i386.rpm
rpm -Uvh xmail-1.17-1.i386.rpm

Achtung: Der letzte Befehl richtet XMail nicht nur ein, sondern startet auch gleich den Server. Da dieser noch nicht konfiguriert ist, arbeitet er als offenes Relay und könnte daher von Spammern missbraucht werden. Es empfiehlt sich also, XMail möglichst schnell wieder abzuschalten:

killall Xmail

Nun sollten Sie auch das Source-Archiv auf den Rechner holen und entpacken, selbst wenn Sie die Quellen nicht selbst übersetzen möchten. Das Paket enthält nämlich zusätzlich ein Script, das für den automatischen Start des Mailservers beim Hochfahren des Rechners sorgt und auch die manuelle Handhabung von XMail erleichtert. Die Installation ist schnell erledigt:

wget http://www.xmailserver.org/xmail-1.17.tar.gz
tar -xvzf xmail-1.17.tar.gz
cd xmail-1.17
./sysv_inst.sh/

Wer möchte, kann sich nun den Quellcode von XMail selbst übersetzen und die so erzeugten, auf den im Rechner vorhandenen Prozessor optimierten Binärdateien an den richtigen Platz kopieren:

make -f Makefile.lnx
cp CtrlClnt MkUsers XMCrypt XMail /var/MailRoot/bin

Die Konfiguration absichern

Die Arbeitsweise von XMail wird über mehrere Textdateien definiert, die sich alle im Verzeichnis /var/MailRoot finden. Dabei handelt es sich um einfache, durch Tabulatoren getrennte Parameterlisten. Vor dem Bearbeiten der Server-Parameter sollten Sie zunächst dafür sorgen, dass der Server nicht von Spammern genutzt werden kann. Dafür ist die Datei smtprelay.tab zuständig. Die Standardvorgabe ist hier, dass jeder Server XMail als Relay nutzen darf. Um das zu verhindern, ändern Sie den Inhalt wie folgt:

"127.0.0.1" "255.255.255.255"
"192.168.0.100" "255.255.255.255"

Für dieses Beispiel nehmen wir an, dass der XMail-Rechner die IP-Adresse 192.168.0.100 besitzt. Hier müssen Sie entsprechend die IP-Adresse des zur Installation verwendeten Rechners einstellen.

Die Grundkonfiguration des Servers geschieht über die Datei server.tab. Eine funktionsfähige Minimalkonfiguration für die Domain xmailserver.test existiert durch das RPM-Paket bereits. Anstatt diese nun einfach zu ändern, empfiehlt sich eine andere Vorgehensweise. Bei einer Änderung der Domain müssten die notwendigen Verzeichnisstrukturen nämlich manuell erzeugt werden. Dabei kann XMail das auch selbstständig - allerdings nur, wenn Sie die neue Domain über das auf dem Port 6017 verfügbare Kommando-Interface anlegen.

Dieses ist zum Beispiel über das Hilfsprogramm CtrlClnt erreichbar. Doch "dank" der komplexen Befehlsstrukturen ist dieser Weg extrem unkomfortabel.

Verwaltung per Browser einrichten

Eine bessere Lösung ist der Einsatz eines der Web-basierten Verwaltungswerkzeuge für XMail. Ein gutes Beispiel für solch ein Tool ist XPAI von Andreas Klein.

Voraussetzung für dessen Einsatz ist ein auf dem Rechner installierter Webserver. Ist dieser noch nicht eingerichtet, kann das unter SuSE-Linux über die Auswahl der Selektion "Einfacher Webserver mit Apache" in der Paketauswahl erfolgen. Download und Installation von XPAI sind mit diesen drei Befehlen schnell erledigt:

wget http://www.akxak.de/xpai/xpai_113.zip
unzip -qd /srv/www/htdocs/ xpai_113.zip
chmod -R a+rx /srv/www/htdocs/*

Eine Änderung an der XMail-Konfiguration ist jetzt allerdings noch manuell vorzunehmen, bevor es an die komfortable Verwaltung per Browser gehen kann: Sie benötigen einen Account für einen Benutzer mit Verwalterrechten. Dazu geben Sie dessen Namen nebst dem über das XMail-Tool XMCrypt verschlüsselten Passwort in der Datei ctrlaccounts.tab ein. Das Hilfsprogramm XMCrypt findet sich im Verzeichnis /var/MailRoot/bin, als Parameter übergeben Sie ihm lediglich den zu verschlüsselnden Begriff. Um beispielsweise den User xmailadmin mit dem Passwort password für den Zugriff auf die interne Kommandoschnittstelle von XMail freizuschalten, muss ctrlaccounts.tab folgende Einträge enthalten:

"xmailadmin" "15041616120a1701"

XPAI-Superuser

Dieser Benutzer muss nun noch XPAI als Superuser bekannt gemacht werden. Dazu sind einige Variablen in der Datei /srv/www/htdocs/xpai/config.php anzupassen. Für $_SESSION['xpai_user'] und $super_users tragen Sie den in ctrlaccounts.tab definierten Account ein, für $_SESSION['xpai_pwd'] das Passwort im Klartext. Setzen Sie zudem $_SESSION['ip'] auf die IP-Adresse des XMail-Servers. Jetzt können Mail- und Webserver gestartet werden, um die Verwaltung per Browser fortzusetzen:

/etc/init.d/apache start
/etc/init.d/apache start

Die erste Mail-Domain

Nach dem Aufruf der URL <serveradresse>/xpai/ erscheint das Login-Menü von XPAI. Erst nach Eingabe der korrekten Benutzerdaten stellt XPAI die Verwaltungswerkzeuge zur Verfügung. Der erste Arbeitsschritt besteht darin, die eigene Domain anzulegen - etwa meinedomain.de. Neben dem Namen der Domain fragt XPAI hier gleich ein Passwort für das automatisch mit erzeugte Postmaster-Konto ab. Zusätzlich lässt sich für die Domain der Spam-Filter SpamAssassin aktivieren - eine gute Gelegenheit, dieses Tool von der SuSE-CD zu installieren. Die Integration in XMail muss allerdings manuell erfolgen.

Wurde die neue Domain erfolgreich angelegt, kann die Standardvorgabe xmailserver.test bedenkenlos gelöscht werden. Danach geht es an die Anpassung der grundlegenden Konfiguration des Mailservers. Diese verwendet nämlich immer noch die Domain xmailserver.test, was sich über den Menüpunkt "Manage Server Config" jedoch leicht ändern lässt. Alle in der dortigen Übersicht angezeigten Domain-Einträge sind durch die gerade neu erzeugte Domain zu ersetzen. Alle Änderungen schlagen sich sofort in den Konfigurationsdateien nieder, wie ein Blick in die Dateien server.tab, domains.tab und mailusers.tab bestätigt.

User verwalten

Ähnlich einfach geht die Verwaltung der Mail-Benutzer von der Hand. Über die Schaltfläche "Manage Users" lassen sich bestehende Mail-Konten verwalten oder löschen sowie neue Benutzer anlegen. Für jeden neuen Nutzer lässt sich bestimmen, ob dessen Post von SpamAssassin nach unerwünschter Werbung zu durchforsten ist. Wenn diese Option bereits global für die übergeordnete Domain des Users aktiviert wurde, kann das Setzen des Häkchens hier entfallen. Ein redundanter Test auf Spam verbraucht in diesem Fall nur unnötig Ressourcen.

Über die Schaltfläche "Modify User Data" ist nicht nur das dem Anwender maximal zur Verfügung stehende Speichervolumen für Mail und Anhänge einstellbar. Darüber hinaus kann man hier auch persönliche Daten zum Account hinterlegen, das Passwort zurücksetzen und den Mail-Zugriff per IMAP-Protokoll freischalten. Dieser ist derzeit allerdings noch über Dritt-Software zu realisieren.

Nützlich für Anwender, die nicht nur eine persönliche, sondern auch eine funktionsbezogene Mail-Adresse benötigen, ist das via "Manage User Aliases" erreichbare Feature. Hier können Sie für einen Benutzer zusätzliche E-Mail-Adressen definieren - auch über Domains hinweg. So ist es kein Problem, eintreffende Post für die Adresse marketing@anderedomain.de an den Account testuser@meinedomain.de zuzustellen.

Multi-Domain-Setup

Auch bei der Verwaltung weiterer Domains zeigt sich XMail flexibel. Eine Möglichkeit ist, zusätzliche Domains über die Schaltfläche "Manage Domain Aliases" als Alias einer existierenden Domain zu definieren. In diesem Fall behandelt XMail eintreffende Mail für testuser@anderedomain.de so, als wäre sie an testuser@meinedomain.de adressiert. Praktisch ist diese Funktion für Besitzer mehrerer Domains, hinter denen sich jeweils die gleiche Personengruppe verbirgt.

Ebenso selbstverständlich lassen sich auch mehrere komplett getrennt verwaltete Domains mit jeweils eigenem Benutzerkreis definieren. Dabei ist lediglich zu berücksichtigen, dass die Anwender beim Abholen ihrer Post stets den Benutzernamen inklusive Domain angeben müssen. Anstatt also einfach "testuser" als User-Namen im Mail-Programm zu definieren, ist hier die vollständige Angabe von "testuser@meinedomain.de" oder eben "testuser@anderedomain.de" für unterschiedliche Anwender in getrennt verwalteten Domains erforderlich.

XMail als Mail-Sammler

Besonders interessant für Anwender, die im Lauf ihrer Online-Geschichte mehrere E-Mail-Accounts erworben haben, ist der in XMail integrierte Mail-Sammler. Über die Schaltfläche "Manage POP3 Link" in XPAI lassen sich die Daten von POP3-Accounts definieren, die XMail automatisch nach neuer Mail absucht. Dabei unterstützt XMail nicht nur die Übertragung des Passworts im Klartext, sondern auch das modernere APOP-Verfahren.

Allerdings stößt XPAI hier an seine Grenzen: Es ordnet die per POP3 vom Provider geholten Nachrichten immer einem bestimmten Anwender zu. XMail ist eigentlich wesentlich flexibler und gestattet auch die automatisierte Identifizierung des richtigen Nachrichtenempfängers sowie eine selbstständige Anpassung der Empfänger-Domain.

Angenommen, die Mail für die gesamte Domain meinedomain.com läuft in einem einzigen Postfach bei einem Provider auf. Dann gestattet XMail, diese abzuholen und anhand des Namens vor der Domain zu entscheiden, in welches lokale Postfach die Nachrichten zugestellt werden. Genau diese Funktion lässt sich mit XPAI jedoch nicht erreichen - Handarbeit ist angesagt.

Mails für eine ganze Domain abholen

Am einfachsten ist es, zunächst mit XPAI einen POP3-Link für einen lokalen User einzurichten. Dies erzeugt einen Eintrag in der Datei pop3links.tab im XMail-Verzeichnis, der anschließend leicht anzupassen ist.

Ein Beispiel: Mail für die Domain altedomain.de läuft beim Provider xyz-mail.com auf, und wird über den Benutzer-Account mail0815 abgeholt. In diesem Fall wählt man zunächst einen in XMail bereits definierten Benutzereintrag und legt für diesen einen POP3-Link an. Für unser Beispiel verwenden wir wieder testuser@meinedomain.de. Die von XPAI erzeugte Konfigurationszeile in pop3links.tabt sieht so aus:

"meinedomain.de" "testuser" "mail.xyz-mail.de" "mail0815" "15041616120a1701" "CLR"

Diese Einstellung würde bewirken, dass alle Mails für den Empfänger mail0815@mail.xyz-mail.de an das Postfach testuser@meinedomain.de zugestellt wird. Damit stellen sich gleich zwei Probleme ein. Zum einen wird über dieses Postfach keine Mail für die Domain mail.xyz-mail.de empfangen, sondern für altedomain.de, XMail lehnt die auf diesem Weg eingehende Mail also kategorisch ab, da sie für die falsche Domain ist. Und selbst wenn XMail die Nachrichten akzeptiert - beispielsweise auf Grund einer vorhandenen Alias-Domain - landet die gesamte Post im Postfach des Benutzers "testuser". Um beide Fliegen mit einer Klappe zu schlagen, genügt es, die obige Zeile wie folgt abzuändern:

"?meinedomain.de,altedomain.de" "testuser" "mail.xyz-mail.de" "mail0815" "15041616120a1701" "CLR"

Damit wird XMail angewiesen, in den Headern der über den POP3-Link empfangenen Mails nach Empfängeradressen in der Domain altedomain.de zu suchen. Von den so gefundenen Adressen wird der Domain-Teil entfernt und durch @meinedomain.de ersetzt. So wird aus anderer_user@altedomain.de ganz einfach anderer_user@meinedomain.de. Die erzeugte Nachricht leitet XMail dann an seine normale Mail-Verarbeitung weiter. Ist für den Anwender anderer_user@meinedomain.de ein Account vorhanden, erhält er die für ihn bestimmte Post.

Fazit

XMail ist ein leistungsfähiger Mailserver, der auch komplexen Ansprüchen gerecht wird. Einzig die noch fehlende Zugriffsmöglichkeit per IMAP kann man der Software ankreiden. Ansonsten eignet sich XMail für die unterschiedlichsten Einsatzgebiete - angefangen vom Privatanwender mit eigener Domain bis hin zu internationalen Unternehmen mit mehreren Mailservern. Für letzteren Fall ist ein tieferer Einstieg in die Materie erforderlich. (mha)