Postfix einrichten und absichern

Die Guten ins Töpfchen

Postfix hat sich als Mailserver-Alternative zum guten alten Sendmail etabliert. Dieser Workshop verrät, wie Sie Postfix einrichten, absichern und gegen Spam einstellen.

Der Mailserver Postfix [1] enstand in den späten neunziger Jahren als "IBM secure mailer" mit dem Ziel, eine sichere und schnelle Alternative zum damals weitverbreiteten MTA (Mail Transfer Agent vulgo Mailserver) Sendmail zu bieten. Damals kämpfte der Autor dieses Artikels an seinem Uni-Institut mit einem bizarren Sendmail-Fehler, der den Mailverkehr regelmäßig zum Erliegen brachte. Der Wechsel zu Postfix nach einem kurzen Intermezzo mit Qmail war kurz und schmerzlos. Seitdem gibt es dort keine Probleme mehr mit der Mailzustellung.

Mittlerweile ist Postfix zum Standard-MTA für Ubuntu, Suse und Mac OS X geworden. In allen anderen Distributionen existieren ebenfalls aktuelle Pakete, die sich über die Paketverwaltung schmerzlos nachinstallieren lassen. Dieser Workshop erklärt, wie Sie Postfix für die wichtigsten Situationen einrichten.

Adressklassen

Postfix kennt vier Adressklassen, dabei fällt jede Domain (also alles hinter dem @-Zeichen) in genau eine dieser vier Klassen:

  • Local Domains: Postfix stellt die Mails mit dem »local« -Daemon lokal zu.
  • Relay Domains: Die Mails werden nur relayed, also näher an ihr Ziel, zum Beispiel einen Mailboxserver, gebracht oder zwischengespeichert.
  • Virtual Alias Domains: Der Server schreibt die Empfängeradressen auf eine andere Adressen um. Dieser Vorgang ist rekursiv.
  • Virtual Mailbox Domains: Die Mails werden von Postfixs »virtual« - Daemon an virtuelle Benutzer (also Benutzer, die nicht in »/etc/passwd« stehen) ausgeliefert

Steht eine Domain in mehr als nur einer der vier Klassen, beschwert sich Postfix in der Log-Datei:

warning: do not list domain meinedomain.tld↩
in BOTH mydestination and virtual_alias_domains

Als Postfix-Admin müssen Sie sich also im Klaren sein, in welche der vier Adressklassen eine Domain gehören soll. Üblicherweise nutzt man bei einem einfachen Mailserver lediglich Local Domains und Virtual Alias Domains: Bei den Local Domains handelt es sich um die Hauptdomain(s), für die der Server zuständig sein soll und die Postfix dann lokal zustellt. Sie stehen hinter dem Konfigurationsparameter »mydestination« der Konfigurationsdatei »/etc/postfix/main.conf« :

mydestination = meinedomain.tld

Führen Sie nach jeder Konfigurationsänderung ein »postfix reload« aus, damit die Änderungen wirksam werden. Ob Postfix die Einstellungen übernommen hat, zeigt die Ausgabe von »postconf -n« . Dieser Befehl listet alle explizit gesetzten Parameter auf, sodass Änderungen leicht erkennbar sind. Tragen Sie hier mehr als eine Domain ein:

mydestination = meinedomain.tld,↩
 meineanderedomain.tld

so gilt, das Postfix die Emailadressen »user@meinedomain.tld« und »user@meineanderedomain.tld« in dasselbe lokale Postfach »user« zustellt. Der Eintrag einer Domain als Virtual Alias Domain erfolgt über den Konfigurationsparameter »virtual_alias_domains« in »main.cf« :

virtual_alias_domains = meineganzandere↩
domain.tld

Somit weiß Postfix, dass er für »meineganzanderedomain.tld« Mails annehmen soll. Welche Emailadressen dann allerdings gültig sind, und auf welche individuellen Zieladressen der Server sie umschreibt, ergibt sich aus dem Parameter »virtual_alias_maps« :

virtual_alias_maps = hash:/etc/↩
postfix/virtual_alias_maps

Dabei handelt es sich um ein Mapping (für einen gegebenen Schlüssel wird ein Wert gesucht), bei dem Postfix einen virtueller User (Empfänger, hier der Schlüssel) in einen lokalen Systemuser umschreibt (der Wert), siehe auch [2]. Das »hash:« gibt dabei an, dass es sich um eine Map im Berkeley-DB-Hash-Format handelt. Die Textdatei müssen Sie mit dem »postmap« -Kommando:

postmap hash:/etc/postfix/virtual_↩
alias_maps

in eine durch Postfix nutzbare Form umwandeln. Die Datei »/etc/postfix/virtual_alias_maps« enthält zwei Spalten, die linke ist der Schlüssel, die rechte der Wert:

