Linux-Arbeitskreis Hamburg

Sendmail

Grundlagen

Sendmail ist eines der wichtigsten Programme auf unseren Servern, es ist für die Weiterleitung der Post zuständig. Dementsprechend aufwendig ist auch die Konfiguration des Programmes.
Lokal wird die Mail über das Programm procmail in die einzelnen Postfächer verteilt.
Zur Konfigurationsvereinfachung dient das Programm m4, das die Konfigurationsdatei aus vorbereiteten Makros generiert. S.u.S.E. hat diesen Teil auch in sein Konfigurationprogramm integriert, so dass auch Einstellungen aus der Datei /etc/rc.config berücksichtigt werden.

Im Normalfall kann man sich mit der automatischen Erzeugung der sendmail.cf durch SuSEconfig begnügen. In speziellen Fällen muß man aber die automatische Erstellung deaktivieren, dazu stellt man in der rc.config SENDMAIL_TYPE=no und muß dann mittels:
m4 /etc/mail/linux.mc > /etc/sendmail.cf
die Konfigurationsdatei erzeugen.

Server-Konfiguration

Folgende Dateien sind für diese Konfiguration bedeutsam
/usr/sbin/sendmail Das Binärfile, welches die eigentliche Arbeit leistet.
/etc/aliases Lesbare Version der Datenbank für Mailumleitungen und Mailweiterleitungen. Wird mittels newaliases in die interne Datenbank /etc/aliases.db übersetzt.
/etc/sendmail.cf Die Konfigurationsdatei für Sendmail. Sie ist relativ umfangreich und schwer lesbar, daher wird sie selten direkt bearbeitet.
/usr/bin/m4 Programm zum Erstelle einer /etc/sendmail.cf anhand von Makros.
/sbin/conf.d/SuSEconfig.sendmail Dieses Teilprogramm von SuSEconfig erstellt die sendmail.cf. Dazu bedient es sich sich des Programmes m4
/etc/mail/linux.mc Dies ist ein vorbereitetes m4-Makro
/var/mqueue Verzeichnis mit den auf Zustellung wartenden Mails

Schalter für die S.u.S.E. Konfiguration

Will man die sendmail.cf mit den S.u.S.E.-Werkzeugen erledigen, so spielen die folgenden Schalter innerhalb der /etc/rc.config eine Rolle:

SENDMAL_TYPE = "yes" / "no"
Steht dieser Schalter auf yes, so übernimmt SuSEconfig die Erstellung der /etc/sendmail.cf, bei no muß man die Erstellung selbst übernehmen.

SENDMAIL_LOCALHOST = "<schule>.hh.schule.de  localhost"
Der eigene Name des Servers, zusätzlich soll man hier auch localhost mit angeben. Will man für mehrere Domains Post ajzeptieren, so kann man hier, durch Leerzeichen getrennt, weitere Rechnernamen angeben.

SENDMAIL_SMARTHOST = "uucp:shuttle"  /  "smtp:mail.hh.shuttle.de"
Hier steht, an welchen Rechner die ausgehende Post geliefert werden soll. Bei uns ist das üblicherweise das UUCP-System, das die Weitergabe übernimmt. Falls man nicht mit UUCP arbeitet, kann man den Eintrag "smtp:mail.hh.shuttle.de" auch weglassen, dann wird die Mail aber direkt an den Empfänger zugestellt, was manchmal recht langwierig ist. Geschickter ist es auf alle Fälle die Mails beim Provider abzuliefern.

SENDMAIL-RELAY = ""
Hiermit kann man Mail generell an einen anderen Rechner weiterleiten, anstatt sie lokal auszuliefern.

SENDMAIL_ARGS = " -bd -q30m -om"
Mit diesen Parametern wird Sendmail gestartet. Der Schalter -bd startet Sendmail als daemon, der im Hintergrund auf Arbeit wartet. Der Schalter -q30m bewirkt, dass Sendmail alle 30 Minuten nach wartender Mail schaut. Wenn man nicht mit UUCP arbeitet kann man diesen Schalter weglassen und den Mailversand durch sendmail -q von Hand oder per Cron-Job auslösen.

SENDMAIL_EXPENSIVE = "yes"  /  "no"
Steht dieser Schalter auf no, so versucht Sendmail eine Mail sofort an den nächsten Rechner weiterzugeben. Steht der Schalter auf yes, so speichert Sendmail die Mail im Ordner /var/mqueue zwischen.

SENDMAIL_NONCANONIFY = "yes"  /  "no"
Steht dieser Schalter auf no, so versucht Sendmail immer den Namen des Empfängerrechners zu verifizieren. Damit werden DNS-Anfragen ausgelöst. Will man diese Anfragen vermeiden, wil man nicht immer online ist, so muß der Schalter auf yes stehen.

Löschen von wartenden Mails

Wenn man mit Sendmail experimentiert, dann entstehen immer mal wieder Mails, die man gern löschen möchte. Ausgehende Mails, die nicht zugestellt werden konnten, sind im Ordner /var/mqueue gespeichert. Dort kann man sie löschen, wenn man Sendmail solange stoppt:

/sbin/init.d/sendmail stop
rm /var/mqueue/*
/sbin/init.d/sendmail start

Sendmail wehrt sich sonst gegen das Löschen der Dateien.


Kritik, Anregungen und Ergänzungen willkommen. Zusammengestellt von Uwe Debacher, letzte Änderung am 27.01.2006