Rheinwerk Computing < openbook > Rheinwerk Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger.

Inhaltsverzeichnis
Vorwort
1 Einleitung
TEIL I: Einstieg in Linux
2 Die Installation
3 Erste Schritte
4 Linux als Workstation für Einsteiger
TEIL II: Grundlagen
5 Kernel
6 Grundlagen aus Anwendersicht
TEIL III: Die Shell
7 Die Shell
8 Reguläre Ausdrücke
9 Konsolentools
10 Die Editoren
11 Shellskriptprogrammierung mit der bash
12 Die C-Shell
TEIL IV: System- & Netzwerkadministration
13 Benutzerverwaltung
14 Grundlegende Verwaltungsaufgaben
15 Netzwerkgrundlagen
16 Anwendersoftware für das Netzwerk
17 Netzwerkdienste
18 Mailserver unter Linux
19 LAMP & Co.
20 DNS-Server
21 Secure Shell
TEIL V: Die grafische Oberfläche
22 Die grafische Oberfläche
23 Window-Manager und Desktops
24 X11-Programme
25 Multimedia und Spiele
TEIL VI: Systeminterna
26 Prozesse und IPC
27 Bootstrap und Shutdown
28 Dateisysteme
29 Virtualisierung und Emulatoren
TEIL VII: Programmierung und Sicherheit
30 Softwareentwicklung
31 Crashkurs in C und Perl
32 Einführung in Computersicherheit
33 Netzwerksicherheit überwachen
TEIL VIII: Anhang
A Lösungen zu den einzelnen Aufgaben
B Kommandoreferenz
C X11-InputDevices
D MBR
E Buch-DVDs
F Glossar
G Literatur
Stichwort
Ihre Meinung?

Spacer
Linux von Johannes Plötner, Steffen Wendzel
Das umfassende Handbuch
Buch: Linux

Linux
Rheinwerk Computing
1282 S., 5., aktualisierte Auflage 2012, geb., mit 2 DVDs
49,90 Euro, ISBN 978-3-8362-1822-1
Pfeil 18 Mailserver unter Linux
Pfeil 18.1 Mailserver in Theorie und Praxis
Pfeil 18.1.1 Funktionsweise von Internet-Mail
Pfeil 18.1.2 Virenschutz
Pfeil 18.1.3 Spamschutz
Pfeil 18.2 SMTP-Server mit Exim
Pfeil 18.2.1 Die Exim-Philosophie
Pfeil 18.2.2 Exim installieren und konfigurieren
Pfeil 18.2.3 Die Arbeit mit Exim-Tools
Pfeil 18.3 POP3/IMAP-Server mit Courier
Pfeil 18.4 Zusammenfassung

Rheinwerk Computing - Zum Seitenanfang

18.2 SMTP-Server mit EximZur nächsten Überschrift

