Postfix, 2 relays, eines SMTP-25 das andere SSL/TLS-465

Stefan324

New Member
Hallo zusammen,

ich bin neu bei postfix eingestiegen, da ich 2 Domains habe, und postfix den Versand regeln soll.
Ich habe nun bereits einiges ausprobiert, aber ich finde nicht zur produktiven Lösung. :-(

Jede Domain befindet sich bei einem anderen Provider und postfix soll auf Basis des Absenders die Mail an den jeweiligen Smarthost weiterleiten.

Die domain1 befindet sich bei einem speziellen Anbieter, diese Anbindung erfolgt per IPsec-Tunnel und die Mails werden per SMTP 25 an deren Relay(s) übergeben und von dort versendet.
Eine domain2 befindet sich bei Strato, dort muss per SMTP (SSL/TLS) 465 versendet werden.

Beides funktioniert, wenn ich es mit jeweils angepasster config teste, aber ich finde keine gemeinsame Lösung.

Mal anbei ein Auszug der config, damit klappt es mit domain1 und smtp.
Für domain2 mit Strato verlangt postfix aber nach "smtp_tls_wrappermode = yes" und "smtp_tls_security_level = encrypt"; wenn ich das aktiveren, dann klappt Strato mit domain2, aber dann funktioniert domain1 nicht mehr.

Die Lösung ist doch bestimmt ganz greifbar vor mir, oder nicht?

/etc/postfix/main.cf:
############################################################################​
# Settings by local administrator​
############################################################################​
inet_interfaces = all​
inet_protocols = ipv4​
myhostname = sudmzsv032.dmz.local​
mynetworks = 172.31.199.0/24​
local_header_rewrite_clients = permit_mynetworks​
maillog_file = /var/log/postfix.log​
lmtp_tls_enforce_peername = no​
smtp_tls_enforce_peername = no​
smtpd_peername_lookup = no​
sender_dependent_relayhost_maps = hash:/etc/postfix/relay_by_sender​
smtp_sasl_password_maps = hash:/etc/postfix/relay_passwds​
smtp_sasl_auth_enable = yes​
smtp_sasl_security_options = noanonymous​
smtp_tls_policy_maps = hash:/etc/postfix/relay_and_encrypt​
#smtp_use_tls = yes​
smtp_enforce_tls = no​
smtp_tls_loglevel = 1​
#smtp_tls_per_site = may​
#smtp_tls_wrappermode = yes​
#smtp_tls_security_level = encrypt​
smtputf8_enable = yes​
smtputf8_autodetect_classes = all​

/etc/postfix/relay_by_sender:
@domain1.de [mx1.provider.net]:25, [mx2.provider.net]:25, [mx3.provider.net]:25, [mx4.provider.net]:25,​
@domain2.de [smtp.strato.de]:465​

/etc/postfix/relay_and_encrypt
[mx1.provider.net]:25 none​
[mx2.provider.net]:25 none​
[mx3.provider.net]:25 none​
[mx4.provider.net]:25 none​
[smtp.strato.de]:465 encrypt​

/etc/postfix/relay_passwds
[mx1.provider.net]:25 NoUser+NoPassword​
[mx2.provider.net]:25 NoUser+NoPassword​
[mx3.provider.net]:25 NoUser+NoPassword​
[mx4.provider.net]:25 NoUser+NoPassword​
[smtp.strato.de]:465 name@domain2.de : password​
 
Last edited:
Ich habe da jetzt zwar nicht all zu viel Ahnung, davon aber besonders viel. Vielleicht kommen noch andere dazu. ;-)

Ich sehe, dass Du da eine smtp_tls_policy_maps hast, mit der Du smtp_tls_security_level für die verschiedenen Absender konfigurierst. Das ist schon mal wichtig. Weiterhin hast Du aber die Einstellung smtp_tls_wrappermode, die aber so direkt nur statisch für alle Absender setzbar ist. Dafür brauchst Du auch noch eine dynamische Variante:

Wenn ich das richtig verstanden habe, kann man sich seinen eigenen Transport basteln

Der Default-Transport smtp in master.cf ist so definiert:

Code:
smtp       unix -       -       n       -       -       smtp

Soweit mir bekannt ist kann man sich jetzt einen eigenen Transport wie folgt basteln, was afaik eine übliche Methode ist, um statische Werte variabel setzen zu können.

Das geht mit einem weiteren Eintrag in der gleichen Datei:

Code:
smtp_notls unix -       -       n       -       -       smtp
        -o smtp_tls_wrappermode=no

Da würde ich jetzt auch noch mal in der Doku zu master.cf nachschauen bzgl. der Syntax. In der master.cf sind auch noch andere default_services, die als Vorlage dienen, auch wenn das jetzt eher listeners sind anstatt transport-Definitionen. Auf die Weise kannst Du auch noch weitere transportspezifische Einstellungen setzen.

