Kategorie: tipps & tricks » Ubuntu

Postfix

Postfix MTA als Satellite System

"Ein Mail Tranfer Agent (MTA) [...] ist ein Programm, das den Transport und die Verteilung von Nachrichten erledigt." [1] Somit ist ein MTA der Teil eines "echten" Mailservers, der für den Versand der Nachrichten zuständig ist. Zusätzlich versteht man unter dem Begriff "Satellite System" einen Rechner oder Server, der selbst keine Nachrichten empfangen, sondern lediglich über einen externen Mailserver ins Internet verschicken kann. Somit beschränkt sich der Einsatz solcher Systeme zumeist auf den Versand von Nachrichten, die durch Administrator-oder Web-Anwendungen des Rechners erzeugt wurden, auf dem das Satellite System installiert ist.
Typisches Beispiel: Einmal pro Woche werden Daten des Rechners zwecks Datensicherung in ein anderes Verzeichnis kopiert. Der Systemadministrator wird per Mail über den Erfolg oder Misserfolg der Datensicherung informiert.

Die Installation erfolgt unter Ubuntu in einem Terminal durch den Befehl:

sudo apt-get install postfix

Zusätzlich werden normalerweise noch die Module libsasl2-modules zur Authentifizierung an einem externen SMTP-Server und das Programm mailx zu Testzwecken benötigt. Beide können ebenfalls in einem Terminal durch

sudo apt-get install libsasl2-modules mailx

installiert werden.

Grundeinstellungen

Während der Postfix-Installation werden verschiedene Fragen zur Konfiguration gestellt:

  1. Konfigurationstyp: Für unseren Anwendungsfall Satellite System.
  2. Admin-Mail: Mailadresse, an die Nachrichten für den Systemadministrator (normalerweise root) zugestellt werden soll.
  3. Mailname: Domain, die jeder Mail als Absenderdomain hinzugefügt werden soll. ACHTUNG: Es sollte sich dabei nicht um die Domain des Providers handeln, über den die Nachricht versandt wird. Tut man dies, wird Postfix vielmehr versuchen, die Mail lokal und nicht über den Provider zuzustellen. Die Weiterleitung lokaler Mails an externe Mailadressen wird weiter unten beschrieben.
    Ich verwende als Mailname intranet.home. Schickt also der Benutzer hammelhausen eine Mail, würde als Absenderadresse automatisch hammelhausen@intranet.home verwendet. Schickt man andersherum eine Mail an den Benutzer root, adressiert Postfix die Nachricht an root@intranet.home.
  4. SMTP relay host: Name des SMTP-Servers, über den die Mails versandt werden sollen.
  5. Lokales Netzwerk: Soll nur der lokale Rechner Mails verschicken, trägt man hier 127.0.0.0/8 ein. Möchte man außerdem anderen Rechnern im Netzwerk erlauben Nachrichten über Postfix zu verschicken, fügt man zusätzlich sein eigenes Netzwerk hinzu, z.B. 192.168.0.0/24.
    Möchte man seinen Rechner über das Internet nutzen, sollte man davon absehen weitere Adressbereiche hinzuzufügen, sondern stattdessen eine Authentifizierung für den Versand von Nachrichten verlangen. Im Rahmen dieser Anleitung wird nicht detailiert darauf eingegangen, ergänzende Angaben finden sich jedoch auf verschiedenen Seiten im Internet oder direkt auf der Postfix Homepage [2].

Die Konfiguration wird nach Abschluss der Installation unter /etc/postfix/main.cf gespeichert. Möchte man den Konfigurationsvorgang erneut durchführen, erreicht man dies durch Eingabe von sudo dpkg-reconfigure postfix in einem Terminal. In diesem Falle werden zusätzliche Fragen zur Konfiguration gestellt.

Authentifizierung für Mailversand

Da aufgrund des heutigen Spamaufkommens die meisten SMTP-Server eine Authentifizierung (im Regelfall Benutzername und Passwort) verlangen, muss dies noch nachträglich in Postfix konfiguriert werden. Dazu öffnet man die Datei /etc/postfix/main.cf und ergänzt sie um folgende Einträge:

smtp_sasl_auth_enable = yes
smtp_sasl_security_options = noplaintext noanonymous
# Sollten Probleme auftauchen, kann man versuchsweise noplaintext entfernen
# Dadurch werden Passwörter im Klartext übertragen (nicht empfehlenswert)
# 
# Pfad zur Datei, in der Benutzername und Passwort gespeichert sind 
smtp_sasl_password_maps = hash:/etc/postfix/sasl_password