Im Folgenden wollen wir beschreiben, wie ein Exim-SMTP-Server (siehe auch http://www.exim.org) arbeitet und was man beim eigenen Betrieb beachten sollte. Dabei stellt sich natürlich die Frage: Warum Exim und nicht Postfix, Sendmail oder ein anderer Mailserver? Bis zu einem gewissen Grad gibt es gute Argumente für Exim – der Server gilt beispielsweise als sehr flexibel und ist auch der Standard-Mailserver vieler Distributionen --, aber ab einem gewissen Punkt spielt natürlich auch der persönliche Geschmack eine Rolle.


Rheinwerk Computing - Zum Seitenanfang

18.2.1 Die Exim-PhilosophieZur nächsten ÜberschriftZur vorigen Überschrift

Exim ist dafür ausgelegt, als Mailserver auf permanent am Internet angeschlossenen Systemen zu arbeiten. Exim lauscht dabei an Port 25 auf eingehende Mails, um diese

dann weiterzuverarbeiten.

Access Control Lists – ACLs

Bevor eine Mail jedoch überhaupt angenommen wird, können theoretisch nach jedem Schritt im SMTP-Protokoll sogenannte Access Control Lists (ACLs) aktiv sein. Diese ACLs definieren Regeln, die testen, ob eine Mail überhaupt angenommen werden soll. Der Sinn dieser Aktion ist es, kein offenes Relay zu betreiben, bei dem jeder Absender an beliebige Empfänger im Internet senden kann.

RCPT TO

Meist greift mindestens eine ACL nach dem Kommando RCPT TO im SMTP-Protokoll und prüft Folgendes:

  1. Lokaler Empfänger
    Ist die Mail, wenn sie aus dem Internet kommt, für einen lokalen Empfänger bestimmt?
  2. Empfänger im Internet
    Ist der Empfänger im Internet: Kommt die Mail von einem lokalen Absender (der sich beispielsweise über Benutzername und Passwort authentifiziert hat)?

Andernfalls wird die Mail oft verworfen. Täte man das nicht, könnten Spammer Ihren Mailserver zum Spam-Versand nutzen, was schnell sehr unangenehm werden kann – und zwar spätestens dann, wenn die eigene IP-Adresse auf diversen Blacklists gelandet ist und kein Mailserver mehr Ihre regulären Nicht-Spam-Mails annimmt.

Auch kann man Greylisting über eine ACL nach dem RCPT-TO-Kommando und die Spam-Erkennung zur Versandzeit über eine ACL nach dem DATA-Kommando abbilden. [Fn. Als einer der Hauptvorteile von exim wird im Übrigen die Möglichkeit angesehen, in diesen ACLs exzessiven Gebrauch von (gern auch ausgefallenen) SQL-Statements zu machen.]

Spooling

Nach Annahme einer Message durch Exim wird sie im Spooling-Verzeichnis abgelegt. Die Mail wird dazu in zwei Dateien aufgespaltet, um den Header und den eigentlichen Mail-Inhalt zu trennen. [Fn. Dies geschieht aus Effizienzgründen: Die Headerdaten werden von exim für interne Zwecke benötigt und müssen unter Umständen öfter gelesen werden als der eigentliche Mail-Inhalt.]

Die Dateinamen im Spooling-Verzeichnis sind dabei aus der Message-ID abgeleitet, die exim jeder E-Mail zuteilt. Eine Message-ID sieht beispielsweise so aus: 1IRfRs-00023e-6K. Im entsprechenden Spooling-Verzeichnis findet man dann die Dateien 1IRfRs-00023e-6K-H und 1IRfRs-00023e-6K-D mit dem Mailheader beziehungsweise den eigentlichen Daten.

Das Spooling-Verzeichnis selbst ist in der Regel in mehrere Unterverzeichnisse aufgeteilt. Hintergrund dieser Aufteilung sind Performancegedanken: Eine große Queue lässt sich leichter indizieren, wenn sie in kleine Teile aufgebrochen ist.

Routers und Transports

Die eigentliche Auslieferung übernehmen Routers und Transports. Kurz gesagt legt ein Router anhand der Empfängeradresse fest, wie eine Zustellung erfolgen soll – ein Transport führt diese Auslieferung schließlich durch.

In der Exim-Konfiguration sind in der Regel mehrere Router konfiguriert, die alle nacheinander für eine Mail durchlaufen werden. Einer der Router wird schließlich die Empfängeradresse akzeptieren und sie einem Transport zuweisen. Alternativ kann der Router die Adresse auch »bouncen« lassen, also die Zustellung als fehlgeschlagen definieren und den Absender per E-Mail über die gescheiterte Zustellung informieren.

Der vom Router gewählte Transport stellt schließlich die Mail zu: beispielsweise lokal in die Mailbox des Users oder auch an einen entfernten Server, wenn für diesen relayt wird.

Wenn eine Nachricht mehrere Empfänger hat, so werden alle Router für jeden Empfänger einzeln durchlaufen. Somit kann es durchaus vorkommen, dass dieselbe Nachricht über unterschiedliche Transports verschickt wird – nämlich beispielsweise an einen lokalen und an einen entfernten Empfänger.


Rheinwerk Computing - Zum Seitenanfang

18.2.2 Exim installieren und konfigurierenZur nächsten ÜberschriftZur vorigen Überschrift

Für dieses Buch ist die eigentliche Konfiguration des Exim-Servers eher weniger interessant. Zum einen kommt man auch mit einer weitgehenden Standardkonfiguration sehr weit und kann bereits mit dieser eigene Server im Internet betreiben. Zum anderen ist jedoch die Syntax von Exim so komplex, dass man darüber ein eigenes Buch schreiben müsste, wenn man einigermaßen ins Detail gehen wollte. Daher werden wir uns im Folgenden vor allem mit Optionen beschäftigen, die eine Standardkonfiguration hinreichend an die eigenen Bedürfnisse anpassen.

Der Mailname

Eine der wichtigsten Einstellungen ist der sogenannte Mailname. Dieser Hostname wird vom versendenden SMTP-Server im HELO- beziehungsweise EHLO-Kommando genutzt. Normalerweise nutzt Exim dafür den normalen Hostnamen des Systems, jedoch gibt es Fälle, wo man einen anderen Mailnamen verwenden möchte. Dann kann man den primären Hostnamen auch wie folgt setzen:

Listing 18.5 Der Mailname

primary_hostname = foo.example.com

Diese Änderung ist vor allem bei gemieteten Servern interessant, die standardmäßig einen vom Provider vorgegebenen Namen tragen, mit dem sich der eigene Mailserver aber nicht unbedingt vorstellen sollte.

Lokale Domains

Lokale Domains sind alle, für die der eigene Mailserver E-Mails annimmt. In der Konfigurationsdatei wird diese Einstellung als einfache Liste von Domains definiert, auf die dann in den entsprechenden ACLs zugegriffen wird:

Listing 18.6 local_domains sehr lokal

domainlist local_domains = @

Das @ steht in diesem Fall wieder für den lokalen Hostnamen. Möchte man aber nicht nur E-Mail-Adressen wie user@foo.example.com, sondern auch die »schönere« Form user@example.com verwenden, muss man dem Exim an dieser Stelle mitteilen, dass er auch für diese Domain Mails annehmen soll:

Listing 18.7 local_domains etwas globaler

domainlist local_domains = @ : example.com

Weitere Domains, für die der Server E-Mails annehmen soll, müssen durch einen Doppelpunkt abgetrennt an die Liste angefügt werden.

Relaying

Eine andere Variable beschreibt Domains, für die E-Mails zwar auch akzeptiert werden sollen, die jedoch nicht zu den lokalen Domains zählen, sondern von denen an einen anderen Server weitergeleitet werden soll. Zwar spielt es für den SMTP-Protokollablauf keine Rolle, ob eine Domain in local_domains oder relay_to_domains liegt, da in beiden Fällen Mails für diese Domains angenommen werden, jedoch kommen die Variablen in den ACLs an unterschiedlichen Stellen zum Einsatz, und folglich werden entsprechende E-Mails auch unterschiedlich behandelt. [Fn. ... nämlich entweder lokal zugestellt oder an einen anderen Rechner weitergesendet.]

Listing 18.8 relay_to_domains

domainlist relay_to_domains =

Eine weitere das Relaying betreffende Einstellung ist die Liste relay_from_hosts. Hier werden alle IP-Adressen eingetragen, von denen aus Mails an das ganze Internet akzeptiert werden.

Normalerweise steht hier nur localhost, aber wenn ein eigenes LAN Zugriff auf den Server hat, kann auch dieses hier gelistet werden:

Listing 18.9 relay_from_hosts

hostlist relay_from_hosts = 127.0.0.1

Wie Sie vielleicht bemerkt haben, sind wir bisher nur auf Variablen eingegangen. Je nach Exim-Konfiguration können diese Variablen zwar theoretisch anders heißen oder ganz fehlen, jedoch sind diese rudimentären Listen in so ziemlich jeder Exim-Konfiguration enthalten und damit durchaus relevant.

Weitere Punkte

Einige weitere wichtige Punkte, die Sie bei einer Installation beachten sollten, haben wir in der folgenden Auflistung zusammengefasst:

  • Richtiger lokaler Transport
    Je nachdem, welchen POP3/IMAP-Server Sie verwenden, sollten Sie den richtigen lokalen Transport wählen. Exim kann Mails unter anderem im MBox- [Fn. Erzeugt eine große Datei, in der alle Mails stehen. Dieses Format ist nur für POP3 effizient, da bei diesem Protokoll das gesamte Postfach komplett abgeholt wird und anschließend alle Mails vom Server gelöscht werden.] oder im Maildir-Format [Fn. Dieses Format hat meist eine eigene Verzeichnisstruktur im Home-Verzeichnis des Users, die Unterordner usw. abbilden kann und daher für IMAP-Postfächer geeignet ist.] ablegen.
  • Richtige Listen-IP(s)
    Achten Sie darauf, dass Ihr Mailserver auch an den richtigen IP-Adressen auf eingehende Mails horcht. Bei manchen Distributionen bindet Exim, wenn er »frisch« aus dem Paket kommt, nur auf localhost.
  • Authenticators
    Wenn Sie Ihren Server im Internet betreiben, werden Sie höchstwahrscheinlich von dynamischen IP-Adressen über Ihren Mailserver versenden wollen. Da Sie in einem solchen Setup nicht einfach alle IP-Adressen per relay_from_hosts freischalten können, müssen Sie Authenticators definieren. Dann können Sie sich über verschiedene Verfahren über SMTP mit Benutzernamen und Passwort authentifizieren und dürfen anschließend relayen.
  • Kein Open Relay
    Man kann es nicht oft genug betonen: Bitte überprüfen Sie vor einer Inbetriebnahme den Server gründlich daraufhin, ob er nicht vielleicht doch Spammern hilft, ihre vermeintlich potenzsteigernden Nachrichten unters Volk zu bringen. Dabei können Sie einerseits selbst »SMTP« per telnet mit Ihrem Server sprechen, andererseits gibt es sehr viele Webseiten, die solche Tests durchführen. [Fn. Googeln Sie einfach einmal nach »Open Relay Test«.]

Rheinwerk Computing - Zum Seitenanfang

18.2.3 Die Arbeit mit Exim-ToolsZur nächsten ÜberschriftZur vorigen Überschrift

Es gibt einige typische Anwendungsfälle, mit denen Sie bei der Administration eines Mailservers früher oder später konfrontiert werden. Die wichtigsten finden Sie in den folgenden Abschnitten beschrieben.

Logfiles

Das wichtigste Exim-Logfile ist das mainlog, das Sie beispielsweise unter /var/log/ exim/mainlog finden. Im Mainlog sehen Sie alle eingehenden Verbindungsversuche sowie wichtige Informationen zur Mail-Verarbeitung. Anhand dieser Informationen können auftretende Probleme recht gut debuggt werden.

Listing 18.10 Auszug aus dem mainlog

2007-09-04 15:21:35 1ISYLX-0001Rm-N3 <= johannes@ploetner-it.de
H=fw0-frankfurt.de.clara.net ([192.168.0.104]) [212.82.224.202]
P=esmtpsa X=TLS-1.0:RSA_ARCFOUR_MD5:16 DN=""
A=login_server:jploetner S=1260
id=1188912188.4001.10.camel@laptop.pit
2007-09-04 15:21:36 1ISYLX-0001Rm-N3 => swendzel
<steffen@ploetner-it.de> R=local_user T=maildir_home
2007-09-04 15:21:47 1ISYLX-0001Rm-N3 ==
judith.stevens@galileo-press.de
R=dnslookup T=remote_smtp defer (-44): SMTP error from
remote mail server after RCPT TO:<judith.stevens@galileo-press.de>:
host mail.galileo-press.de [194.8.219.19]: 451 Please try again
2007-09-04 16:05:25 1ISYLX-0001Rm-N3 =>
judith.stevens@galileo-press.de
R=dnslookup T=remote_smtp H=mail.galileo-press.de [194.8.219.19]
X=TLS-1.0:RSA_AES_256_CBC_SHA1:32 DN="C=XX,ST=XX,L=XX,O=XX,OU=XX,
CN=mail.galileo-press.de,EMAIL=x.x"
2007-09-04 16:05:25 1ISYLX-0001Rm-N3 Completed

In diesem Beispiel erkennen Sie folgenden Ablauf:

  1. Eingang der Mail
    Der Mailserver empfängt (<=) eine E-Mail mit johannes@ploetner-it.de als Absender von der IP-Adresse 212.82.224.202. Die Verbindung ist mittels TLS verschlüsselt, und der Authenticator login_server wird mit dem Usernamen jploetner benutzt. Die Mail hat die Message-ID 1ISYLX-0001Rm-N3.
  2. Erster Empfänger
    Der erste Empfänger dieser Mail (steffen@ploetner-it.de) ist ein lokaler User. Die Mail wird unter Verwendung des Routers local_user und des Transports maildir_home zugestellt.
  3. Zweiter Empfänger
    Die Auslieferung an den zweiten Empfänger der Mail ist beim ersten Versuch fehlgeschlagen: Wir bekommen ein 451 Please try again als Antwort vom Server, also einen temporären Fehler. Beim zweiten Auslieferungsversuch nimmt der Mailserver die Mail jedoch an. [Fn. Und nebenbei ist das ein hübsches Beispiel für Greylisting.]
  4. Completed
    Damit ist die Mail an alle Empfänger ausgeliefert und kann somit aus der Queue gelöscht werden.

Arbeiten mit der Queue – mailq

Um sich den Inhalt der Queue und damit alle aktuell noch nicht ausgelieferten Mails anzeigen zu lassen, gibt es den Befehl mailq:

Listing 18.11 Der Befehl mailq

$ mailq
[...]
90m 19K 1ISaNw-00006x-Rd <bar@super-freemailer.com>
foo@example.com
[...]

Die wichtigsten Informationen sind hier die Message-ID sowie der Absender (bar@ super-freemailer.com) und der Empfänger (foo@example.com). Bei kleinen Mailservern sollte die Queue allerdings die meiste Zeit leer sein.

Queuerunner & Instant Delivery

Sollten trotzdem einmal große Queues (das ist die Warteschlange für Mails) auftreten, kann man einige Queuerunner anstoßen. Ein Queuerunner versucht, die aktuell in der Queue gespeicherten Mails auszuliefern:

Listing 18.12 Queuerunner

# exim4 -qf &
# exim4 -qf &
# exim4 -qf &
# exim4 -qf &

Da ein Queuerunner immer nur eine Mail zu einem bestimmten Zeitpunkt ausliefern will, ist es kein Problem, mehrere Queuerunner gleichzeitig zu starten, um die Auslieferungsgeschwindigkeit noch einmal zu erhöhen. Alternativ kann man aber auch eine bestimmte E-Mail über die Message-ID sofort ausliefern lassen:

Listing 18.13 Instant Delivery

# exim4 -M 1ISaNw-00006x-Rd

Die /etc/aliases

Ein weiterer wichtiger Bestandteil in der Arbeit mit einem Mailserver ist die Verwaltung der Aliase. Normalerweise wird eine einkommende E-Mail user@host.com – sofern host.com eine local_domain ist – dem Benutzer user zugestellt. Wenn man nun aber eine Adresse wie hans.mueller an den Account hans zustellen will, kommt die Datei /etc/aliases ins Spiel.

Die /etc/aliases-Datei hat ein einfaches Format: Links steht die »Quelle«, gefolgt von einem Doppelpunkt, rechts stehen ein oder mehrere, gegebenenfalls mit Kommas getrennte »Ziele«. Für den ominösen Hans Müller müsste man also eine Zeile wie die folgende einfügen:

Listing 18.14 Ein typischer Eintrag in der Datei /etc/aliases

hans.mueller:   hans

Jedoch können über die Aliase auch andere Weiterleitungsziele gewählt werden:

  • E-Mail-Adresse
    Anstelle eines lokalen Users kann man als Empfänger auch eine entfernte E-Mail-Adresse angeben. Auf diese Weise lassen sich globale Weiterleitungen einrichten.
  • Pipe
    Man kann als Ziel auch einfach eine Pipe zu einem Programm eintragen, das die Mail dann weiterverarbeitet. Auch eine Pipe nach /dev/null ist möglich. [Fn. Für eine Pipe muss aber prinzipiell ein Transport in der Exim-Konfiguration definiert sein – das ist leider nicht bei allen Default-Konfigurationen so. Speziell bei Debian (und seinen Abkömmlingen) müssen Sie das Paket exim-daemon-heavy installieren.]

Im Übrigen hat die Datei /etc/aliases ihren eigenen Router, der die Datei auswertet und gegebenenfalls den richtigen Transport aufruft.

Neue Konfigurationen testen

Sollten Sie doch einmal an Ihrer Konfiguration schrauben, bietet es sich, gerade bei produktiven Systemen, an, die neue Konfigurationsdatei vor dem Einsatz zu testen. Dabei helfen folgende Optionen, die man dem Exim-Programm übergeben kann:

  • -C DATEI
    Mit dieser Option lässt sich Exim eine alternative Konfigurationsdatei angeben. Da es wenig Sinn macht, eine bereits »live« gegangene Konfiguration im Nachhinein zu testen, sollte man diese Option immer mit einer der beiden folgenden Optionen kombinieren.
  • -bV
    Überprüft die Konfigurationsdatei auf Fehler.
  • -bh IP
    Mit dieser sehr nützlichen Option kann man eine SMTP-Sitzung simulieren, die von der angegebenen IP-Adresse kommt. Dazu gibt man wie bei einem telnet auf Port 25 alle SMTP-Befehle ein und sieht die genaue Abarbeitung der ACLs usw. in der Ausgabe.


Ihr Kommentar

Wie hat Ihnen das <openbook> gefallen? Wir freuen uns immer über Ihre freundlichen und kritischen Rückmeldungen.

>> Zum Feedback-Formular
<< zurück
 Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen?
Ihre Meinung

 Buchempfehlungen
Zum Katalog: Linux Handbuch






 Linux Handbuch


Zum Katalog: Linux Server






 Linux Server


Zum Katalog: Raspberry Pi






 Raspberry Pi


Zum Katalog: Ubuntu 14.04 LTS






 Ubuntu 14.04 LTS


Zum Katalog: Roboter bauen mit Arduino






 Roboter bauen
 mit Arduino


 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
InfoInfo




Copyright © Rheinwerk Verlag GmbH 2012
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


Nutzungsbestimmungen | Datenschutz | Impressum

Rheinwerk Verlag GmbH, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, service@rheinwerk-verlag.de