Installation
Postfix ist ein Mail Transfer Agent (MTA), also ein Server, der Mails versendet und dazu einen Zugang per SMTP anbietet.Postfix steht auf allen gängigen UNIX- und Linux-Plattformen als Open Source zur Verfügung. Jede Distribution erlaubt die Nachinstallation aus ihrem Repositiory. Unter Debian, Ubuntu und Linux Mint lautet der Befehl zur Installation so:
apt-get install postfixNach dem Herunterladen der Pakete aus dem Repository werden Sie aufgefordert, die Konfiguration von Postfix im Dialog zu betreiben. Wenn Sie genau wissen, was Ihr Postfix tun soll, kann Ihnen dieser Assistent etwas Arbeit abnehmen. Nach der Installation können Sie diese Art der Konfiguration mit dem Befehl dpkg-reconfigure jederzeit noch einmal ausführlich nachholen.
dpkg-reconfigure postfix
Konfiguration per Datei /etc/postfix/main.cf
Die Konfiguration kann allerdings genauso gut über die Konfigurationsdateien erfolgen. Die zentrale Datei ist /etc/postfix/main.cf. Wenn Sie diese Datei ändern, müssen Sie zur Übernahme der Konfigurationsänderungen den Befehl postfix reload aufrufen.
Im Verzeichnis /usr/share/postfix finden Sie ein paar
Beispiele für die Konfigurationsdateien. Insbesondere die Datei
main.cf.dist ist hier sehr hilfreich, da sie die
Konfigurationsparameter mit recht ausführlichen Kommentaren enthält.
In der Konfigurationsdatei werden Parameter als Zuweisungen gesetzt. Zunächst erscheint der Name des Parameters, dann ein Gleichheitszeichen und schließlich der Inhalt. Der Inhalt kann in der nächsten Zeile fortgesetzt werden, wenn diese mindestens mit einem Leerzeichen beginnt. Daraus folgt natürlich auch, dass ein neuer Parametername immer ganz links beginnen muss.
Konfiguration
- System-E-Mail-Name mydestination: In normalen Konfigurationen steht hier der Name der lokalen Domain, also das, was bei einer E-Mail-Adresse des lokalen Systems rechts vom @ erscheint.
- Empfänger von E-Mails an Root und Postmaster: Wer bekommt die Mail, wenn es Probleme gibt?
- Zielrechner (destination): Die Adresse, für die dieser Mailserver die eingehenden E-Mails auf die lokalen Benutzer verteilt.
- Synchrone Aktualisierung: Dies führt zu einer langsameren Verarbeitung, garantiert aber, dass selbst bei einem Systemabsturz keine E-Mail verloren geht.
- Teilnetzwerke, für die Mails weitergeleitet werden sollen: Sie geben die IP"=Adresse der Netzwerke an, für die dieser Rechner ein Smarthost sein soll.
- SMTP-Relay-Server (relayhost): Wird hier der Server angegeben, der sich um die SMTP-Aufträge für das Internet kümmert. Hier würde also beispielsweise der SMTP-Server Ihres Providers stehen.
- Verschiedene Einstellungen: Es folgen noch ein paar Angaben wie die maximale Postfachgröße, das Zeichen für die lokale Adresserweiterung und die IP-Variante (IPv4, IPv6 oder alle), deren Vorgaben Sie einfach bestätigen können.
Lokale Mail
Die Variable mydestination nimmt die Domäne auf, für die die Mail lokal verteilt wird. Hier sollte in meinem Fall also nicht willemer.de stehen, da mein Bruder beispielsweise auch eine Adresse dieser Domäne hat und in diesem Fall eine Mail an ihn mein privates Hausnetz nie verlassen würde. Aus diesem Grund habe ich für das lokale Netzwerk die Domäne willemer.edu erfunden, in der Annahme, dass wohl niemand eine amerikanische Bildungsstätte nach mir benennen wird. Es wird in der Dokumentation von Postfix vorgeschlagen, für mydestination folgenden Eintrag zu wählen:mydestination = $mydomain $myhostname localhost.$mydomainAuf einem Mailserver für eine Domäne gibt es auch keinen Grund, diesen Eintrag zu ändern. Wenn ein anderer Rechner in meinem Netzwerk auch E-Mails versenden will, muss er seine Mails an gaston weiterleiten, weil dieser den Austausch mit dem Internet durchführt. Ein solcher Rechner würde also gar keine Mails lokal abwickeln, sondern alle Mails an den zentralen Rechner schicken. Dieser Rechner hätte also folgende Einstellung:
mydestination = relayhost = gastonAlle Mails würden dadurch an den Rechner gaston weitergeleitet, der seinerseits prüft, ob es sich um lokale Mails handelt oder ob sie ins Internet weitergeleitet werden müssen.
Wählverbindung mit dem Internet
relayhost
Ist der Rechner über eine Wählleitung mit dem Provider verbunden, soll Postfix die Post bei geschlossener Verbindung speichern und bei offener Verbindung an den Rechner weitergeben, den der Provider zur Verfügung gestellt hat. Den Namen dieses Rechners erfahren Sie bei Ihrem Provider. Bei T-Online heißt er beispielsweise mailto.t-online.de und bei 1&1 smtp.1und1.de. Ein solcher Rechner wird als Relay bezeichnet und in der Konfigurationsdatei main.cf unter dem Namen relayhost festgelegt.relayhost = smtp.1und1.de
defer_transports
Damit die Mail nicht sofort verteilt wird, sondern erst bei einer Verbindung mit dem Internet, wird der Parameter defer_transports auf smtp gesetzt:defer_transports = smtpDa der Server direkt angegeben wird, braucht nicht per DNS der Mailserver der Domäne über den MX-Eintrag gesucht werden. Also schalten Sie das Suchen über DNS ab:
disable_dns_lookups = yesDamit die Mail den Rechner in Richtung Internetprovider verlässt, muss das Kommando sendmail -q abgesetzt werden.
Mailverteilung
Lokale Mbox-Struktur
Nach der Grundkonfiguration verteilt der Postfix-Dämon die lokale Post. Dabei werden die Nachrichten im Mbox-Standard im Verzeichnis /var/mail abgelegt. Für jeden Benutzer gibt es dort eine Datei, die all seine Post aufnimmt. Sie können dies ausprobieren, indem Sie mit dem Befehl mail Post versenden.Umstieg auf Maildir
In der Konfigurationsdatei main.cf im Verzeichnis /etc/postfix wird die Variable home_mailbox auf den Wert Maildir gesetzt. Anschließend muss Postfix die Datei neu einlesen. Der Befehl postfix reload erreicht dies. Die Konfiguration kann auch durch den Befehl postconf geändert werden.postconf -e "home_mailbox=Maildir/" postfix reloadAnschließend können Sie einen POP3- oder einen IMAP-Server installieren, der dann direkt auf die Maildir-Struktur aufsetzt.
SMTP vom lokalen Netzwerk
der Zugriff von einem anderen Rechner des gleichen Netzwerks funktioniert ohne vorherige Konfiguration. Sie können dies ausprobieren, indem Sie den Befehl telnet aufrufen, als ersten Parameter den Mailserver und als zweiten Parameter die Portnummer 25 für SMTP angeben. Sie können so alle Befehle des SMTP-Protokolls über telnet eingeben.telnet server 25 Trying 192.168.109.199... Connected to debian.willemer.edu. Escape character is '^]'. 220 debian.willemer.edu ESMTP Postfix (Debian/GNU) QUIT 221 2.0.0 Bye Connection closed by foreign host.Die Verbindung wird aufgebaut, und Postfix meldet sich artig. Die Eingabe des Wortes QUIT löst die Verbindung, Postfix verabschiedet sich mit dem Wort Bye.
Bediente Interfaces
Sie wollen nicht, dass Postfix alle Schnittstellen bedient? Dann sollten Sie in der Datei main.cf den Wert der Variablen inet_interfaces vom Wert all auf die IP-Adressen der Schnittstellen beschränken, die in Zukunft bedient werden sollen. Bei mehreren Adressen trennen Sie diese durch ein Leerzeichen. Die folgende Definition erlaubt den localhost und das lokale Netzwerk:# inet_interfaces = all inet_interfaces = 127.0.0.1 192.168.109.199
Lookup-Tabellen
In der Datei main.cf ist unter dem Stichwort maps eine Reihe von Lookup-Tabellen angegeben. Diese liegen als ASCII-Textdateien vor, müssen aber, bevor Postfix sie lesen kann, mit dem Programm postmap in je eine Datenbankdatei gewandelt werden. Ein typisches Beispiel dafür ist die Datei canonical. Sie enthält eine Tabelle, die Benutzernamen des Systems in die Namen umsetzt, die vor dem @-Zeichen stehen. Beispielsweise könnte der Benuter till ein E-Mail-Adresse till.eulenspiegel@debian.willemer.edu verwenden wollen.# /etc/postfix/canonical till till.eulenspiegel@debian.willemer.eduWenn Sie darin Änderungen vornehmen, müssen Sie die Datei mit dem Befehl postmap in eine db-Datei wandeln.
cd /etc/postfix postmap canonicalEs entsteht eine Datei namens canonical.db. Der passende Eintrag in der Datei main.cf lautet:
# /etc/postfix/main.cf canonical_maps = hash:/etc/postfix/canonicalDie Datei canonical bewirkt das input address rewriting. Das Gegenstück des output address rewriting wird in der Datei generic festgelegt. Für beide Dateien gibt es eine eigene Manpage.
Warteschlangen
Postfix arbeitet mit mehreren Warteschlangen, die sich unterhalb des Verzeichnisses /var/spool/postfix befinden. Die wichtigsten dieser Warteschlangen sind:- incoming: Hier befindet sich die eintreffende Mail.
- maildrop: Dies ist der Ort, an dem der Anwender seine E-Mail einwirft.
- active: Hier liegt die Mail, die zur Weiterleitung freigegeben ist.
- deferred: In diesem Verzeichnis wird Mail zurückgehalten, die noch auf ihre Weiterleitung warten muss.
Virtuelle Domänen
Postfix bietet die Möglichkeiten, virtuelle Domains zu verwalten. In der Datei main.cf verweisen einige Parameter auf die weiterführenden Konfigurationsdateien. Die folgenden Zeilen zeigen Beispiele für eine Konfiguration, die auf eine PostgreSQL-Datenbank zugreift. Statt pgsql können Sie mysql einsetzen, wenn Sie lieber eine MySQL-Datenbank verwenden wollen.# /etc/postfix/main.cf virtual_alias_maps = pgsql:/etc/postfix/virtual_alias virtual_mailbox_domains = pgsql:/etc/postfix/virtual_domains virtual_mailbox_maps = pgsql:/etc/postfix/virtual_mailboxes virtual_mailbox_base = /var/mail/vmail
DB-Konfiguration
Die Konfigurationsdatei enthält den Benutzer, Passwort, Datenbanknamen und vor allem den SELECT-Befehl, mit dem die gewünschten Daten aus der Datenbank geholt werden. Hier als Beispiel ein Zugriff auf die Domaintabelle:# /etc/postfix/virtual_domains user = maildbuser password = ganzgeheim dbname = mail query = SELECT domain FROM domains WHERE domain='%s' hosts = 127.0.0.1Natürlich muss in der Datenbank eine entsprechende Struktur angelegt worden sein.