Postfix 2.3.0 + Absender-abhängiges Mail-Relay mit SMTP-Auth für ausgehende Mails

ozt

Registered User
Hallo!

Abhängig von der Absende-Domain möchte ich meinen Postfix so konfigurieren, daß er unterschiedliche SMTP-Server als Relay verwendet (natürlich mit unterschiedlichen SMTP-Auth-Daten):

Beispiel:
eMails von @abc.de über smtp-auth 1 (Host:abc.de,User:abc,Pass:abc)
eMails von @def.de über smtp-auth 2 (Host:def.de,User:def,Pass:def)
eMails von @xzy.de direkt raus

Dafür habe ich folgende Einstellungen getroffen:

In die main.cf habe ich folgendes eingetragen:
Code:
smtp_sender_dependent_authentication = yes
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_type = cyrus
smtp_sasl_security_options =

Die sasl_passwd schaut wie folgt aus:
Code:
abc.de abc:abc
def.de def:def
Die habe ich auch mit "postmap hash:/etc/postfix/sasl_passwd" umgewandelt.

Wenn ich nun mit der PHP-mail()-Funktion eine eMal verschicke, dann klappt das irgendwie nicht:
mail("testmailempfaenger@gmail.com","test-titel","test-inhalt","From: lala@abc.de");
Ebenso hat ein Versenden mit einer lokalen Telnet-Verbindung auf Port 25 keinen Erfolg.

Code:
Jul 23 14:35:31 meinemaschine postfix/pickup[8234]: 94FF9F6C148: uid=30 from=<wwwrun>
Jul 23 14:35:31 meinemaschine postfix/cleanup[8328]: 94FF9F6C148: message-id=<20060723123531.94FF9F6C148@meinemaschine.de>
Jul 23 14:35:31 meinemaschine postfix/qmgr[8235]: 94FF9F6C148: from=<wwwrun@meinemaschine.de>, size=329, nrcpt=1 (queue active)
Jul 23 14:35:32 meinemaschine postfix/smtp[8336]: 94FF9F6C148: to=<testmailempfaenger@gmail.com>, relay=gmail-smtp-in.l.google.com[64.233.183.114]:25, delay=0.65, delays=0.01/0.01/0.12/0.51, dsn=2.0.0, status=sent (250 2.0.0 OK 1153658126 p72si315552nfc)
Jul 23 14:35:32 meinemaschine postfix/qmgr[8235]: 94FF9F6C148: removed
Die Mail wird direkt zugestellt und nicht über das gewünschte Relay (abc.de, bei dem der MX-Eintrag auf mail.abc.de eingestellt ist).

Trage ich zusätzlich in die main.cf noch
Code:
relayhost = abc.de
ein, dann klappt der Versand über diesen einen Relay-Host (aber Postfix verschickt dann IMMER über abc.de und eben nicht nur für bestimmte Absender):
Code:
Jul 23 14:42:07 meinemaschine postfix/pickup[8502]: 54242F6C148: uid=30 from=<wwwrun>
Jul 23 14:42:07 meinemaschine postfix/cleanup[8509]: 54242F6C148: message-id=<20060723124207.54242F6C148@meinemaschine.de>
Jul 23 14:42:07 meinemaschine postfix/qmgr[8503]: 54242F6C148: from=<wwwrun@meinemaschine.de>, size=329, nrcpt=1 (queue active)
Jul 23 14:42:08 meinemaschine postfix/smtp[8511]: 54242F6C148: to=<testmailempfaenger@gmail.com>, relay=mail.abc.de[123.123.123.123]:25, delay=1, delays=0.1/0.01/0.92/0.01, dsn=2.0.0, status=sent (250 Ok: queued as A93038ACE82)
Jul 23 14:42:08 meinemaschine postfix/qmgr[8503]: 54242F6C148: removed

Mehrere Einträge für relayhost in der main.cf akzeptiert Postfix leider nicht (oder ich hab nicht verstanden, wie das funktioniert).

Sehr gut in diesem Zusammenhang ist Huschis How-To: huschi.net - Postfix: Mail-Relay mit SMTP-Auth für ausgehende Mails und ein kleiner Eintrag im Postfix SASL How-To: Postfix SASL Howto . Leider finde ich keinen Hinweis zur Lösung meines Problems.

Was hab ich übersehen?

Vielen Dank für Eueren Support und einen kleinen Hinweis :-)
 
Mehrere Einträge für relayhost in der main.cf akzeptiert Postfix leider nicht
Genau. Das ist erst für kommende Versionen geplant.
Angeblich kann es die aktuelle Developer-Version bereits. Ist aber noch absolut Beta.

huschi.
 
How-To: Postfix 2.3 + Absender-abhängiges Mail-Relay + SMTP-Auth für ausgehende Mails

Nach langer Recherche und ausgiebigem Probieren hab ich´s rausgefunden:

How-To: Konfiguration des Postfix mit Absender-abhängigem Mail-Relay und SMTP-Auth für ausgehende Mails