Die Datei sasl_password, die Benutzername und Passwort enthalten soll, muss erst noch erstellt werden. Dazu gibt man in einem Terminal folgenden Befehl ein:

sudo touch /etc/postfix/sasl_password

Nun öffnet man die Datei in einem Editor seiner Wahl und schreibt Benutzernamen und Passwort in folgender Reihenfolge:

smtp.server.de benutzername:password

Nun muss lediglich die Datei vor fremden Zugriffen geschützt und in eine Datenbank umgewandelt und der Postfix-Dienst neugestartet werden:

# Lese- und Schreibrechte nur für Dateiautor setzen
sudo chmod 600 /etc/postfix/sasl_password
# Dateiinhalt in Datenbank umwandeln
sudo postmap /etc/postfix/sasl_password
# Postfix-Dienst neustarten
sudo /etc/init.d/postfix restart
Definition der Absenderadresse

Ebenfalls aus Gründen der Spamvermeidung nehmen viele Mailserver heutzutage nur Nachrichten einer bestimmte Absenderadresse zum Versand an. Auch dies lässt sich in Postfix konfigurieren - man öffnet erneut die Datei /etc/postfix/main.cf und fügt folgenden Eintrag hinzu:

sender_canonical_maps = hash:/etc/postfix/sender_canonical

Dann erstellt man mit dem Befehl sudo touch sender_canonical die Datei sender_canonical und fügt ihr folgende Einträge hinzu:

root      adresse01@mail.de
benutzer  adresse01@mail.de
www-data  adresse34@nachricht.org

Natürlich müssen die Benutzer und Adressen den jeweiligen Gegebenheiten angepasst werden. In vorgenanntem Beispiel würden Nachrichten der Benutzer root und benutzer mit der Absenderadresse adresse01@mail.de versandt, Nachrichten des Benutzers www-data jedoch mit der Absenderadresse adresse34@nachricht.org.
Abschließend werden wiederum die Zugriffsrechte beschränkt, die Datei in eine Datenbank umgewandelt und der Postfix-Dienst neugestartet:

# Lese- und Schreibrechte nur für Dateiautor setzen
sudo chmod 600 /etc/postfix/sender_canonical
# Dateiinhalt in Datenbank umwandeln
sudo postmap /etc/postfix/sender_canonical
# Postfix-Dienst neustarten
sudo /etc/init.d/postfix restart

Nun kann man Postfix mit folgendem Befehl testen (vorausgesetzt, man hat mailx zuvor installiert):

echo Das ist eine Testmail | mail -s "Betreffzeile" empfaenger@adresse.de

Danach sollte (hoffentlich) die soeben erzeugte Testmail im Postgang von empfaenger@adresse.de auftauchen und im Mail-Protokoll (/var/log/mail.log) folgender oder zumindest ein ähnlicher Eintrag zu finden sein:

...to=<empfaenger@adresse.de>,... status=sent... Message accepted.
Weiterleitung lokaler Nachrichten

Gerade bei Serverkonfigurationen werden wichtige Nachrichten oftmals per Mail lokal an den Systemadministrator root zugestellt. Bei Satellite Systemen möchte man natürlich, dass diese Nachrichten eben nicht lokal, sondern an eine externe Mailadresse zugestellt werden. Dafür müssen entsprechende Weiterleitungen, sogenannte Aliase, in der Datei /etc/aliases konfiguriert werden. Diese Datei ist der Datei sender_canonical sehr ähnlich und könnte folgendermaßen aussehen:

root    admin-alarm@mail.de
hansi   lokal@mail.com

Hier werden Nachrichten an den lokalen Benutzer root an die externe Mailadresse admin-alarm@mail.de weitergeleitet. Selbiges geschieht mit Nachrichten, die an den Benutzer hansi gerichtet sind - sie werden nach lokal@mail.com weitergeleitet.
Der Eintrag für den Benutzer root ist übrigens zwingend erforderlich und wurde in den Grundeinstellungen abgefragt (s.o.: Admin-Mail). Sind alle Weiterleitungen konfiguriert, muss man die entsprechenden Postfix-Datenbanken mit folgendem Befehl aktualisieren:

sudo newaliases

Quellen
[1]
Wikipedia
Mail Transfer Agent

Letzter Aufruf: 14. Nov 2009
[2]
Postfix
The Postfix Homepage

Letzter Aufruf: 14. Nov 2009
[3]
ubuntuusers
Postfix

Letzter Aufruf: 25. Apr 2010