SelfLinux Internet E-Mail Server Linux als Mailserver Abschnitt 5 | SelfLinux-0.13.0

| Linux als Mailserver | Autor Formatierung GFDL

#### 5 Installation von sendmail

In der SuSE-Distribution ist sendmail in der Serie n enthalten, es wird daher am einfachsten über YaST installiert:

> Installation festlegen/starten ->
> Konfiguration ändern/erstellen ->
> Netzwerk-Support

Nach der Installation kann sendmail dann wieder über YaST mit seiner Konfigurationsdatei (sendmail.cf) versehen werden. Hierfür ruft man in YaST das Menü

> Administration des Systems ->
> Netzwerk konfigurieren ->
> Sendmail konfigurieren

auf.

Wählen Sie Konfiguration mit Zugriff über einen Nameserver, um sendmail über eine ppp-Verbindung auf den Provider zugreifen zu lassen. Wenn der Server ausschließlich lokal betrieben wird ist die Auswahl beliebig, kann bei einem späteren INTERNET-Anschluß aber jederzeit geändert werden. Im Verzeichnis /etc wird jetzt die Konfigurationsdatei angelegt. Ferner schreibt die Installation in das Verzeichnis /sbin/init.d das Start-/Stopscript sendmail und legt in /etc/rc.d/rc2.d die symbolischen Verweise S20sendmail und K20sendmail an. Um sendmail jetzt zu starten geben Sie an der Kommandozeile den Befehl

root@linux ~# sh /etc/rc.d/sendmail start

ein. Das Kommando ps sollte uns jetzt folgende Ausgabe liefern:

root@linux ~# ps ax| grep sendmail 22432 ? S 0:00 sendmail: accepting connections on port 25

Wie man erkennen kann, benutzt sendmail jetzt den Port 25 (SMTP) für ein- und ausgehende Verbindungen. Um im laufenden Betrieb einen Neustart des Dienstes zu erreichen genügt ein sh /etc/rc.d/sendmail reload

#### 5.1 Einträge in /etc/rc.config

Das Verhalten von sendmailkann UNIX-üblich über Kommandozeilenparameter beeinflußt werden. SuSE hat hierfür in das Start-/Stopscript Variable aufgenommen, welche in der Datei /etc/rc.config gesetzt werden.
Diese sind:

-SENDMAIL_TYPE="yes"

> bestimmt, dass die Konfiguration von sendmail.cf über rc.config und YaST erfolgen soll. Bei ``no'' müssen wir diese selber editieren.

-SENDMAIL_SMARTHOST=""

> Bei Verbindung über UUCP wird hier der sog. ``smarthost'' (der Kommunikationspartner) eingetragen.

-SENDMAIL_LOCALHOST="localhost"

> Die hier aufgeführten Namen werden als Aliasnamen für den eigenen Rechner betrachtet. Es unterbleibt die DNS-Anfrage!

-SENDMAIL_RELAY=""

> Sendmail liefert keine Nachrichten lokal aus, sondern übergibt diese an das Relay. Damit kann ein Relay-Verbund aufgebaut werden.

-SENDMAIL_ARGS="-bd -q30m -om"

> Hier werden sendmail seine Startparameter übergeben. Die komplette Liste erhält man mit man sendmail, die hier aufgeführten Werte bedeuten: -bd: sendmail startet als Daemon und geht in den Hintergrund -q30m: die Nachrichten in der Warteschlange werden alle 30 Minuten abgearbeitet -om: die Option ``m'' wird gesetzt (s. Installations- und Betriebshandbuch ;-))

SENDMAIL_EXPENSIVE="yes"

> Mit dieser Einstellung schreibt sendmail die Nachrichten nur in seine Messagequeue und stellt sie erst beim Aufruf sendmail -q zu. Dies wird benötigt, wenn man den Server mittels ISDN-Wählverbindung an das INTERNET gehängt hat und nicht will, dass jede ausgehende Mail eine Verbindung zum Provider aufbaut. Stattdessen ruft man sendmail -q per crontab z.B. in den Nachtstunden auf und holt bzw. sendet die Mail in einem Rutsch (Polling). Alternativ kann der Eintrag auch in das PPP-Startscript aufgenommen werden, so dass bei jedem Verbindungsaufbau auch ein Mailaustausch stattfindet.1.1

SENDMAIL_NOCANONIFY="no"

> Sendmail versucht nicht mehr, bei jeder Mail den vollen Namen der Mailadresse per DNS aufzulösen. Diese Einstellung ist ebenfalls bei ISDN-Dialup-Verbindungen wichtig um zu verhindern, dass auch lokale Adressen über den DNS des Providers aufgelöst werden. Alternativ kann auch ein lokaler DNS dies unterbinden (s. Aufbau eines DNS-Servers)

