Ab geht die Post
The Answer Girl
Am Rande der Legalität?
Schön wär's, wenn das alles wäre. Denn ginge es darum, unsere Testmail zu beantworten, so ist deren Absenderadresse (im Beispiel trish@regtest.enitel.net) alles andere als brauchbar; wäre sie so auf einem anderen Rechner angekommen, sogar illegal, denn sie existiert schlichtweg nicht wirklich. Damit fangen unsere Konfigurationsprobleme erst an…
Gerade Privatpersonen haben ihren Rechner selten im DNS eingetragen. So kann sich Postfix bei der Installation keineswegs guten Gewissens den für die Maschine vorkonfigurierten Fully Qualified Domain Name (FQDN) schnappen, um ihn für die Antwortadresse zu verwenden. Jede Mail sollte schließlich so ausgezeichnet werden, dass eine Antwort darauf auch ankommt. Und hier sieht es für nicht im DNS stehende Rechner düster aus.
Zwar lässt sich in guten Mailprogrammen ein Reply-To:-Header festlegen, mit dem man dem Empfänger-Mail-User-Agent erklärt, an welche Adresse er antworten soll. Schlechte Mailprogramme beachten diesen jedoch nicht. Außerdem haben wir damit immer noch keine gültige Absenderadresse und verstoßen so gegen Internetnormen. Vernünftige und nicht zu alte Mailprogramme erlauben es daher, den From:-Absenderheader auf eine gültige Mailadresse zu setzen.
Das würde reichen, wenn wir unsere Mail einfach nur beim Smarthost-SMTP-Server unseres Providers ablieferten. Doch von dem wollen wir ja gerade nicht abhängen, und da stoßen wir auf ein weiteres Problem: Während wir auf den Reply-To:- und den From:-Header ggf. noch mit unserem MUA Einfluss haben, generiert der entgegen nehmende Mailserver, wie wir an der Testmail gesehen haben, eine sogenannte Envelope- ("Briefumschlag")-Adresse. Der Inhalt dieser From-Zeile (ohne Doppelpunkt) wird von einigen Mailservern auf seine Existenz geprüft, da Spam an dieser Stelle oft eine nicht im DNS nachschlagbare Adresse enthält.
Mit einer solchen, nicht auflösbaren Adresse bringen wir uns in arge Schwierigkeiten: Nicht nur, dass wir bei vielen Mailservern gar keine Mail los werden; einige schicken die darüber informierende Fehlermeldung eben an jene nicht wirklich existierende Adresse, sodass wir die Absage nie erhalten. Wenn Mailpartner wiederholt steif und fest behaupten, Mails nie bekommen zu haben, der Absender sich seinerseits nie an abweisende Post vom gegnerischen Mailerdämon erinnern kann, handelt es sich oft um dieses Szenario.
Adressmanipulation
Also nehmen wir uns schweren Herzens die Postfix-Dokumentation zur Hand. Das Herzstück der Konfiguration ist die Datei main.cf, üblicherweise in /etc/postfix zu finden. Auskunft gibt aber auch der Paketmanager mit rpm -ql postfix | main.cf oder dpkg -S main.cf. (Die rpm-Optionen lassen sich mit -q für "query" – nachfragen und -l für "list(e aller im Paket enthaltenen Dateien)" merken, das -S beim Debian-Paketmanager steht – noch einfacher – für "Suche" oder "Search".)
Auch wenn es sich lohnt, die zum Beispiel in http://totem.fix.no/postfix/basic.html beschriebene Grundkonfiguration genauer in Augenschein zu nehmen (besonders dann, wenn das Senden der Testmail nicht gelang – siehe auch den Kasten "Nur noch konfigurieren – die wichtigsten Parameter aus main.cf"), interessiert uns vor Allem der Punkt Adress Manipulation (http://totem.fix.no/postfix/rewrite.html) in der Dokumentation.
Was für ein halbkriminelles Wort – und doch die einzige Möglichkeit, als "Internetkrüppel" ohne feste IP-Adresse und DNS-Eintrag einen unbescholtenen Mailserver zu betreiben.
Nur noch konfigurieren – die wichtigsten Parameter aus
main.cfZum Glück stehen fast alle Parameter in Postfixens Hauptkonfigurationsdatei auf sinnvollen Defaultwerten. Zudem sind sie – wenngleich auf Englisch – meist recht aussagekräftig dokumentiert. Dennoch sollte man die Konfiguration durchgehen, halbwegs verstehen und ggf. anpassen, bevor man den Server startet.
Wie so oft dient auch in dieser Datei ein # als Kommentarzeichen, das verhindert, dass Postfix den Rest der Zeile ernst nimmt. Ein $ mit einem Variablennamen dahinter bedeutet, dass Postfix statt dieser Kombination den Wert der Variablen "sieht".
- Wenn Sie ein für Ihre Distribution gefertigtes
rpm- oderdeb-Paket einsetzen, werden die verschiedenen Verzeichnisse (queue_directoryfür die Mailwarteschlange sowiecommand_directoryfür die Postfix-Hilfs- bzw.daemon_directoryfür die nötigen Dienstleistungsprogramme) auf die richtigen Werte gesetzt sein. Im Fehlerfall prüfen Sie, ob diese Verzeichnisse vorhanden und die beiden letzten mit den passenden Programmen gefüllt sind. Wenn Sie jedoch schon an dieser Stelle deutliche Fehlstellen bemerken, die nicht auf bewusste Manipulationen Ihrerseits zurück gehen, sparen Sie sich ggf. eine Menge Ärger, indem Sie mit einem neuen Paket einen neuen Anlauf wagen. mail_owner, die Besitzerin der Mailwarteschlange und der meisten Postfix-Prozesse, sollte keinesfalls aufroot, sondern auf einen speziellen User (beispielsweise ganz langweiligpostfix) gesetzt werden. Sehen Sie in der/etc/passwdnach, dass es diesen auch gibt. Wenn nein, müssen Sie ihn anlegen und ihm ggf. die Rechte am Mailspool und den diversen Postfixprogrammen übertragen.- Bei Abläufen, bei denen Postfix keine speziellen Sonderrechte braucht (wie sie der
mail_owneroder in noch stärkerem Maßerootbesitzen), sollte er diese auch nicht haben. Daher setzt mandefault_privsauf einen möglichst rechtelosen Benutzer wie den meistens vorkonfigurierten Usernobody. - Wenn
myhostnameden FQDN des Rechners enthält, brauchen Sie sich ummydomain(das standardmäßig nur den Domänenbestandteil vonmyhostnameenthält) undmyorigin(normalerweise dasselbe wiemyhostname) nicht weiter kümmern. Den Standardwert erfahren Sie zum Beispiel mit dem Kommandohostname --fqdn. Entspricht dieser Wert nicht Ihren Vorstellungen, ändern Sie den Wert Variablen. Vergessen Sie dabei nicht, das Kommentarzeichen zu entfernen. - Vielleicht ist Ihnen aufgefallen, dass jede Mail einen Header namens
Message-ID:enthält. Diese Kennung besteht aus einer von Ihrem Mailserver generierten eindeutigen Zeichenfolge, einem@und dem Wert vonmyorigin. Da die verschiedenen Mailserver jedoch nichts über die jeweils von anderen generierten Strings wissen, sollte auchmyorigineindeutig für Ihren Rechner stehen, damit keine Dubletten auftreten. Auf den Domainnamen Ihres Providers oder auflocalhostsetzen Siemyorigindaher bitte nicht. - Wenn Sie Ihren Mailserver lediglich zum Versenden von Mail nach außen und für lokale Mail benutzen, nicht aber zum
Empfangenvon Mail aus dem Netz, beschränken Sieinet_interfacesauf$myhostname, localhost. - Endstation (
mydestination) für ankommende Mail ist Ihr Mailserver für Mails, die wahlweise anlocalhost, $myhostnameadressiert sind. - In der Datei
aliasesbestimmen Sie, wer die Post bekommt, die an bestimmte lokale Benutzer geht. Wichtig ist zum Beispiel, dass Sie anrootgerichtete Mail einem tatsächlich maillesenden und verantwortlichen Benutzer (zum Beispiel sich selbst) unterschieben. Sinnvoller Standardwert ist
alias_maps = hash:/etc/postfix/aliases
wobei Sie /etc/postfix/aliases zumindest dahin gehend ändern sollten, dass die Zeile mit root: auf der linken Seite rechts daneben entweder Ihren lokalen Benutzernamen oder eine Ihrer gültigen Mailadressen enthält. Beispiel (zum Anpassen, nicht zum unreflektierten Abschreiben!):
root: pjung@linux-user.de
Sollten Sie sich mit Ihrer alten, aus Sendmail-Zeiten stammenden /etc/aliases unendlich viel Mühe gegeben haben, können Sie diese natürlich in alias_maps recyceln. Vergessen Sie jedoch nicht, die Datei mit dem postalias-Kommando ins angegebene hash-Format umzuwandeln.
- Klassischerweise ist
/var/spool/maildasmail_spool_directoryunter Linux. Mithome_mailboxkönnen Sie lokale Mail aber auch in einer Datei im Homeverzeichnis der Benutzer/innen unterbringen. Das ist zum Beispiel sinnvoll, wenn diese Netscape oder Kmail benutzen. Zeitgenossen, die statt einer Folder-Datei gern jede Mail einzeln als Datei abspeichern, ist mithome_mailboxbeizukommen. Experimentieren Sie hier gern ein wenig, indem Sie Mails an einen lokalen Testbenutzer verschicken (und achten Sie darauf, dass Postfix nach jeder Änderung seine Konfiguration neu einlesen muss). Allen Ihren Nutzer(inne)n Recht tun können Sie es allerdings nicht: Für ein System für alle müssen Sie sich schon entscheiden…
Der Punkt ADDRESS REWRITING in der main.cf hört sich ganz nach dem an, was wir wollen: Absenderadressen umschreiben bzw. maskieren. Ein Blick in die mitgelieferte Beispiel-Konfigurationsdatei sample-canonical.cf (im Postfix-Dokumentationsverzeichnis /usr/doc/postfix-19991216 o.ä.) bestätigt, das wir den richtigen Hebel gefunden haben:
# Der Parameter sender_canonical_maps spezifiziert optionale Tabellen, # in denen nachgeschlagen werden kann, welche Envelope- und Header-Adresse # ein bestimmter Absender bekommen soll. # # Sie benötigen diese zum Beispiel, wenn Sie die Absenderadresse user@ugly.domain # zu user@pretty.domain umschreiben wollen, wobei es weiterhin möglich # sein soll, Mail an die Empfängeradresse user@ugly.domain zu schicken.
Unser Stichwort hier ist Envelope- und Header-Adresse: Mit der "Umschlagsadresse" ist jene doppelpunktlose, oberste From-Zeile im Header einer Mail gemeint, mit "Header-Adresse" die From:-Zeile. Also schreiben wir dem Beispiel in der Dokumentation folgend eine Textdatei namens /etc/postfix/sender_canonical. Darin steht links die Mailadresse, wie sie im aktuellen Zustand automatisch erzeugt wird, wenn eine Benutzerin eine Mail abschickt, rechts, wie die passende gültige Adresse lautet. Die linke Seite können Sie Ihrer Testmail entnehmen. Sie besteht aus dem Benutzernamen auf dem System (also dem Namen, mit dem sich die betreffende Nutzerin einloggt), dem @-Zeichen und dem Inhalt der Konfigurationsvariablen myorigin aus main.cf (siehe Kasten). Ein Beispiel:
trish@regtest.enitel.net pjung@linux-user.de
Damit wird aus der lokalen Benutzerin trish die Absenderin pjung@linux-user.de mit einer gültigen Mailadresse.
Jetzt müssen wir in der main.cf lediglich noch die Variable sender_canonical_maps mit dem Namen unserer Tabellendatei füttern:
sender_canonical_maps = hash:/etc/postfix/sender_canonical