Mit der Methode könntest Du Dir auch die smtp_tls_policy_maps sparen, in dem Du das einfach im Transport als weitere Option spezifizierst (-o smtp_tls_security_level=none).

In Deiner Datei zu sender_dependent_relayhost_maps hast Du ein transport(5) Format. Das ist dann so spezifiziert:

Code:
transport:nexthop
...
The transport field specifies the name of a mail delivery transport
(the first name of a mail delivery service entry in the Postfix master.cf file).

Da könnte in Deiner sender_dependent_relayhost_maps also so etwas drin stehen:

Code:
@domain1.de smtp_notls:[mx1.provider.net]:25, smtp_notls:[mx2.provider.net]:25, ...

Die :25 könnte man vermutlich auch weglassen, weil das der Default-Port des "smtp"-Utilties ist.
 
Last edited:
Hallo greystone,

vielen Dank für Deine Infos. Es hat sich nun etwas gebessert. Vielen Dank!
Diese Einträge habe ich angepasst und die Anbindung an Strato (via SSL/TLS) klappt nun ohne Probleme.

So hat sich meine config nun angepasst...

/ets/postfix/main.cfg​
#smtp_use_tls = yes​
#smtp_enforce_tls = no​
smtp_tls_loglevel = 1​
#smtp_tls_per_site = may​
smtp_tls_wrappermode = yes​
smtp_tls_security_level = encrypt​
/etc/postfix/relay_by_sender:​
@domain1.de smtp_notls:[mx1.provider.net]:25​
@domain2.de [smtp.strato.de]:465​
/etc/postfix/master.cf​
smtp_notls unix n - n - - smtp​
-o smtp_tls_wrappermode=no -o smtp_tls_security_level=none​

Aber die reine SMTP-Anbindung an @domain1.de klappt leider immer noch nicht.
Die Fehlermeldung hat sich nun aber geändert; jetzt liegt es nicht mehr an dem wrapper, sondern angeblich am Hostname.
Aber der ist ja auch unverändert.
Der Fehler stellt sich nun wie folgt dar:

Apr 18 12:35:21 sudmzsv032 postfix/cleanup[7684]: 622FB283BC0: message-id=<20230418103519.622FB283BC0@sudmzsv032.dmz.local>​
Apr 18 12:35:21 sudmzsv032 postfix/qmgr[7675]: 622FB283BC0: from=<stefan324@domain1.de>, size=478, nrcpt=1 (queue active)​
Apr 18 12:35:21 sudmzsv032 postfix/smtp[7688]: fatal: valid hostname or network address required in server description: smtp_notls:[mx1.provider.net]:25​
Apr 18 12:35:22 sudmzsv032 postfix/qmgr[7675]: warning: private/smtp socket: malformed response​
Apr 18 12:35:22 sudmzsv032 postfix/qmgr[7675]: warning: transport smtp failure -- see a previous warning/fatal/panic logfile record for the problem description​
Apr 18 12:35:22 sudmzsv032 postfix/master[7062]: warning: process /usr/libexec/postfix/smtp pid 7688 exit status 1​
Apr 18 12:35:22 sudmzsv032 postfix/error[7690]: 622FB283BC0: to=<stefan324@domain-extern.de>, relay=none, delay=3.4, delays=2.4/1/0/0.03, dsn=4.3.0, status=deferred (unknown mail transport error)​
Apr 18 12:40:21 sudmzsv032 postfix/smtpd[7593]: timeout after END-OF-MESSAGE from unknown[192.168.0.127]​

Ich habe nun bereits versucht die Einträge in meiner "/etc/postfix/relay_by_sender" anzupassen, aber das ringt mir keine Lösung.

Hättest Du mir noch eine Idee???
 
Hallo Stefan,

Anmerkung vorab: Bitte verwende Code-Tags, damit man Code-/Logzeilen besser lesen kann (Symbol "3 Punkte in vertikaler Reihe" und darunter Symbol </>).

Die folgende Fehlermeldung habe ich mal gegoogelt...

Code:
fatal: valid hostname or network address required in server description: smtp_notls:[mx1.provider.net]:25

...und bedeutet wohl, dass die - von mir vorgeschlagene Syntax - so nicht richtig ist.

Grüße,
g.

Nachtrag: Bei mir funktioniert das so.

Was ich aufgrund fehlender Code-Tags nicht sehe, ist der exakte Inhalt der Datei master.cf.
Die Fortsetzungszeile von smtp_notls, die mit " -o smtp_..." beginnt muss mit einem Leerzeichen anfangen!

Ansonsten: Welche Postfix-Version hast Du im Einsatz? Zeig mal die Ausgabe von postconf in Code-Tags. . Die Ausgabe von
Code:
inxi -v2
wäre auch hilfreich, um Informationen zu Deiner Umgebung zu sehen. (Inxi musst Du vorher installieren).

(Anonymisiere sensible Daten bitte vor dem Posten hier)
 
Last edited:
Back
Top