weidner/computer/netz/

Der nachfolgende Artikel ist schon sehr alt und nur noch aus historischen Gründen hier.

Postfix statt Sendmail

Zugegeben, wahrscheinlich die meisten E-Mail im Internet laufen über irgendeine Version von Sendmail. Es ist auch unheimlich flexibel und ich sah auch schon "99 Bottles of Beer" damit programmiert.

Mir hat es trotzdem nicht gefallen. Die Konfiguration kryptisch, so daß ohne 3 cm Buch gerade so die einfachsten Sachen an einer vorgegebenen Konfiguration geändert werden können. Zwar gibt es mit sendmail-cf ein System, daß es erlaubt die Konfiguration mit leichter merkbaren Direktiven einzustellen, aber wenn die Grundkonfiguration z.B. via Linuxconf eingestellt ist, hilft das auch nicht weiter.

Ich wollte schon immer ein anderes E-Mail-System. Wo es ging habe ich bisher meist smail eingesetzt und war damit zufrieden. Da ich aber einerseits lange nichts von einer Weiterentwicklung bemerkt habe und andererseits mir Postfix wegen seiner Modularität sehr gut gefällt, gab ich diesem eine Chance.

Konfiguration

Postfix hat um die 100 Konfigurationsparameter, die über die Datei main.cf eingestellt werden. Zum Glück haben diese sinnvolle Defaultwerte, so daß man zunächst nur wenige Parameter einstellen muß, die in der Dokumentation aufgeführt sind. Konkret sind das:

UUCP-Gateway

Einen Rechner im Internet zu haben, der die eigene E-Mail entgegennimmt, ist schon eine schöne Sache. Wie bekommt man die Mail aber nach Hause? Besonders wenn man nur über Wählleitung und dynamische IP-Adresse in's Netz geht. Abholen via POP3 oder IMAP ist auch nur eine Notlösung und macht vor allem dann doppelten Aufwand, wenn man mehrere Adressen in derselben Domain nutzen will.

Hier biet sich das gute alte UUCP an. Man setzt einen Transport via TCP auf, verschlüsselt die Übertragung mit stunnel und holt die E-Mail gesteuert von zu Hause aus ab.

Wie wird es eingestellt?

In /etc/postfix/master.cf wird ein UUCP-Transport definiert:

 uucp      unix  -       n       n       -       -       pipe
    flags=F user=uucp argv=uux -r -n -z -a$sender - $nexthop!rmail ($recipient)

(alles in einer Zeile)

In /etc/postfix/main.cf werden die Transporttabellen aktiviert:

 transport_maps = hash:/etc/postfix/transport

Außerdem wird die betreffende Domains bei relay_domains zur Liste hinzugefügt.

In /etc/postfix/transport wird die Domain mit dem UUCP-Host verknüpft:

weidner.in-bad-schmiedeberg.de        uucp:weidner

Anschließend wird die Hash neu berechnet:

postmap /etc/postfix/transport

Am Ende wird postfix reload aufgerufen, damit die Änderungen vom laufenden Postfix übernommen werden.

Mailverteiler

Wenn ein Rechner MX für mehrere Domains ist und die ankommenden Mail an verschiedene Rechner weiterleiten soll (z.B. bei einem Mailserver in der DMZ eines Firewal), so legt man geeignete Transporttabellen an, in denen festgelegt wird, welche Mail an welchen Rechner weitergeleitet wird. Dabei werden in /etc/postfix/main.cf die Transporttabellen wie beim UUCP-Beispiel aktiviert (transport_maps).

Dann werden die Zuordnungen in /etc/postfix/transport eingetragen

eine-domain.tld        smtp:mail.eine-domain.tld
extern.eine-domain.tld smtp:mail.andere-domain.tld
andere-domain.tld      smtp:mail.andere-domain.tld

Im Beispiel geht die Mail für extern.eine-domain.tld an einen anderen Rechner, als die für den Rest der Domain.

Damit Postfix die ankommende Mail für fremde Domains annimmt, muß noch für jede zusätzliche Domain ein Eintrag bei relay_domains gemacht werden. Dies kann man entweder direkt in /etc/postfix/main.cf eintragen, oder eine Datei bzw. Map angeben, in der die Domains dann eingetragen werden.

Virtuelle Domains

Wenn man mehrere E-Mail-Domains auf dem eigenen Rechner betreiben will, macht man das am besten mit virtuellen Domains.

So gehts:

In /etc/postfix/main.cf werden die Virtual Tabellen aktiviert:

virtual_maps = hash:/etc/postfix/virtual

In /etc/postfix/virtual werden die virtuellen Adressen Benutzern oder anderen E-Mail-Adressen zugewiesen

andere-domain.tld             irgendwas
@andere-domain.tld            franz
aussen@andere-domain.tld      jemand@ganz-woanders.tld
postmaster@andere-domain.tld  postmaster
diese-domain.tld              irgendwas
@diese-domain.tld             @jene-domain.tld

Anschließend wird die Hash neu berechnet:

# postmap /etc/postfix/virtual

Mit obigem Beispiel geht die Mail an postmaster@andere-domain.tld an den Postmaster dieses Rechners, die E-Mail an aussen@andere-domain.tld geht an jemand@ganz-woanders.tld und alle anderen E-Mail an ...@andere-domain.tld an den lokalen Benutzer franz.

Alle Mail an Adressen der Domain diese-domain.tld werden auf die gleichen Benutzernamen der Domain jene-domain.tld abgebildet.

Nicht vergessen werden darf die erste Zeile, da wo irgendwas steht, kann auch irgendetwas stehen.

Fehlt diese Zeile, dann lehnt der SMTP-Dämon von Postfix alle E-Mail von außerhalb an diese Domain ab (lokal funktioniert es wunderbar).

Am Ende wird postfix reload aufgerufen, damit die Änderungen vom laufenden Postfix übernommen werden.

Posted 2001-06-21
Tags: