Beschreibung: Prüfungskandidaten sollten in der Lage sein, einfache Einstellungen in den Sendmail Konfigurationsdateien vorzunehmen (einschließlich des "Smart Host" Parameters, wenn notwendig), Mail-Aliases anzulegen, die Mail-Queue zu verwalten, Sendmail zu starten und zu stoppen, Mail-Weiterleitung zu konfigurieren und allgemeine Sendmail-Probleme zu lösen.
Die wichtigsten Dateien, Bezeichnungen und Anwendungen:
Die Einrichtung eines Mailservers mit sendmail gilt als eines der kompliziertesten Kapitel der Unix-Serverinstallation. Es existiert ein tausendseitiges Buch alleine über die Sendmail-Konfiguration, es gibt auch die Weisheit:
Ein richtiger Unix-Systemadministrator ist man erst, wenn man einmal eine Sendmail Konfigurationsdatei geschrieben hat.Aber so schlimm ist es heute nicht mehr, keine Angst. Die modernen Sendmail Versionen bringen heute ausgesprochen leicht zu handhabende Konfigurationsdateien mit, die die Arbeit mit Sendmail erleichtern. Wenn also kein zu komplizierter Mailserver aufgesetzt werden soll, dann können wir uns das Leben sehr einfach machen.Ein richtiger Unix-Systemadministrator wird sich aber hüten, es ein zweites Mal zu tun.
Die LPI102 Prüfung verlangt kein tiefergehendes Wissen über die Geheimnisse der sendmail Konfiguration, es genügen die notwendigen Informationen, um einen einfachen Mailserver einzurichten.
Hier geht es prinzipiell um die Konfiguration von MTAs - konkret um die Konfiguration von sendmail. Die genannte Aufteilung der Aufgaben in Userprogramm und Versendeprogramm machen eine Unterscheidung hinsichtlich der Netzanbindung nötig. Es ist ein erheblicher Unterschied, ob unser Mailserver eine permanente Netzanbindung hat, oder nicht.
In einem lokalen Netz kann auf jeder Unix-Workstation ein sendmail-Daemon laufen, jedoch hat nur einer der Rechner die tatsächliche Anbindung ans Internet. Das bewirkt, daß die anderen Rechner ihre Mails an den einen mit Netzanbindung schicken, erst der versendet sie dann weiter ins Internet. Diese Architektur hat in vielen Fällen Vorteile, zum Beispiel
Im Regelfall läuft sendmail als stand-alone Dienst. Das heißt, auch bei temporärer Anbindung ist der Daemon ständig im Speicher. Das ist notwendig, damit ein Rechner Mails von anderen MTAs empfangen kann. Ob sendmail die ausgehenden Mails gleich losschickt, oder wohin es sie weiterleitet, das muss konfiguriert werden.
Die zentrale sendmail-Konfigurationsdatei ist /etc/sendmail.cf. Diese Datei selbst zu bearbeiten oder gar zu erstellen ist ausgesprochen kompliziert - das Anfangs angeführte Zitat bezieht sich eben darauf. Wir werden hier nicht die komplette Konfiguration von sendmail behandeln, sondern ausschließlich kleine Veränderungen an dieser Datei vornehmen.
Ein MUA, mit dessen Hilfe eine Mail versendet wird, legt diese abgehende Mail mitsamt aller dazu nötigen Headerinformation (von wem kommt die Mail, an wen geht die Mail usw.) in das Spoolverzeichnis für die ausgehende Mail. Der MTA arbeitet diese Warteschlange in regelmäßigen Abständen ab und verschickt die Mails ins Internet - entweder direkt an die empangenden Rechner oder an einen Mailserver des Providers, der dann die Weiterversendung übernimmt.
Umgekehrt bekommt der MTA eingehende Mails aus dem Netz und sortiert sie in die Eingangspostfächer (z.B. /var/spool/mail/hans). Beim nächsten Aufruf eines MUA findet dieser im jeweiligen Verzeichnis dann die neue Mail vor und kann sie darstellen.
Die Programme, die unter Unix ständig dafür sorgen, daß einem User mitgeteilt wird, daß er neue Mail hat (biff/xbiff), nützen ebenso diese Verzeichnisse. Der Vorteil an diesem Prinzip liegt in der Tatsache, daß das Mailsystem so integraler Bestandteil des Systems selbst ist, und nicht ein aufgepfropftes Anwenderprogramm. Nur deshalb können z.B. Programme wie cron oder at ihre Ausgaben als Mail an den User schicken, der den Auftrag gegeben hatte.
Um den Inhalt der Warteschlange anzusehen, existiert der Befehl mailq, der in Wahrheit nur ein symbolischer Link auf sendmail ist.
Zumindestens die erste Aufgabe bedingt es, daß sendmail permanent als Daemon im Speicher liegt und arbeitet. Nur so ist es gewährleistet, daß eingehende Mails tatsächlich jederzeit angenommen werden können. Der Start von sendmail benötigt hier zwei wesentliche Parameter, der erste gibt an, daß das Programm als Daemon gestartet werden soll und der zweite stellt die Frequenz ein, in der sendmail die Warteschlange bearbeiten soll (in diesem Beispiel 30 Minuten):
sendmail -bd -q30mAuf diese Weise wird sendmail alle 30 Minuten die Mailqueue lesen und anstehende Aufträge (ausgehende Mails) versenden. Die eingehenden Mails werden jederzeit empfangen.
sendmail -qDieser Befehl kann jetzt z.B. in regelmäßigen Abständen von cron aufgerufen werden.
Um die interne Weitergabe von Mails zu realisieren, wird meist jedoch auch auf Rechnern ohne permanente Anbindung ein Sendmail-Daemon gestartet, der allerdings nicht die Warteschlange abarbeitet. Die Versendung geschieht mit dem oben genannten Befehl über cron gesteuert, der Aufruf von sendmail heißt dann
sendmail -bdSo ist die interne Funktionalität weiter gewährleistet, ohne daß in regelmäßigen Abständen die Queue abgearbeitet wird.
In den seltensten Fällen sind das wirkliche User des Systems. Normalerweise werden einfach Aliase angelegt, die diese Adressen dem entsprechenden User zuweisen, der den Job übernommen hat. Dazu kennt sendmail die Datei /etc/aliases oder manchmal auch /etc/mail/aliases.
Das Format dieser Datei ist sehr einfach, pro Zeile wird ein Alias definiert:
Um die drei obigen Beispiele bestimmten Usern zuzuordnen könnten in einer solchen Datei also folgende Einträge stehen:
webmaster: root abuse: root ftpadmin: hansAlle Mails an webmaster@mydomain.de und abuse@mydomain.de würden also an den User root@mydomain.de weitergeleitet, während Mails an ftpadmin@mydomain.de an hans@mydomain.de weitergegeben würden. mydomain.de würde natürlich durch die entsprechende lokale Domain ersetzt.
Es ist auch möglich, bestimmte Adressen nicht an andere Adressen zu versenden, sondern an bestimmte Programme weiterzuleiten. In diesem Fall werden Mails, die an diese Adresse gingen an ein angegebenes Programm weitergepiped. So können z.B. Mailinglists organisiert werden. Statt einem Usernamen wird dann ein Programmname angegeben, dem ein Pipe-Symbol vorangestellt wurde. Programmname und Pipesymbol müssen in doppelte Anführungszeichen gesetzt werden:
Aliasname: "|Pfad/zu/Programm Optionen"
Nach jeder Veränderung der Alias-Datei muß das Programm newaliases aufgerufen werden, um diese Aliase für sendmail bekannt zu machen. Wie mailq ist auch newaliases nur ein symbolischer Link auf sendmail.
Die Syntax der drei möglichen Einträge ist einfach:
hansJede Mail an root wird jetzt an Hans weitergeleitet. So empfängt der Systemverwalter seine Mails auch, wenn er sich als hans anmeldet.
"/var/spool/mail2/hans" "./Mail/meinemail"Die Angaben einer Datei werden immer entweder als kompletter Pfad zu der Datei oder als Pfad mit führendem Punkt angegeben. Im zweiten Fall bezieht sich der Pfad auf das Homeverzeichnis des jeweiligen Users.
Bei der Angabe von normalen Pfaden muß darauf geachtet werden, daß der User Schreibrecht auf die entsprechende Datei besitzt.
"| /Pfad/zu/Programm"Die Mail wird dann an das angegebene Programm gepiped, das heißt, das Programm muß Eingaben von der Standard-Eingabe verarbeiten können. Die Angabe eines Programms erfolgt mit vollem Pfad.
Mit Hilfe dieses Mechanismuses ist es möglich, daß auch Normaluser ihre Mails weiterleiten oder Mailinglisten aufbauen, auch wenn sie keinen Zugriff auf /etc/aliases besitzen.
Die Versendung ohne Smarthost bedingt eine funktionierende DNS-Installation, da sendmail sowohl die Adressen der ausgehenden Mails auflösen muß, als auch von den Empfänger-Rechnern wieder angesprochen werden muß.
Wird stattdessen aber ein Smarthost angegeben, so sendet sendmail alle ausgehende Mail an diesen Rechner, der dann natürlich die selben Ansprüche erfüllen muß, wie ein lokaler Rechner, der keinen Smarthost verwendet, er muß eine funktionierende DNS-Anbindung haben.
Der Eintrag für den Smarthost findet in der zentralen Konfigurationsdatei von sendmail statt, die Datei /etc/sendmail.cf. Hier muß die Einstellung
DSRechnernameeingetragen sein. Soll stattdessen kein solcher Rechner verwendet werden, so wird der Parameter Rechnername einfach weggelassen.
DS
makemap hash -f /etc/mail/datei.db < /etc/mail/dateiStatt datei wird natürlich der Name der zu konvertierenden Datei angegeben.
127 RELAY 192.168.100.123 OK mydomain.de OKAlle Rechner, deren Adresse mit 127 anfangen (das sind nur wir selbst) senden ihre Mail grundsätzlich (RELAY) über diesen Rechner. Der Rechner 192.168.100.123 darf jederzeit Aufträge an diesen Rechner weitergeben und alle Mitglieder der Domain mydomain.de ebenfalls. Sonst werden alle Aufträge zur Weiterleitung abgelehnt.
Wie oben erwähnt muß diese Datei nach jeder Veränderung in das Datenbankformat konvertiert werden.
root echter.name@echter.provider.org root@server.local echter.name@echter.provider.org hans hMueller@gmx.de hans@server.local hMueller@gmx.deAuch diese Datei muß nach einer Veränderung in das Datenbankformat gebracht werden.
marvin.local.de smtp:marvin.local.de hal.local.de smtp:hal.local.de golem.local.de smtp:golem.local.de local.de smtp:marvin.local.deAlle Aufträge an bestimmte Rechner (marvin, hal und golem) gehen an die Rechner selbst via smtp. Alle Adressen, die keinen Rechner sondern nur eine Domain nennen (z.B. hans@local.de) werden an marvin weitergeschickt.
Auch diese Datei muß nach einer Veränderung in das Datenbankformat gebracht werden.
efka@local.de root@golem.local.deDie Adresse efka@local.de wird in Wahrheit an root@golem.local.de weitergegeben.
Auch diese Datei muß nach einer Veränderung in das Datenbankformat gebracht werden.