Jump to content

Mail-Versand über SQL Server 2012 mit Office 365-Mailadresse


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Sehr geehrte SQL-Server-Experten,

nachdem viel Recherche und viele Versuche mein Problem nicht lösen konnten, bitte ich hier einmal um Experten-Rat.

 

Gegeben ist ein SQL-Server 2012 SP4 V 11.0.7507 auf einem Windows Server 2012 R2 mit aktuellem Patch-Level und .NET Framework 4.8.

 

Wir möchten die im SQL-Server integrierte Datenbank-E-Mail-Funktion nutzen, um über zwei verschiedene Office365-Mail-Adressen E-Mails aus dem SQL-Server heraus zu versenden.

 

Beide Office 365-Adressen haben Lizenz-technisch einen „Exchange Online Plan 1“ (also sind jeweils eine „vollwertige eigenständige“ Mailbox) sowie ist im Office Admin Center für beide Adressen das authentifizierte SMTP aktiviert.

SMTP soll laut Angabe Microsoft über den Server smtp.office365.com mittels TLS 1.2 und Port 587 erfolgen. Nutzername und Passwort wurden zigmal auf etwaige Tippfehler hin geprüft. Im E-Mail-Einstellfenster des SQL Management Studios ist nebst Port-Nummer 587 auch die Option „Für diesen Server ist eine sichere Verbindung (SSL) erforderlich“ angehakt sowie Standardauthentifizierung gewählt. Als Nutzername ist die vollständige Mail-Adresse eingetragen.

 

Beim Versuch, über das SQL Management Studio eine Testmail zu senden, erhalte ich laut Protokoll die leider wenig aussagekräftige Fehlermeldung „Die E-Mail konnte wegen einem Fehler beim Mailserver nicht an die Empfänger gesendet werden. Ausnahmemeldung: E-Mails können nicht an den Mailserver gesendet werden. (Fehler beim Senden von Mail.).“

 

Das ist alles. Kein Fehler-Code oder sonstiges.

 

Ich möchte den Fehler „im SQL drin“ vermuten, denn:
-    Ich konnte beide Mail-Adressen fehlerfrei in einem Mozilla Thunderbird einrichten und problemlos Mails versenden und empfangen
-    Ich kann über die Powershell vom selben SQL Server aus problemlos eine Test-Mail über Port 587 senden (auch als Nutzer ohne Admin-Rechte am Server)
Dadurch meine ich, etwaige Port- oder Firewall-Probleme ausschließen zu können (der Vollständigkeit habe ich natürlich dennoch bereits mit testweise komplett deaktivierter Firewall getestet gehabt).

 

„Irgendwas“ macht der SQL-Server selbst anders.

 

Laut Online-Recherche zu obiger wenig aussagekräftige Fehlermeldung würde die falsche TLS-Version genutzt werden.

Frage ich über Powershell, welches TLS-Version Windows nutzt, wird artig TLS 1.2 geantwortet (sonst würde zudem ja auch der Test-Versand über Powershell nicht funktionieren).

 

Folgende Dinge habe ich erfolglos probiert:

 

Registry-Schlüssel angelegt/angepasst:
HKLM\SOFTWARE\Microsoft\.NETFramework\v4.0.30319: DWord “SchUseStrongCrypto” mit Wert 1
HKLM\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v4.0.30319: DWord “SchUseStrongCrypto” mit Wert 1
HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Client
"DisabledByDefault"=dword:00000001
"Enabled"=dword:00000000
HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Server
"DisabledByDefault"=dword:00000001
"Enabled"=dword:00000000
HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Client
"DisabledByDefault"=dword:00000001
"Enabled"=dword:00000000
HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Server
"DisabledByDefault"=dword:00000001
"Enabled"=dword:00000000
HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client
"DisabledByDefault"=dword:00000000
"Enabled"=dword:00000001
HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server
"DisabledByDefault"=dword:00000000
"Enabled"=dword:00000001

 

In einem weiteren Vorschlag soll die zu verwendende .NET Framework-Version durch die DatabaseMail-Exe über das dazugehörige exe.config File im Ordner Microsoft SQL Server\MSSQL11.xxxx\MSSQL\Binn geprüft werden. Eine etwaige exe.config-Datei konnte ich in diesem Verzeichnis jedoch nicht finden.

 

Hat jemand eine Idee, was wir noch probieren könnten / was wir übersehen haben?

 

Vielen Dank im Voraus für die Hilfe!

 

PS: Dass 2012er Systeme nächstes Jahr aus dem Support fallen, ist klar und Ersatz ist bereits für Jahresende angedacht. Das Problem besteht aber jetzt und mit dem noch aktuellen System.

 

Link zu diesem Kommentar