#### 5.2 Ein kurzer Blick in sendmail.cf

Um zu verstehen, warum sendmail als ``Konfigurationsmonster'' gilt, hier ein kleiner Ausschnitt aus der Datei sendmail.cf:

sendmail.cf

     Cwlocalhost
     # my official domain name

     # ... define this only if sendmail cannot automatically
     determine your domain

     #Dj$w.Foo.COM
     CP.

     # "Smart" relay host (may be null)
     DS

     # place to which unknown users should be forwarded

     #Kuser user -m -a<>

     #DLname_of_luser_relay

     # operators that cannot be in local usernames (i.e., network indicators)

     CO @ % !

     # a class with just dot (for identifying canonical names)

     C..

     # a class with just a left bracket (for identifying domain literals)

     C[[

     # Mailer table (overriding domains)

     Kmailertable hash -o /etc/mail/mailertable.db

     # Domain table (adding domains)

     #Kdomaintable dbm /etc/domaintable

     # Generics table (mapping outgoing addresses)

     Kgenerics hash -o /etc/mail/genericstable.db

#### 5.3 mailertable

Die Datei mailertable legt fest, auf welchem Wege die Mail für bestimmte Zielsysteme zugestellt werden soll. Sie wird standardmäßig bei SuSE nicht angelegt, was zu Problemen führen kann, wenn man nicht das von SuSE gelieferte rpm-Paket installiert, sondern sendmail aus den Sourcen heraus selbst übersetzt. Am besten, man legt die Datei mit dem Befehl

root@linux ~# touch /etc/mailertable

an und läßt sie leer. Wenn man sie jedoch einsetzten will hat sie folgenden Aufbau:

/etc/mailertable

     # /etc/mailertable
     # Legt fest, wie ein Host zu erreichen ist

     # Zuerst die Zustellung in der eigenen Domain über smtp.
     # %1 wird dabei durch die eMail-Adresse des Empfängers ersetzt
     # Hinweis: Der Domainname muß aufgelöst werden können!

     .my.domain     smtp:%1

     my.domain      smtp:%1

     # Der Rechner somebody ist über relay.my.domain erreichbar
     somebody       smtp:[relay.my.domain]

     # Für den Rechner number soll kein DNS genutzt werden
      number         smtp:[192.168.1.56]

Um diese mailertable dem Programm sendmail bekannt zu machen muß sie mit dem Befehl makemap in ein DBM-Format übersetzt werden. Neustarten des sendmail nicht vergessen!

#### 5.4 aliases

Die Datei /etc/aliases ermöglicht es, einer realen Mailadresse verschiedene Pseudonyme zuzuordnen. So existiert auf Webservern in der Regel dein Aliasname für den Systemverantwortlichen als webmaster@my.domain, das NetNews-System benutzt das Synonym news@my.domain um Fehlermeldungen zuzustellen. Um nicht für jede dieser Kennungen echte Accounts anlegen zu müssen, können diese einem oder mehreren User-Accounts zugeordnet werden.

/etc/aliases

     # /etc/aliases
     # Zuordnung von Aliasnamen zu realen Accounts
     # Erst die Systemkennungen:

     news:             pmeier, \news

     newsadmin:        pmeier

     newsadm:          pmeier

     webmaster:        rschulz

     postmaster:       sschmidt

     mail:             sschmidt

     root:             nkrueger, \root

     # ``sprechende'' Aliasnamen für die Accounts

     pmeier:           peter.meier

     rschulz:          robert.schulz

     sschmidt:         stefan.schmidt

     nkrueger:         norbert.krueger

Die Syntax ist damit recht einleuchtend, interessant sind die Einträge news: pmeier, \news und root: nkrueger, \root. Damit wird sichergestellt, dass die an die Kennungen news und root adressierten Nachrichten nicht nur an den realen Benutzer pmeier, sondern auch an die Systemkennungen news bzw. root zugestellt werden. Damit erzeugt man quasi ein Mailarchiv für diese Kennungen und kann darin auch noch nach Meldungen suchen, wenn nkrueger sie bereits in seinem Eingangskorb gelöscht hat.

In der zweiten Hälfte der Datei werden die heute recht gebräuchlichen eMail-Adressen der Form mein.name@my.domain erzeugt. Dieser Abschnitt will allerdings auf einem Produktivsystem mit häufig wechselnden Accounts gepflegt sein!
Bevor die Aliasnamen eingesetzt werden können, muß mit dem Befehl newaliases erst wieder eine DBM-Datei erzeugt werden. Auch hier schadet es nichts, sendmail neu zu starten!