Im Katalog suchen

Linux - Wegweiser für Netzwerker

Online-Version

Copyright © 2001 by O'Reilly Verlag GmbH & Co.KG

Bitte denken Sie daran: Sie dürfen zwar die Online-Version ausdrucken, aber diesen Druck nicht fotokopieren oder verkaufen. 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.

Wünschen Sie mehr Informationen zu der gedruckten Version des Buches Linux - Wegweiser für Netzwerker oder wollen Sie es bestellen, dann klicken Sie bitte hier.


vorheriges Kapitel Inhaltsverzeichnis Stichwortverzeichnis nächstes Kapitel



Routing und die Zustellung von Nachrichten

Exim teilt die Mail-Zustellung in drei Aufgabengebiete ein: Routing, Vermittlung und Transport. Für jedes dieser Gebiete existiert eine Anzahl von Codemodulen, und jedes kann separat konfiguriert werden. Für gewöhnlich werden in der Konfigurationsdatei eine Reihe verschiedener Router, Vermittler und Transporte eingerichtet.

Router lösen Remote-Adressen auf, ermitteln, an welchen Host eine Nachricht gesendet werden soll und welcher Transport dafür genutzt werden soll. In Hosts, die mit dem Internet verbunden sind, existiert oft nur ein Router, der die Namensauflösung mittels DNS durchführt. Alternativ dazu kann ein Router abgestellt sein, der sich um die Adressen kümmert, die für Hosts in einem lokalen LAN bestimmt sind, während ein zweiter Router die verbleibenden Adressen an einen einzelnen Smart Host sendet; das kann z.B. ein Mail-Server eines Internet Service Providers sein.

Lokale Adressen werden an die Vermittler (engl. director) übergeben, von denen es normalerweise gleich mehrere gibt. Sie kümmern sich um Aliasing (Resolvierung von Aliasnamen) und Forwarding (Weiterleitung von Mails), aber auch um die Identifizierung lokaler Mailboxen. Mailing-Listen können von Aliasing- oder Forwarding-Vermittlern verarbeitet werden. Wird eine Adresse einem Aliasing oder Forwarding unterzogen, werden alle erzeugten Adressen unabhängig voneinander und je nach Bedarf von den Routern oder den Vermittlern weiterverarbeitet. Der bei weitem am häufigsten vorkommende Fall ist die Zustellung an eine Mailbox. Nachrichten können aber auch über eine Pipe an ein Kommando übergeben oder an eine andere Datei als die Standard-Mailbox angehängt werden.

Ein Transport ist verantwortlich für die Implementierung einer Zustellungsmethode. Damit ist zum Beispiel das Versenden einer Nachricht über eine SMTP-Verbindung oder ihre Eintragung in eine bestimmte Mailbox gemeint. Die Router und Vermittler entscheiden selbst, welcher Transport für welche Empfängeradresse genommen wird. Falls ein Transport fehlschlägt, erzeugt Exim entweder eine Bounce Message oder verzögert die Zustellung für einen späteren Wiederholungsversuch.

Bei Exim haben Sie viele Freiheiten, solche Aufgaben zu konfigurieren. Für jede Aufgabe gibt es eine Anzahl von Treibern, aus denen Sie sich die gewünschten auswählen können. Sie beschreiben sie für Exim in unterschiedlichen Abschnitten seiner Konfigurationsdatei. Zuerst werden die Transporte definiert, danach die Vermittler und schließlich die Router. Es gibt keine eingebauten Voreinstellungen, obwohl Exim mit einer Standard-Konfigurationsdatei ausgeliefert wird, die einfache Anwendungsfälle abdeckt. Wenn Sie Exims Routing-Strategie oder einen Transport verändern wollen, ist es am einfachsten, mit der Standard-Konfigurationsdatei zu beginnen und dort die notwendigen Änderungen durchzuführen, anstatt zu versuchen, mit einer völlig neuen Konfiguration zu beginnen.

Routing von Nachrichten

Sobald eine zuzustellende Adresse vorliegt, prüft Exim zuerst, ob die Domain eine ist, die auf dem lokalen Host verarbeitet wird. Dazu vergleicht Exim sie mit einer Liste in der Konfigurationsvariablen local_domains. Falls diese Option nicht gesetzt ist, wird der lokale Hostname als einzige lokale Domain verwendet. Ist die Domain lokal, wird die Adresse an die Vermittler übergeben, andernfalls an die Router, um herauszufinden, an welchen Host die Nachricht weitergeleitet werden muß.1