Hallo zusammen,

 

ich bin der Nutzer LTTG; darf aber plötzlich keine Nachrichten mehr als dieser senden. Wie kontaktiere ich einen Forum-Admin, um meine Berechtigungen zu überprüfen?

Weil mir das eigentliche Problem wichtiger ist, habe ich zunächst mal auf die Schnelle hiermit einen neuen Account im MCSEboard angelegt.

 

@Sunny61: Ja, sehr gerne. Bitte schau mal nach! Ich habe folgende Einstellungen gewählt:

E-Mail-Adresse: einkauf@{unsere_Domain}.de

Anzeigename: {unser gewünschter Anzeigename}

Antwort-E-Mail: einkauf@{unsere_Domain}.de

Servername: smtp.office365.com

Port: 587

Für diesen Server is ein Sicherung Verbindung (SSL) erfrderlich: Aktiviert

SMPT-Authentifizierung: Standard-Authentifizierung

Benutzername: einkauf@{unsere_Domain}.de

Kennwort: {Kennwort}

 

@t-sql:

Hier mal ein Log-Eintrag aus der Tabelle dbo.sysmail_log aus der msdb-Systemdatenbank:

 

log_id    event_type    log_date    description    process_id    mailitem_id    account_id    last_mod_date    last_mod_user
389    3    2022-08-09 13:58:42.727    Die E-Mail konnte wegen einem Fehler beim Mailserver nicht an die Empfänger gesendet werden. (E-Mail unter Verwendung des Kontos 2 (2022-08-09T13:58:42) senden. Ausnahmemeldung: E-Mails können nicht an den Mailserver gesendet werden. (Fehler beim Senden von Mail.).
)    5028    119    NULL    2022-08-09 13:58:42.727    sa

 

War dies gemeint? Oder habe ich noch an einer falschen Stelle geschaut?

 

Vielen Dank weiterhin für eure Unterstützung!!

Link zu diesem Kommentar

@Sunny61: Das wunder mich. Mit deaktivertem SSL-Häkchen kommt bei mir im Log dann der Fehler „Die E-Mail konnte wegen einem Fehler beim Mailserver nicht an die Empfänger gesendet werden. Ausnahmemeldung: E-Mails können nicht an den Mailserver gesendet werden. Verarbeitungsfehler: Die Serverantwort war: 5.7.3 STARTTLS required to send mail [FR0P281CA0133.DEUP281.PROD.OUTLOOK.COM"

 

@t-sql: Korrigiere mich, wenn ich damit falsch liege, aber: der Versand aus der Powershell vom heraus (selber Server) funktioniert ja. Und siehe Info an Sunn61: stelle ich bei mir die SSL-Option aus, antwortet der Microsoft-Server ja auch eindeutig. Also Kommunikation bis dahin an sich funktioniert meiner Meinung nach einwandfrei. Habe auch schon mit deaktivierter Firewall die Testmail gesendet, selbes Ergebnis.

Dem Walkthrough gemäß deinem Link ("How to configure ...") folgend habe ich die Richtigkeit der Server-Kontaktinformation (Serveradresse, Port, etc.) bestätigen können. Was mich aber wundert: habt ihr bei euch auch den "On-prem SMTP server" eingerichtet und dann in der SQL Server-Einstellung auf localhost verwiesen? Genau das soll doch der SQL Server selbst schon können oder nicht? Warum den Umweg über den zusätzlichen On prem SMTP Server? Das verschiebt doch nur das Problem zu diesem hin, oder nicht?

@testperson: Nein, lokal gibt es kein Mailrelay. Wir betreiben keinen eigenen Mailserver. Die Lieferung soll direkt an den Office365-Server erfolgen (und müsste nach meinem Denken ja auch funktionieren). Verzeihung, wenn ich mich wiederhole: aber: schicke ich eine Mail vom selben Server über Powershell über Port 587 raus, dann funktioniert dies einwandfrei!

Ich vermute, der SQL-Server selbst kocht mit anderem Wasser. Irgendwo fehlt da noch eine Einstellung (z.B. in der Registry oder in der exe-Konfigdatei??), wo die richtige Authentifzierungseinstellung aufgezwungen wird. (Vermutung!). Was macht Powershell richtig, was der SQL-Server falsch macht??

Link zu diesem Kommentar

Ich würde jetzt mal mit Wireshark mit sniffen wenn Du aus dem SQL Server verschickst.

BTW. Du benutzt hoffentlich beim testen das korrekte Mail Profil? ;-)

 

Gerade noch was interessantes gefunden: Enable TLS 1.2 for SQL Server 2016 database mail - Database Administrators Stack Exchange und dort die Antwort vom MS Support

bearbeitet von t-sql
Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...