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:
myorigin, um festzulegen, welche Domain in Mail erscheinen soll, die auf dieser Maschine abgeschickt wird
mydestination, um festzulegen, welche Domains local ausgeliefert werden
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.