Nachrichten an lokale Adressen zustellen

In den meisten Fällen besteht eine lokale Adresse nur aus dem Login-Namen des Benutzers. In einem solchen Fall werden Nachrichten direkt an die Mailbox /var/spool/mail/user-name des Benutzers zugestellt. In anderen Fällen können Aliase, Namen von Mail­ing-Listen sowie Mail-Forwarding durch den Benutzer vorkommen. In diesen Fällen expandiert die lokale Adresse zu einer neuen Liste von Adressen, von denen jede lokal oder entfernt sein kann.

Abgesehen von diesen “normalen” Adressen kommt Exim auch mit anderen Adressierungsweisen für lokale Nachrichten zurecht, wozu unter anderem Dateinamen und Pipe-Kommandos zählen. Bei der Zustellung an eine Datei hängt Exim die Nachricht an die Datei an oder erzeugt gegebenenfalls eine neue Datei. Dateien und Pipes sind ­allerdings keine Adressen an sich; Sie können aus diesem Grund nicht beispielsweise an /etc/­passwd@vbrew.com eine Nachricht schicken und erwarten, daß die Paßwortdatei damit überschrieben wird. Zustellungen an eine bestimmte Datei sind nur dann zulässig, wenn sie von Forwarding- oder Alias-Dateien kommen. Beachten Sie, daß /etc/passwd@vbrew.com zwar eine syntaktisch gültige E-Mail-Adresse ist, aber Exim sie nach Erhalt sofort als Bounce Message zurückschicken würde, denn Exim würde (normalerweise) nach einem Benutzer mit dem Login-Namen /etc/passwd suchen, der natürlich nicht existiert.

In einer Alias-Liste oder einer Forwarding-Datei wird unter einem Dateinamen alles verstanden, was mit einem Schrägstrich (/) beginnt und keine voll qualifizierte E-Mail-Adresse darstellt. Zum Beispiel wird /tmp/junk in einer Forwarding- oder Alias-Datei als Dateiname interpretiert, während /tmp/junk@vbrew.com eine (wenn auch nicht besonders sinnvolle) E-Mail-Adresse ist. Solche Adressen können durchaus zulässig sein, wie etwa bei Mails, die über X.400-Gateways gesendet werden, da X.400-Adressen immer mit einem Schrägstrich beginnen.

Auf ähnliche Weise versteht man unter einem Pipe-Kommando ein beliebiges Unix-Kommando, dem ein Pipe-Symbol (|) vorangestellt ist, es sei denn, der String stellt eine zulässige E-Mail-Adresse inklusive Domain dar. Wenn Sie nichts an Exims Konfiguration verändert haben, benutzt Exim keine Shell, um den Befehl auszuführen, sondern spaltet den String selbst in Befehlsname und Argumente auf und führt den Befehl direkt aus. Die Nachricht erhält der Befehl über seine Standardeingabe.

Um zum Beispiel eine Mailing-Liste in eine lokale Newsgruppe umzuleiten, könnten Sie ein Shell-Skript namens gateit benutzen und einen lokalen Alias einrichten, der alle Nachrichten aus dieser Mailing-Liste mittels der Anweisung |gateit an das Skript übergibt. Wenn die Anweisung ein Komma enthält, muß sie (inklusive Pipe-Symbol) in Anführungszeichen gesetzt werden.

Lokale Benutzer

Eine lokale Adresse bezeichnet in der Regel eine Benutzer-Mailbox. Sie befindet sich normalerweise im Verzeichnis /var/spool/mail und hat den Namen des Benutzers, der auch Eigentümer dieser Datei ist. Fehlt diese Datei, wird sie von Exim erzeugt.

In manchen Konfigurationen stimmt die Gruppe mit der Gruppe des Benutzers überein, und der Zugriffsmodus ist 0600. In diesen Fällen laufen die Zustellungsprozesse mit den Rechten des Benutzers, und der Benutzer darf daher die Mailbox vollständig löschen. In anderen Konfigurationen ist die Gruppe der Mailbox auf mail mit Zugriffsrecht 660 gesetzt. Die Zustellungsprozesse laufen dann unter einer System-UID und mit mail als Gruppe. Die Benutzer können ihre Mailbox-Dateien daher nicht löschen, sondern nur leeren.