user1@meineganzanderedomain.tld ↩
postfach1@meinedomain.tld
user2@meineganzanderedomain.tld ↩
postfach2@meinedomain.tld

Einer E-Mailadresse in der ersten Spalte (»user1@meineganzanderedomain.tld« ) ist eine (oder auch mehrere) E-Mailadresse aus der dazugehörigen zweiten Spalte (»postfach1@meinedomain.tld« ) zugeordnet. Somit schreibt Postfix die Empfängeradresse von »user1@meineganzanderedomain.tld« zu »postfach1@meinedomain.tld« um. Die »virtual_alias_maps« wendet der Server (wie andere Maps) solange rekursiv an, bis sich keine Adresse mehr ändert. Dann bestimmt er, was mit »postfach1@meinedomain.tld« zu geschehen hat. In diesem Falle ist ja »meinedomain.tld« in »mydestination« aufgelistet, sodass Postfix entsprechende Mails durch »local« lokal ausliefert.

Lokale Zustellung

Sobald Postfixs »local« -Prozess die Mail zur Zustellung erhält, kann es die Mail in Mailboxen schreiben (es beherrscht nativ die Formate »mbox« oder »Maildir« ). Ebenso erlaubt es die Auslieferung an externe Programme. Vor der Zustellung konsultiert »local« die »alias_maps« , um gegebenenfalls lokale Useraccounts auf andere Accounts, E-Mailadressen oder Programme zuzuordnen.

Standardmäßig erfolgt aber die Auslieferung in die Mailbox des Benutzers im Mbox-Format unter »$mail_spool_directory/$USER« – genau da wo zum Beispiel UW-IMAP die Mailbox erwartet. Wünscht man eine Zustellung im Maildir-Format in »$HOME/Maildir« , um beispielsweise die Mailbox dann mittels Courier-IMAP-Usern bereitstellen zu können, bietet sich die folgende Konfigurationsoption an:

home_mailbox = Maildir/

Die Benutzung von »alias_maps« bewirkt die folgenden Option:

alias_maps = hash:/etc/aliases

Danach prüfen Sie mit »postconf -n« , ob die Einstellung korrekt übernommen wurde:

$ postconf -n alias_maps
alias_maps = hash:/etc/aliases

Die Datei »/etc/aliases« hat das Format »Name: Wert1,Wert2, ...« Der Schlüsel »name« ist dabei die Adresse ohne den Domain-Teil. Die Parameter Wert1, Wert2, … können Emailaddressen, Dateien (zum Beispiel »/tmp/file« ) oder Pipes (wie »|/usr/bin/vacation« ) sein. Ein Eintrag in »/etc/aliases« von der Form: »root: ralf« beispielsweise bewirkt, dass Mail an »root« an den User »ralf« zugestellt wird. Nach Änderungen in der Textdatei müssen sie sie mit »postalias hash:/etc/aliases« in eine durch Postfix nutzbare Form wandeln.

Neben der Verwendung von »alias_maps« ist es den Usern auch möglich, ».forward« -Dateien in ihrem Home-Verzeichnis zu nutzen. Die Syntax entspricht der rechten Seite von »$alias_maps« (also nur »Wert1,Wert2, ...« ). Ein typisches Beispiel ist die Einbindung von »vacation« , das den Sender über die Abwesenheit des Empfänger benachrichtigen soll. Die Datei ».forward« beinhaltet einem solchen Fall:

|/usr/bin/vacation -a user1@meineganz↩
anderedomain.tld -m message.txt postfach1

Bei »postfach1« handelt es sich um den User, an den Postfix die Mail von »user1@meineganzanderedomain.tld« zustellt. Das Programm »vacation« wird durch die Option »-a« instruiert, auf Mails an die Adresse »user1@meineganzanderedomain.tld« mit der Mail in »message.txt« zu antworten.

Ähnliche Artikel

comments powered by Disqus

Artikel der Woche

Eigene Registry für Docker-Images

Wer selber Docker-Images herstellt, braucht auch eine eigene Registry. Diese gibt es ebenfalls als Docker-Image, aber nur mit eingeschränkter Funktionalität. Mit einem Auth-Server wird daraus ein brauchbares Repository für Images. (mehr)
Einmal pro Woche aktuelle News, kostenlose Artikel und nützliche ADMIN-Tipps.
Ich habe die Datenschutzerklärung gelesen und bin einverstanden.

Konfigurationsmanagement

Ich konfiguriere meine Server

  • von Hand
  • mit eigenen Skripts
  • mit Puppet
  • mit Ansible
  • mit Saltstack
  • mit Chef
  • mit CFengine
  • mit dem Nix-System
  • mit Containern
  • mit anderer Konfigurationsmanagement-Software

Google+

Ausgabe /2019