postfix SMTPd Authentifizierungsproblem zwischen Exchange und externem Relay

dernickel

New Member
Hallo zusammen,

ich habe folgendes Konstrukt:

EXCHANGE <- Postfix <-> Externes Mail-Relay

Wenn eine Mail im Namen eines externen Absenders versendet werden soll, verwendet man in Postfix "smtp_sasl_password_maps" für die Anmelde-Daten und "sender_dependent_relayhost_maps" für's Mapping der Absender zum Relay.
Um Mails an Postfächer des Exchange-Servers zu übermitteln, gibt es die "transport_maps". Daraus ergibt sich folgendes Problem:

Wenn jetzt eine Mail von einem externen Absender generiert wird, die als Empfänger ein Exchange-Postfach anspricht, weißt der Exchange die Authentifizierung ab, da er mit den Daten (die ja eigentlich für den Externen Relay-Host bestimmt sind) nichts anfangen kann. Ich benötige die Auth aber für das externe Relay.

Nun gibt es zwei Möglichkeiten:

1) ich sage dem Postfix, dass er in Richtung Exchange keine Authentifizierung verwenden soll

2) auch Mails an den Exchange werden über das externe Relay geschickt

Weiß irgendjemand wie ich eine der beiden Optionen dem Postfix beibringen kann?

Vielen Dank schonmal und viele Grüße!
 
1) ich sage dem Postfix, dass er in Richtung Exchange keine Authentifizierung verwenden soll

Weiß irgendjemand wie ich eine der beiden Optionen dem Postfix beibringen kann?

Nach kurzem Googeln sieht es danach aus, dass einfach für den Exchange in der sasl password map kein Eintrag erfolgt. Dann wird keine Auth versucht.

Wie 2. funktionieren soll, verstehe ich nicht so ganz. Baut man nicht i.d.R. einen Postfix for einen Exchange davor, damit er gerade nicht von externen Relays direkt erreichbar ist sondern mit dem Postfix als Proxy?
 
Hi,

erstmal danke für die schnelle Antwort. Eben genau das ist ja der Fall. Die password_maps enthält keinen Eintrag für den Exchange. Sie enthält aber sehr wohl einen Eintrag für den fremden Absender. Da der Postfix keinen Unterschied macht, wohin der Transport-Table die Mail tragen will, versucht er IMMER die Auth dorthin zu feuern, egal, ob es der richtige Host ist oder nicht.

Im Fall einer zum Exchange durchgestellten Mail sieht das im Log dann so aus:

Nov 22 08:56:10 MAILSERVER postfix/smtp[21645]: 31E8EFB87A: to=<test@domain.com>, relay=exchange.domain.com[192.168.x.y]:25, delay=55194, delays=55194/0.02/0/0, dsn=4.7.0, status=deferred (SASL authentication failed: server exchange.domain.com[192.168.x.y] offered no compatible authentication mechanisms for this type of connection security)

Nehme ich einen Absender, für den keine Auth-Daten hinterlegt sind, gehen die Mails einwandfrei zum Exchange.

Ich habe jetzt einen kleinen Workaround gebaut, indem ich die Transport-Table komplett entfernt habe. Dies hat aber zur Folge, dass alle Mails die eigentlich direkt zum Exchange können, erstmal nach extern bzw. zu unserem eigenen externen Relay geschickt werden, bevor sie zum Exchange gehen. Schöner wäre natürlich, wenn der Postfix auch in der Lage ist Mails an unseren Exchange direkt durchzustellen, nur eben ohne Authentifizierung.

Warum der Postfix zum Exchange schicken soll? Weil es sowas wie unser "internes Relay" ist. Alle möglichen Services und Loggings sollen nicht direkt zum Exchange pusten, weil der sonst damit überfordert wäre, sondern alles soll erstmal auf dem Postfix eingehen. Von dort können die Mails dann nach extern oder zum Exchange verteilt werden. So kommt auf dem Exchange auch wirklich nur an, was auch für ihn bestimmt ist.
 
Last edited by a moderator:
Ich würde ja erwarten, dass nach dem Empfänger das Relay ausgewählt wird und nach dem Relay dann die Auth-Informationen. Oder von mir aus auch nach dem Absender das Relay und dann nach dem Relay die Auth-Info. Also immer Relay->AuthInfo. Und die ist ja in dem File. Also müsste bei Relay=Exchange keine AuthInfo vorliegen.
Wieso bei einem Relay je nach Absender ein Unterschied gemacht werden sollte, erschließt sich mir gerade nicht. Für das Relay ist ja eher der Empfänger entscheidend. Ist es ein lokaler Empfänger, lässt man ohne Authentication einliefern. Ist es ein externer Empfänger, dann erfordert man Authentication.
Da die Absenderinformation völlig willkürlich ist, sollte diese in den Betrachtungen völlig außen vor sein.
 
Die Notwendigkeit SMTP-Auth in Abhängigkeit des Absenders zu nutzen ergibt sich daraus, dass wir als Dienstleister Mails im Name anderer Unternehmen versenden.

Der Endkunde soll nicht sehen, dass die Mails von einem Dienstleister erstellt wurden, was es notwendig macht, dass wir die Mails über das Relay unseres Kunden schicken. Und dieser erfordert eben eine Authentifizierung. So kommt dieses Konstrukt zustande.
 
Ok, das erklärt den Zusammenhang Sender=>Relay. Dann sollten aber auch Mails an den Exchange die Kette "Postfix=>Sender-Relay=>Exchange" nehmen. Das würde den Spezialfall bei "Empfänger=Exchange" entfernen.

BTW: Das zeigt mal wieder, dass das Verstecken irgendwelcher Infrastruktur fast zwangsläufig zu Problemen führt. Meine persönliche Meinung ist ja, dass das die Mühe nicht wert ist. Und ist der Postfix, der vor dem Sender-Relay steht, nicht auch in den Headern drin? So wie die Systeme, die an den Relay-Postfix senden? Oder wird das da auch rausgeschält?
 
Last edited by a moderator:
Absolut richtig! Habe ich auch überhaupt keine Bauchschmerzen mit. Aber was ist mit Mails, die direkt an den Exchange gehen können, weil der Absender ein interner ist? Diese gehen dann immer zu unserem externen Relay, um anschließend zum Exchange geschickt zu werden. Diesen Umweg würde ich mir gern sparen.

Unser Alt-System ist ein sendmail-Server, der das scheinbar anders handelt. Dort funktioniert dieses Konstrukt einwandfrei. Er ist aber maßlos veraltet und wir möchten beim neuen System keinen Sendmail mehr einsetzen. Soweit macht der Postfix ja auch alles was er soll.
 
Back
Top