Das Problem
Auf einem Server werden unterschiedliche Domains (abc.de, def.de) gehostet - genauer: die Websites dieser Domains (A-Eintrag im DNS). eMails von diesen Domains werden über andere Server verschickt und empfangen (abc.de über smtp.abc.de, def.de über mail.def.de). Soweit ein übliches Szenario. Problematisch wirds aber, wenn Scripts auf den Websites eMails versenden, in deren Absender die Domain selbst auftaucht (z. B. über ein Kontaktforumlar auf der Website, welches eine eMail mit dem Absender ihr-eintrag-in-unserem-kontaktformluar@abc.de an den Nutzer des Kontaktformulars zur Bestätigung verschickt). Eine Reihe großer Provider klassifizieren eine solche eMail als SPAM (z. B. AOL), weil die eMail nicht über den Server relayed wurde, auf den der MX-Eintrag der Absender-eMail-Adresse zeigt (das wäre smtp.abc.de bzw. mail.def.de gewesen). Das ist natürlich sehr unschön!

Dieses How-To zeigt, wie ein solches Problem mit dem Postfix-Mailer gelöst werden kann. Für qmail gibts hier eine ähnliche Lösung.

Die Lösung
Die Lösung für dieses Problem besteht darin, die eMails, die von den Scripts der Website generiert werden, entsprechend ihrem Absender unterschiedlich zu versenden - dies wird als Absender-abhängiges Mail-Relay bezeichnet. eMails, in deren Absender-Adresse die Domain abc.de steht werden über smtp.abc.de relayed, eMails mit def.de über mail.def.de. Natürlich ist es notwendig, sich an den beiden SMTP-Severn mit unterschiedlichen Anmeldedaten anzumelden (smtp.abc.de mit UserABC, PassABC und an mail.def.de mit UserDEF und PassDEF).

Das Postfix-Feature für das Absender-abhängige Mail-Relay heisst "sender dependent relayhost maps".
Zum Aktivieren braucht man eine Datei, die die unterschiedlichen Absender-Adressen mit den passenden Relays enthält. Diese Datei kann beliebig benannt werden (ich habe sie "relaymaps" genannt und ins Postfix-Verzeichnis /etc/postfix gelegt). In der Datei steht pro Zeile die Absende-Domain (oder ein identifizierender Teil davon) und der Server, über den das Relaying erfolgen soll.
Beispiel "/etc/postfix/relaymaps":
Code:
@abc.de smtp.abc.de
@def.de mail.def.de
Damit Postfix mit dieser Datei arbeiten kann, muß diese mittels postmap umgewandelt werden:
Code:
postmap /etc/postfix/relaymaps
Dann muß das entsprechende Feature in der Postfix-Konfigurationsdatei "/etc/postfix/main.cf" eingestellt werden. Folgender Eintrag muß in main.cf hinzugefügt werden:
Code:
sender_dependent_relayhost_maps = hash:/etc/postfix/relaymaps

Jetzt muß Postfix noch wissen, welche Login-Daten für welchen Relay-Server verwendet werden. Das passende Feature heisst "sender dependent authentication".
Dafür braucht man wieder eine extra Datei, die die unterschiedlichen Relay-Sever und die User/Passwort-Kombinationen enthält. Diese Datei kann beliebig benannt werden (ich habe sie "sasl_passwd" genannt und ins Postfix-Verzeichnis /etc/postfix gelegt).
Beispiel "/etc/postfix/sasl_passwd":
Code:
@abc.de UserABC:PassABC
@def.de UserDEF:PassDEF
Damit Postfix mit dieser Datei arbeiten kann, muß diese mittel postmap umgewandelt werden:
Code:
postmap /etc/postfix/sasl_passwd
In die main.cf habe ich folgendes eingetragen:
Code:
smtp_sender_dependent_authentication = yes
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_type = cyrus
smtp_sasl_security_options = noanonymous
Dann muß Postfix mittels
Code:
postfix reload
neu gestartet werden und fertig ist das Absender-abhängiges Mail-Relay mit SMTP-Auth für ausgehende Mails.

Im Mail-Logfile sieht eine eMail, die nicht über das Relay verschickt wurde, so aus (Absender: test@xyz.de):
Code:
Sep  6 18:32:10 meinemaschine postfix/qmgr[10599]: 811ACF6C153: from=<test@xyz.de>, size=330, nrcpt=1 (queue active)
Sep  6 18:32:16 meinemaschine postfix/smtp[10862]: 821ACF6C153: to=<test@gmail.com>, relay=gmail-smtp-in.l.google.com[64.233.183.27]:25, delay=5.6, delays=0.01/0/5.5/0.11, dsn=2.0.0, status=sent (250 2.0.0 OK 1157110328 y24aa1456483nfb)
Sep  6 18:32:16 meinemaschine postfix/qmgr[10599]: 821ACF6C153: removed
Die gleiche eMail mit einem anderen Absender (test@abc.de), die über das Relay smtp.abc.de versendet wurde, schaut so aus:
Code:
Sep  6 18:30:46 meinemaschine postfix/qmgr[10599]: E9915F6C153: from=<test@abc.de>, size=387, nrcpt=1 (queue active)
Sep  6 18:30:49 meinemaschine postfix/smtp[10862]: E1115F6C153: to=<test@gmail.com>, relay=smtp.abc.de[123.123.123.123]:25, delay=26, delays=22/0.02/3.4/0.01, dsn=2.0.0, status=sent (250 Ok: queued as 45C9C8AC228)
Sep  6 18:30:49 meinemaschine postfix/qmgr[10599]: E1115F6C153: removed
 
Last edited by a moderator:
Back
Top