Beachten Sie, daß manche Mail-Software für andere Verzeichnisse als das aktuelle Standardverzeichnis /var/spool/mail für Mailbox-Dateien kompiliert sein kann, zum Beispiel /usr/spool/mail. Falls die Zustellung an Benutzer auf Ihrer Maschine permanent fehlschlägt, sollten Sie mal prüfen, ob es hilft, wenn Sie vom verwendeten Mail-Verzeichnis einen symbolischen Link auf /var/spool/mail einrichten.

Die Adressen MAILER-DAEMON und postmaster müssen in Ihrer Alias-Datei erscheinen und zur E-Mail-Adresse des Systemadministrators expandieren. MAILER-DAEMON wird von Exim als Absender in Bounce Messages benutzt. Es ist auch zu empfehlen, daß root als Alias für einen Administrator eingerichtet wird, besonders dann, wenn Zustellungen unter den Zugriffsrechten der Empfänger laufen. Das verhindert jede Zustellung als root.

Forwarding

Benutzer können ihre Mails an alternative Adressen umleiten, indem sie eine .forward-Datei in ihren Home-Verzeichnissen anlegen. Sie enthält eine Liste von Empfängern (durch Kommata und/oder Newline-Zeichen getrennt). Alle Zeilen dieser Dateien werden eingelesen und interpretiert. Es kann jede Adressierungsart verwendet werden. Ein praktisches Beispiel einer .forward-Datei für Abwesenheiten und Urlaub könnte so aussehen:

janet, "|vacation"
In anderen Beschreibungen von .forward-Dateien sehen Sie vielleicht den Benutzernamen mit vorangestelltem Backslash am Anfang. Das war in manchen älteren MTAs notwendig, um eine Suche nach einem .forward für den neuen Namen zu stoppen, was zu einer Endlosschleife führen könnte. Der Backslash ist für Exim, das Schleifen solcher Art automatisch vermeidet, nicht notwendig.2 Dennoch ist ein Backslash erlaubt, und in der Tat macht dies einen Unterschied in Konfigurationen aus, wo mehrere Domains auf einmal behandelt werden. Ohne Backslash wird ein unqualifizierter Benutzername mit einer Standarddomain qualifiziert; mit Backslash bleibt die ankommende Domain dagegen unverändert.

Die erste Adresse in einer Forward-Datei stellt die ankommende Nachricht an die Mail­box von janet zu, während der Befehl vacation eine Kurzmitteilung an den Absender zurückliefert.3

Als Ergänzung zur Unterstützung “traditioneller” Forwarding-Dateien kann Exim so konfiguriert werden, daß es auch komplexere Dateien, sogenannte Filter, gestattet. Anstatt einfach nur eine Liste von Forwarding-Adressen zu sein, kann eine Filterdatei auch Tests enthalten, die die Inhalte ankommender Nachrichten überprüfen, so daß zum Beispiel Nachrichten nur dann weitergeleitet werden, wenn ihr Subject die Meldung “dringend” enthält. Ob den Benutzern allerdings eine solche Flexibilität gewährt werden sollte, muß der Systemadministrator selbst entscheiden.

Alias-Dateien

Exim kann Alias-Dateien verarbeiten, die kompatibel zu den sendmail-Alias-Dateien von Berkeley sind. Einträge in der Alias-Datei können folgende Form annehmen:

Alias: Empfänger

Empfänger ist eine durch Kommata getrennte Liste von Adressen, die für den Alias substituiert werden. Die Empfängerliste kann über das Zeilenende hinaus fortgesetzt werden, wenn die nachfolgende Zeile mit einem Leerzeichen beginnt.

Ein spezielles Feature erlaubt Exim die Verarbeitung von Mailing-Listen, die separat von der Alias-Datei gehalten werden: Wenn Sie :include:Dateiname als einen Empfänger angeben, liest Exim die angegebene Datei ein und ersetzt ihre Inhalte durch eine Liste von Empfängern. Eine Alternative zur Verarbeitung von Mailing-Listen wird später in diesem Kapitel im Abschnitt Mailing-Listen gezeigt.

Die Haupt-Alias-Datei ist /etc/aliases. Wenn Sie sie world- oder group-schreibbar machen, weigert sich Exim, sie zu benutzen, und legt alle lokalen Zustellungen auf Eis. Sie können den Test, den Exim auf die Zugriffsrechte der Datei anwendet, steuern, indem Sie die Option modemask im system_aliases-Verteiler setzen.

Dies ist eine beispielhafte aliases-Datei:

# vbrew.com /etc/aliases file 
hostmaster: janet 
postmaster: janet 
usenet: phil 
# Die Development-Mailing-Liste 
development: joe, sue, mark, biff, 
        /var/mail/log/development 
