Hallo zusammen,
ich stehe etwas auf dem Schlauch bezüglich der Frage, welches Zertifikat der Exchange 2019 beim Senden von Mails verwendet bzw. verwenden sollte. Szenario ist wie folgt: Der Exchange sendet seine Mails nicht direkt ins Internet sondern über unsere Sophos XG Firewall als Mailgateway. Im Exchange ist dafür ein Sendeconnector eingerichtet, der als Smarthost die Sophos drin stehen hat. Als FQDN ist dort mail.domäne.com eingetragen. Grundsätzlich funktioniert das Ganze auch, ich bin aber bei einer Fehlersuche für ein anderes Problem im SMTP-Log der Sophos über eine Zertifikatsfehlermeldung gestolpert, die aussagt, dass der Exchange wohl ein Selbstsigniertes Zertifikat sendet. Da in der Konfig der Sophos angegeben ist, dass er auch ungültige Zertifikate akzeptiert hat das keine funktionale Auswirkung, ich würde es aber trotzdem gerne gerade ziehen. Ich habe dann mal mit Get-SendConnector geprüft, "TLSCertificateName" ist aber im entsprechenden Connector leer. Ist das normal?
Als Zertifikate hat der Exchange die folgenden:
1. Das MS-Organization-P2P-Access Zertifikat, das nur einen Tag lang gültig ist. Enthält den internen Hostnamen und die interne IP und wird automatisch von MS jeden Tag erneuert. Ist an keinen Service gebunden.
2. Unser öffentliches SAN-Zertifikat, das den Namen "mail.domäne.com" und "autodiscover.domäne.com" enthält. Das ist auch an alle Dienste gebunden und wird auch für die Clients und die OWA korrekt verwendet.
3. Ein selbst signiertes Zertifikat, das den internen Hostnamen und die interne FQDN enthält. Ist an IIS und SMTP gebunden.
4. Das selbst signierte Microsoft Exchange Server Auth Certificate, das enthält eine Wildcard für unsere komplette Domäne. Ist an SMTP gebunden
5. Das selbst signierte WMSvc-SHA2 Zertifikat. Ist an keinen Service gebunden.
6. Ein selbst signiertes Federation Zertifikat.
Ich wäre jetzt eigentlich davon ausgegangen, dass der Exchange standardmäßig das Zertifikat nimmt, dass zum Konnektor eingestellten FQDN passt, das scheint offensichtlich aber nicht so zu sein.
Kann ich jetzt einfach über Set-SendConnector das gewünschte Zertifikat (also Nummer 2) einstellen, oder hat das noch irgendwelche Nebenwirkungen? Oder mache ich hier irgendwo einen Denkfehler?
Danke schon mal im Voraus für eure Hilfe
"TLSCertificateName" ist aber im entsprechenden Connector leer. Ist das normal?
Ja, dann wird das "passendenste" Zertifikat gewählt. Also das, welches den im HELO String angegebenen Namen enthält und die längste Laufzeit hat (so mein Wissensstand derzeit)
Wenn man ein bestimmtes Zertifikat an den Sendeconnector binden möchte, dann muss man das über den TLSCertificateName tun. Dann muss man aber auch jedesmal bei Zertifikatswechsel dran denken. :)
Hallo Norbert,
das ist ja was mich verwirrt: Im HELO String des Sendeconnectors ist mail.domäne.com eingestellt, aber die Sophos beschwert sich darüber, dass sie ein internes bekommt. Von den Inhalten im Log sieht es für mich so aus, als wenn die Nummer 1 gesendet würde, weil nur da interner Name + IP drin sind. In den Einstellungen des Connectors sehe ich aber gerade, dass der Parameter "ForceHELO" auf "false" steht. Kann das damit zu tun haben, müsste der True sein? Oder ist das so richtig?
Ansonsten würde ich das Zertifikat wirklich direkt an den Connector binden.
der Parameter "ForceHELO" auf "false" steht.
Das soll auch so sein, denn der erzweingt bei "True" die Verwendung von HELO anstatt EHLO. ;)
"Mit dem Parameter ForceHELO wird angegeben, ob HELO anstelle des standardmäßigen EHLO gesendet wird."
Ansonsten würde ich das Zertifikat wirklich direkt an den Connector binden.
Versuchs doch mal. Wäre vermutlich zielführender. Danach kann man ja immer noch knobeln, warum Exchange das falsche nutzt.
OK, werde ich dann mal versuchen. Die korrekten Kommandos dafür wären dann diese, oder? Muss danach irgendwas neu gestartet werden oder greift das sofort?
$Cert = Get-ExchangeCertificate -Thumbprint <Thumprint des gewünschtenZertifikates> $TLSCertificateName = "<i>$($Cert.Issuer)<s>$($Cert.Subject)" $TLSCertificateName Set-SendConnector -Identity <Name des Connectors> -TlsCertificateName $TLSCertificateName
Soweit ich weiß, greift das sofort. Zur Not halt den Transportservice mal durchtreten. Ist ja nicht schlimm
Ich merke gerade, dass ich an der falschen Richtung suche. Der SSL-Fehler im Sophos Log ist bei ankommenden Mails, nicht bei ausgehenden. War nur nicht direkt ersichtlich für mich. Somit ist hier der Empfangsconnector der Schuldige, nicht der Sendeconnector. Der Sendeconnector verwendet schon das richtige Zertifikat, habe ich gerade im SendLog des Exchange gesehen.
Ich muss also eher schauen, warum der Empfangsconnector falsch ist.
Weil du vermutlich den Default Frontendconnector mit deiner Sophos ansprichst. Da ist immer der hostname als HELO drin. Also leg dir einen eigenen Connector an und erlaube nur der Sophos den Zugriff und passe den HELO Namen an. Nur anonyme Nutzer und TLS sollten ausreichen.
Stimmt, der spricht den Default Connector an, weil der an alle Adressen mit Port 25 und von allen Adressen horcht. Das haben wir nie angepasst.
Ich bau mir das mal und teste. Vielen lieben Dank für die Hilfe.
Nie den Default Connector für sowas verwenden. Machts nur unnötig umständlich. :) Logging am neuen Connector anschalten nicht vergessen
So, neuen Connector eingerichtet und an der Sophos auch noch was angepasst (die hat bisher den Exchange per IP und nicht per Name angesprochen) und die Fehler im Log sind weg.
Lieben Dank für die Hilfe. Und für den Hinweis mit der Protokollierung, die wär mir sonst durchgegangen.