Bewertung 4


Die Kandidaten sollten in der Lage sein, eine Sendmail-Konfiguration inklusive Aliases, Mailquotas und virtuellen Maildomains zu verwalten. Dieses Lernziel beinhaltet die Konfiguration von internen Mail-Relays und die Überwachung von SMTP-Servern.

Schlüsseldateien, Begriffe und Hilfsmittel beinhalten:

  • /etc/aliases
  • sendmail.cw
  • virtusertable
  • genericstable

Aufrufformen von sendmail

/usr/sbin/sendmail -bd -q10m Die Option -bd ruft sendmail als Daemon auf. Mit -q10m wird dabei festgelegt, dass alle 10 Minuten die Queue abgearbeitet wird. Das ist die normale Form, wie sendmail als Stand-Alone Dienst gestartet wird. /usr/sbin/sendmail -bs Die Option -bs weist sendmail an, das SMTP-Protokoll über die Standard-Ein/Ausgabe zu benutzen. Das ist notwendig um sendmail über inetd zu betreiben. (Nur zum Empfang der Mails möglich) /usr/sbin/sendmail -q Auf diese Weise wird sendmail gezwungen, die Mailqueue abzuarbeiten, also die anstehenden Mails zu verschicken. Dieser Aufruf wird gewöhnlich über cron gesteuert regelmäßig ausgeführt, wenn sendmail nicht als Daemon läuft, sondern auf einem Rechner ohne permanente Anbindung ans Internet installiert ist. Wenn ein Link mit Namen runq auf das sendmail-Programm gelegt ist, entspricht er diesem Aufruf. /usr/sbin/sendmail -bp Zeigt den Inhalt der Mailqueue an. Ein Link mit Namen mailq auf sendmail entspricht diesem Aufruf.

/etc/aliases

In dieser Datei werden Mail-Aliase definiert. Es handelt sich dabei einfach um Aliasnamen, die mit realen Usernamen verbunden werden, in der Form

  Alias:  Realname

Ein paar eingängige Beispiele:

  ftp: root
  ftpadm: root
  ftpadmin: root
  ftp-adm: root
  ftp-admin: root

Diese Beispiele zeigen, daß jeder Versuch, dem FTP-Administrator eine Mail zu schicken, egal wie wir den Empfänger schreiben, immer bei root landet.

Andererseits wird diese Datei auch benutzt, User, die ihre Mail über diesen Rechner empfangen, aber an anderen Rechnern arbeiten gleich umzuleiten.

  hans:  hans@anderer.rechner.de
  peter: pmueller@noch.anderer.rechner.de

Eine weitere wichtige Funktion des Alias-Mechanismus ist es, bestimmte Mails an Programme weiterzuleiten, die diese Mails dann weiterverarbeiten. Ein typisches Beispiel hierfür sind Mailinglistenprogramme wie Majordomo. In /etc/aliases kann also beispielsweise auch ein Eintrag wie folgt stehen:

  name@mydomain: "|/usr/bin/meinprogramm"

Das führt dazu, dass alle Mails, die eigentlich an name@mydomain geschickt wurden, an das Programm /usr/bin/meinprogramm weitergepiped werden. Dieses Programm kann dann entsprechendes mit dieser Mail anfangen.

Zusätzlich gibt es die Möglichkeit, mit der Anweisung :include:Datei ganze Dateien mit Userlisten als Alias zu benutzen. Existiert z.B. die Datei /var/listen/alle mit folgendem Inhalt

  hans
  otto
  gabi
  michael

und der Eintrag in /etc/aliases

  intern:       :include:/var/listen/alle

So werden alle Mails an intern eben an hans, otto, gabi und michael weitergeleitet. Der Doppelpunkt vor dem include dient dazu, den Befehl include von einem Usernamen zu unterscheiden und ist daher zwingend erforderlich.

Jedesmal, wenn diese Datei verändert bzw. erweitert wird, muß der Befehl newaliases ausgeführt werden, der dem Mailprogramm diese Veränderungen bekannt macht.

Virtuelle Maildomains

Wenn ein Server mehrere Domains hosten soll, dann handelt es sich um sogenannte Virtuelle Maildomains. Das entspricht in etwa den virtuellen Webservern des Apache-Webservers. Ein Rechner nimmt für mehrere Domainnamen Mails entgegen und sendmail schickt die so empfangenen Mails an entsprechend echte Mailadressen weiter. Damit das grundsätzlich funktioniert, muss sendmail klar gemacht werden, für welche Domains es Mails annehmen soll. Diese Angaben werden in der Datei /etc/sendmail.cw gemacht. Die Datei muss nicht unbedingt so heissen. In Distributionen, die ihre Mailkonfiguration in /etc/mail vornehmen heisst der Name dieser Datei meist /etc/mail/local-host-names. Grundsätzlich kann der Name der Datei in der M4-Konfigurationsdatei mit dem Befehl

  FEATURE(use_cw_file)
  define(`confCW_FILE', `pfad/zur/cwdatei')

gesetzt werden. Die Datei selbst enthält nur die Namen der Domains, für die wir Mails annehmen, die also unsere virtuellen Maildomains sind.

/etc/mail/virtusertable

Um diese Datei zu nutzen, muß in der M4-Datei die Zeile

  FEATURE(virtusertable)

angegeben sein. In dieser Datei werden – ähnlich wie bei aliases – zwei verschiedene Adressen miteinander verknüpft. Dabei darf allerdings über Domaingrenzen gegangen werden, so daß – sollte ein Rechner mehrere Domains verwalten – hier Umleitungen zur jeweils passenden Adresse vorgenommen werden können.

  # Alle Mail an efka@local.de geht an efka@golem.local.de
  efka@local.de efka@golem.local.de

  # Alle Mail an eine beliebige Adresse mit der Endung @blabla.de
  # geht an hans.gmx.de
  @blabla.de    hans@gmx.de

  # Alle Mail an einen User der Domain blabla.de geht an den selben
  # User der Domain blubblub.de
  @blabla.de    $1@blubblub.de
  

Damit diese Angaben funktionieren, muss die Datei noch in das von sendmail verstandene Datenbank-Format gebracht werden. Dazu dient der Befehl:

  makemap hash -f /etc/mail/virtusertable.db < /etc/mail/virtusertable

/etc/mail/genericstable

Diese Datei dient der Übersetzung ausgehender E-Mail Adressen in weltweit gültige. Bin ich z.B. auf dem Server der Systemverwalter, so lautet meine E-Mail Adresse intern z.B. root@server.local. Würde meine ausgehende Mail nun diese Adresse als Absender tragen, bekäme ich wohl nie eine Antwort. Denn mit root@server.local kann im Internet niemand etwas anfangen. Dort gilt meine Adresse f.kalhammer@online.de. In der Datei genericstable stehen jetzt Umrechnungstabellen für solche Fälle:

  root                    f.kalhammer@online.de
  root@server.local       f.kalhammer@online.de
  hans                    hMueller@gmx.de
  hans@server.local       hMueller@gmx.de

Auch diese Datei muß nach einer Veränderung in das Datenbankformat gebracht werden:

  makemap hash -f /etc/mail/genericstable.db < /etc/mail/genericstable