owner-development: joe 
# Ankündigungen von allgemeinem Interesse 
# werden an alle staff-Benutzer gesendet 
announce: :include: /etc/Exim/staff, 
        /var/mail/log/announce 
owner-announce: root 
# Leitet die ppp-Mailing-Liste an eine lokale Newsgruppe weiter 
ppp-list: "|/usr/local/bin/gateit local.lists.ppp"

Wenn wie hier Dateinamen und Pipe-Kommandos in einer Alias-Datei vorkommen, muß Exim darüber informiert werden, unter welcher Benutzer-ID die Zustellungen erfolgen sollen. Die Option user (eventuell auch group) muß in der Konfigurationsdatei von Exim gesetzt sein — entweder auf dem Vermittler, der die Aliase verarbeitet, oder auf den Transporten, an die es diese Daten richtet.

Falls bei der Zustellung an eine Adresse, die aus der aliases-Datei erzeugt wurde, ein Fehler auftritt, sendet Exim wie gewöhnlich eine Bounce Message an den Absender der Nachricht, aber das muß nicht unbedingt angemessen sein. Über die Option errors_to kann man festlegen, daß Bounce Messages woandershin gesendet werden, zum Beispiel an den Postmaster.

Mailing-Listen

Anstatt über die aliases-Datei können Mailing-Listen auch von einem forwardfile-Vermittler verwaltet werden. Die Listen werden alle in einem einzelnen Verzeichnis wie /etc/exim/lists/ aufbewahrt; eine Mailing-Liste mit Namen nag-bugs wird dann durch die Datei lists/nag-bugs beschrieben. Diese sollte die Mitgliederadressen enthalten, die durch Kommata oder Zeilenwechsel getrennt werden. Zeilen, die mit einem # beginnen, werden wie Kommentare behandelt. Ein einfacher Vermittler für solche Daten ist folgender:

lists: 
  driver = forwardfile 
  file = /etc/exim/lists/${local_part} 
  no_check_local_user 
  errors_to = ${local_part}-request
Wenn dieser Vermittler läuft, werden die Werte der Optionen file und errors_to expandiert. Expansionen bewirken, daß bestimmte Abschnitte der Strings, die mit Dollarzeichen beginnen, bei jeder Anwendung der Strings ersetzt werden. Die einfachste Art der Expansion ist das Einfügen des Wertes einer der Exim-Variablen, und genau das passiert hier. Der Substring ${local_part} ersetzt den Wert von $local_part, was der lokale Teil der gerade abgearbeiteten Adresse ist.

Für jede Mailing-Liste sollte ein Benutzer (oder Alias oder eine Mailing-Liste) namens listname-request existieren. Alle Fehler, die bei der Auflösung einer Adresse oder bei der Zustellung an Mitglieder der Mailing-Liste auftreten, werden an diese Adresse gemeldet.




1.

Das ist eine vereinfachte Darstellung. Vermittler können Adressen an Transporte weitergeben, die sie an Remote-Hosts zustellen, und ähnliches. Router können Adressen an lokale Transporte übergeben, die die Nachricht in eine Datei oder eine Pipe schreiben. Es ist Routern auch möglich, unter gegebenen Umständen Adressen an die Vermittler zu übergeben.

2.

Ein Vermittler wird übersprungen, wenn die Adresse, die er im Begriff ist zu verarbeiten, eine ist, die er vorher bei der Erzeugung der aktuellen Adresse bereits verarbeitet hat.

3.

Wenn Sie ein vacation-Programm benutzen, stellen Sie bitte sicher, daß es nicht auf Nachrichten aus Mail­ing-Listen antwortet! Es ist wirklich sehr lästig, wenn irgend jemand in Urlaub gegangen ist und man für jede von ihm empfangene Nachricht eine Vacation-Message vorfindet. Mailing-Listen-Administratoren: Dies ist ein gutes Beispiel dafür, warum es eine schlechte Gepflogenheit ist, in das Reply-To:-Feld von Mailing-Listen-Nachrichten die Submission-Adresse einzutragen.


vorheriges Kapitel Inhaltsverzeichnis Stichwortverzeichnis nächstes Kapitel


Weitere Informationen zum Linux - Wegweiser für Netzwerker

Weitere Online-Bücher & Probekapitel finden Sie in unserem Online Book Center


O'Reilly Home|O'Reilly-Partnerbuchhandlungen|Bestellinformationen
Kontakt|Über O'Reilly|Datenschutz

© 2001, O'Reilly Verlag