Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Indy und TLSv2 funktioniert seit heute nicht mehr mit Mailversand (https://www.delphipraxis.net/212274-indy-und-tlsv2-funktioniert-seit-heute-nicht-mehr-mit-mailversand.html)

Harry Stahl 17. Jan 2023 15:36

Indy und TLSv2 funktioniert seit heute nicht mehr mit Mailversand
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,

ich verwende folgenden Code, mit dem ich bislang mit der SSLVTLSv2 Einstellung erfolgreich Mails versenden konnte (TLS V1 wird ja seit letzes Jahr nicht mehr unterstützt).

Delphi-Quellcode:
{$REGION 'SSL-Optionen'}
      // kein SSL bei Kommunikation zwischen Mailserver und Programm
      if (bSMTPSSL) and (bPop3UseLanServer = false) then begin
        DMI.IdSMTP1.IOHandler := DMI.SSLIOSMTP;

        // Hinweis: Das muss nicht immer so sein
        // Evtl. einstellbar machen
        // Einstellungen Postausgangsserver
        // 587 entspricht STARTTLS  (explizit)
        // 465 entspricht SSL/TLS (implizit), was wohl sicherer ist...

        //DMI.IdSMTP1.UseEhlo := True;

        if (StrToInt(sSMTPPort)= 587) then begin
          DMI.IdSMTP1.UseTLS := utUseExplicitTLS;
        end else begin // StrToInt(sSMTPPort)= 465)
          DMI.IdSMTP1.UseTLS := utUseImplicitTLS;
        end;

        DMI.IdSMTP1.Port := StrToInt(sSMTPPort);

        if sSMtpSSLVer = 'SSLV2' then DMI.SSLIOSMTP.SSLOptions.method := sslvSSLV2;
        if sSMtpSSLVer = 'SSLV23' then DMI.SSLIOSMTP.SSLOptions.method := sslvSSLV23;
        if sSMtpSSLVer = 'SSLV3' then DMI.SSLIOSMTP.SSLOptions.method := sslvSSLV3;
        if sSMtpSSLVer = 'TLSV1' then DMI.SSLIOSMTP.SSLOptions.method := sslvTLSV1;

        if sPop3SSLVer = 'SSLVTLSV_1' then DMI.SSLIOPOP.SSLOptions.method := sslvTLSv1_1;
        if sPop3SSLVer = 'SSLVTLSV_2' then DMI.SSLIOPOP.SSLOptions.method := sslvTLSv1_2;

      end else begin
        DMI.IdSMTP1.UseTLS := utNoTLSSupport;
        DMI.IdSMTP1.IOHandler := NIL;
      end;
      {$ENDREGION}
Seit heute funktioniert das nicht mehr, habe auch schon entsprechende Kundenrückmeldungen (als WorkAround kann man SSLV23 wählen, dann handeln die Server das aus, funktioniert wohl, gibt aber evtl. trotzdem Fehlermeldungen - z.b. bei Web.de ).

Beim Debuggen kann ich verfolgen, dass als Protokoll auch TLSV2 gewählt wurde.

Egal, ob ich als Sendeport 465 oder 587 wähle, es kommt immer die anliegende Fehlermeldung.

Und im Protokoll steht dieses:

"Fehlerprotokoll vom:17.01.2023 16:21
1: Verbinde für Senden...
2: SSL-Status: Host-Name securesmtp.t-online.de wird aufgelöst.
3: SSL-Status: Verbinden mit 194.25.134.46.
4: SSL-Status-Info: SSL-Status: "before/connect initialization"
5: SSL-Status-Info: SSL-Status: "before/connect initialization"
6: SSL-Status-Info: SSL-Status: "SSLv3 write client hello A"
7: SSL-Status-Info: SSL-Status: "SSLv3 read server hello A"
8: SSL-Status-Info: SSL-Status: "error"
9: Fehlermeldung des Mailservers (SMTP):
10: Verbindung konnte nicht hergestellt werden.
11: Fehlertyp: EIdOSSLUnderlyingCryptoError Meldung: Fehler beim Verbinden mit SSL.
12: error:1409442E:SSL routines:ssl3_read_bytes:tlsv1 alert protocol version"

Was kann ich machen, um das zu fixen?

haentschman 17. Jan 2023 16:23

AW: Indy und TLSv2 funktioniert seit heute nicht mehr mit Mailversand
 
Hallöle...:P

aktuelle SSL DLL´s ?

Harry Stahl 17. Jan 2023 16:36

AW: Indy und TLSv2 funktioniert seit heute nicht mehr mit Mailversand
 
Ja, vom 21.12.2019: https://github.com/IndySockets/OpenS...i386-win32.zip

Das ist die letzte, mir bekannte Fassung.
Bislang hat es damit ja auch funktioniert (zumindest bei T-Online, bei Web.DE traten Probleme schon früher auf).

Uwe Raabe 17. Jan 2023 16:58

AW: Indy und TLSv2 funktioniert seit heute nicht mehr mit Mailversand
 
Ist zwar schon ein paar Wochen her, aber könnte es daran liegen? Microsoft liefert Updates gegen SSL-/TLS-Probleme durch Windows-Updates

TUhr 17. Jan 2023 17:00

AW: Indy und TLSv2 funktioniert seit heute nicht mehr mit Mailversand
 
Hallo Nachbar,

ich sehe nirgends die Definition das beim SMTP (nicht POP) TLS1_2 verwendet wird oder ?

MfG

mytbo 17. Jan 2023 17:04

AW: Indy und TLSv2 funktioniert seit heute nicht mehr mit Mailversand
 
Zitat:

Zitat von Harry Stahl (Beitrag 1517521)
Das ist die letzte, mir bekannte Fassung.

Vielleicht hier mal nach einer neueren OpenSSL Version suchen und diesen Pull-Request lesen. Habe es selbst noch nicht getestet, sondern nur die Info gepinnt.

Bis bald...
Thomas

Harry Stahl 17. Jan 2023 17:09

AW: Indy und TLSv2 funktioniert seit heute nicht mehr mit Mailversand
 
Zitat:

Zitat von TUhr (Beitrag 1517528)
Hallo Nachbar,

ich sehe nirgends die Definition das beim SMTP (nicht POP) TLS1_2 verwendet wird oder ?

MfG

Doch: if sPop3SSLVer = 'SSLVTLSV_2' then DMI.SSLIOPOP.SSLOptions.method := sslvTLSv1_2;

sPop3SSLVer hat den Wert so dass als Methode auch sslvTLSV1_2 verwendet wird (wie gesagt, ich kann es beim Debuggen sehen).

Harry Stahl 17. Jan 2023 17:11

AW: Indy und TLSv2 funktioniert seit heute nicht mehr mit Mailversand
 
Zitat:

Zitat von Uwe Raabe (Beitrag 1517527)
Ist zwar schon ein paar Wochen her, aber könnte es daran liegen? Microsoft liefert Updates gegen SSL-/TLS-Probleme durch Windows-Updates

Das wäre aber ein extremer Zufall, wenn das heute bei mir und den Kunden gleichzeitig auftritt (befürchte, werde ab morgen haufenweise Mails bekommen, dass der Mailversand nicht mehr funktioniert)...

Die Meldung ist ja auch schon von Oktober. Dann hätte ich bestimmt schon von Problemen gehört...

Und es geht schon los, habe gerade telefonische Sprechstunde, alle das gleiche Problem....

TUhr 17. Jan 2023 17:16

AW: Indy und TLSv2 funktioniert seit heute nicht mehr mit Mailversand
 
Zitat:

Zitat von Harry Stahl (Beitrag 1517531)
Zitat:

Zitat von TUhr (Beitrag 1517528)
Hallo Nachbar,

ich sehe nirgends die Definition das beim SMTP (nicht POP) TLS1_2 verwendet wird oder ?

MfG

Doch: if sPop3SSLVer = 'SSLVTLSV_2' then DMI.SSLIOPOP.SSLOptions.method := sslvTLSv1_2;

sPop3SSLVer hat den Wert so dass als Methode auch sslvTLSV1_2 verwendet wird (wie gesagt, ich kann es beim Debuggen sehen).

Es geht doch um das Senden von Mails und nicht um das Empfangen oder ?
Ich sehe nur das der Empfang auf sslvTLSV1_2 gestellt wird oder ?

MfG

Harry Stahl 17. Jan 2023 17:31

AW: Indy und TLSv2 funktioniert seit heute nicht mehr mit Mailversand
 
Zitat:

Zitat von TUhr (Beitrag 1517533)
Zitat:

Zitat von Harry Stahl (Beitrag 1517531)
Zitat:

Zitat von TUhr (Beitrag 1517528)
Hallo Nachbar,

ich sehe nirgends die Definition das beim SMTP (nicht POP) TLS1_2 verwendet wird oder ?

MfG

Doch: if sPop3SSLVer = 'SSLVTLSV_2' then DMI.SSLIOPOP.SSLOptions.method := sslvTLSv1_2;

sPop3SSLVer hat den Wert so dass als Methode auch sslvTLSV1_2 verwendet wird (wie gesagt, ich kann es beim Debuggen sehen).

Es geht doch um das Senden von Mails und nicht um das Empfangen oder ?
Ich sehe nur das der Empfang auf sslvTLSV1_2 gestellt wird oder ?

MfG

Ja, es geht um das Senden und SMTP ist ja senden.

Der Code der danach kommt ist der hier:

Delphi-Quellcode:
if DMI.IdSMTP1.connected = false then begin
        try
          DMI.IdSMTP1.Connect;
        except
          on E: Exception do
          begin
            AnError := True;
            frm_Main.DisPlaySendStatus ('Fehlermeldung des Mailservers (SMTP): ' + hs_IndyError);
            frm_Main.DisplaySendStatus ('Verbindung konnte nicht hergestellt werden.');
            frm_Main.DisplaySendStatus ('Fehlertyp: ' + E.ClassName + ' Meldung: ' + E.Message);
          end;
        end;
      end;
Das Connecten geht noch, aber bei

Delphi-Quellcode:
DMI.IdSMTP1.Send(DMI.IdMessage1);
kommen dann die Fehlermeldungen...

T-Online hat ja schon September 2021 TLS 1.1 abgeschaltet, so dass ab da sowieso ja nur noch TLS 1.2 möglich war und das funktionierte ja auch (bis heute).

TUhr 17. Jan 2023 17:51

AW: Indy und TLSv2 funktioniert seit heute nicht mehr mit Mailversand
 
Liste der Anhänge anzeigen (Anzahl: 1)
s. Bild-Anlage.

Hier wird nur die POP3 Verschlüsselung auf TLS1_2 gestellt und nicht SMTP....

MfG

Harry Stahl 17. Jan 2023 18:12

AW: Indy und TLSv2 funktioniert seit heute nicht mehr mit Mailversand
 
Ja, danke, das wars. Da muss ich bei der letzten Änderung wohl was falsch gemacht haben...

Danke!!!!!:-D

zeras 17. Jan 2023 18:25

AW: Indy und TLSv2 funktioniert seit heute nicht mehr mit Mailversand
 
Zitat:

Zitat von Harry Stahl (Beitrag 1517517)

Delphi-Quellcode:
      // kein SSL bei Kommunikation zwischen Mailserver und Programm
      if (bSMTPSSL) and (bPop3UseLanServer = false) then begin

Offenbar ist das Problem gelöst. Mich wundert nur, dass hier im Forum immer geschrieben wird, dass man nicht auf "False" prüfen soll, aber so ein alter Fuchs wie Harry das doch in seinem Code hat. Also doch nicht so schlimm oder?

Delphi.Narium 17. Jan 2023 18:33

AW: Indy und TLSv2 funktioniert seit heute nicht mehr mit Mailversand
 
Zitat:

Zitat von zeras (Beitrag 1517543)
Zitat:

Zitat von Harry Stahl (Beitrag 1517517)

Delphi-Quellcode:
      // kein SSL bei Kommunikation zwischen Mailserver und Programm
      if (bSMTPSSL) and (bPop3UseLanServer = false) then begin

Offenbar ist das Problem gelöst. Mich wundert nur, dass hier im Forum immer geschrieben wird, dass man nicht auf "False" prüfen soll, aber so ein alter Fuchs wie Harry das doch in seinem Code hat. Also doch nicht so schlimm oder?

Doch, das ist genauso schlimm wie das
Delphi-Quellcode:
if DMI.IdSMTP1.connected = false then begin
.

Delphi-Quellcode:
if not DMI.IdSMTP1.connected then begin
find' ich zusätzlich sogar viel einfacher lesbar ;-)

Harry Stahl 17. Jan 2023 18:52

AW: Indy und TLSv2 funktioniert seit heute nicht mehr mit Mailversand
 
:)
Zitat:

Zitat von Delphi.Narium (Beitrag 1517545)
Zitat:

Zitat von zeras (Beitrag 1517543)
Zitat:

Zitat von Harry Stahl (Beitrag 1517517)

Delphi-Quellcode:
      // kein SSL bei Kommunikation zwischen Mailserver und Programm
      if (bSMTPSSL) and (bPop3UseLanServer = false) then begin

Offenbar ist das Problem gelöst. Mich wundert nur, dass hier im Forum immer geschrieben wird, dass man nicht auf "False" prüfen soll, aber so ein alter Fuchs wie Harry das doch in seinem Code hat. Also doch nicht so schlimm oder?

Doch, das ist genauso schlimm wie das
Delphi-Quellcode:
if DMI.IdSMTP1.connected = false then begin
.

Delphi-Quellcode:
if not DMI.IdSMTP1.connected then begin
find' ich zusätzlich sogar viel einfacher lesbar ;-)

Ihr habt ja recht. Ein Teil des Codes wurde hier (schon vor langer Zeit, 2003 oder so) per copy & paste
übernommen... Aber ich hab das jetzt aufgrund des Hinweises schön gemacht...

Harry Stahl 17. Jan 2023 21:42

AW: Indy und TLSv2 funktioniert seit heute nicht mehr mit Mailversand
 
Zum einen noch einen Nachtrag: Habe noch mit Telekom telefoniert, T-Online hat heute, am 17.01.2023 die TLS 1.0 und TLS 1.1 Unterstützung abgeschaltet. Da ich "nur dachte" ich hätte TLS 1.2 (richtig) implementiert, ging das Programm faktisch noch auf TLS 1.0, aber heute musste der Fehler halt auffallen.

Zum anderen: Für Windows und Linux konnte ich das fixen, für macOS funktionieren die libssl.1.0.0.dylib und die libcrypto.1.0.0.dylib vom 16.10.2019 nicht (Programm crasht direkt bei Imap.connect), da brauche ich wohl neuere. Leider habe ich keine Ahnung mehr, wo ich diese Dateien her hatte (Google suche führte nicht zum Erfolg).

Weiß da jemand, wo man die letzten Versionen bekommt?

KodeZwerg 17. Jan 2023 22:21

AW: Indy und TLSv2 funktioniert seit heute nicht mehr mit Mailversand
 
Zitat:

Zitat von Harry Stahl (Beitrag 1517553)
Weiß da jemand, wo man die letzten Versionen bekommt?

Delphi-Quellcode:
brew install openssl
oder beispielsweise
Delphi-Quellcode:
brew install openssl@1.1
um gezielt v1.1 der crypto und ssl bibliothek zu laden

Harry Stahl 17. Jan 2023 22:47

AW: Indy und TLSv2 funktioniert seit heute nicht mehr mit Mailversand
 
Zitat:

Zitat von KodeZwerg (Beitrag 1517555)
Zitat:

Zitat von Harry Stahl (Beitrag 1517553)
Weiß da jemand, wo man die letzten Versionen bekommt?

Delphi-Quellcode:
brew install openssl
oder beispielsweise
Delphi-Quellcode:
brew install openssl@1.1
um gezielt v1.1 der crypto und ssl bibliothek zu laden

Danke, hatte es zuvor auch schon so aber ohne das "@" Zeichen versucht (um Version 1.02u zu laden), was nicht funktionierte.
Mit der letzten openssl version funktionierte es nicht, hhoffe die 1.1 dylib-version läuft...

Edit: Nö, läuft leider nicht... ich krieg auch immer nur 1.1 installiert...

KodeZwerg 17. Jan 2023 23:08

AW: Indy und TLSv2 funktioniert seit heute nicht mehr mit Mailversand
 
Zitat:

Zitat von Harry Stahl (Beitrag 1517556)
Zitat:

Zitat von KodeZwerg (Beitrag 1517555)
Zitat:

Zitat von Harry Stahl (Beitrag 1517553)
Weiß da jemand, wo man die letzten Versionen bekommt?

Delphi-Quellcode:
brew install openssl
oder beispielsweise
Delphi-Quellcode:
brew install openssl@1.1
um gezielt v1.1 der crypto und ssl bibliothek zu laden

Danke, hatte es zuvor auch schon so aber ohne das "@" Zeichen versucht (um Version 1.02u zu laden), was nicht funktionierte.
Mit der letzten openssl version funktionierte es nicht, hhoffe die 1.1 dylib-version läuft...

Edit: Nö, läuft leider nicht... ich krieg auch immer nur 1.1 installiert...

Hast du auch die SymLinks aktualisiert? Das passiert nicht automatisch!
Delphi-Quellcode:
sudo ln -s /usr/local/Cellar/openssl@1.1/1.1.1d/lib/libssl.1.1.dylib /usr/local/lib/libssl.dylib

Delphi-Quellcode:
sudo ln -s /usr/local/Cellar/openssl@1.1/1.1.1d/lib/libcrypto.1.1.dylib /usr/local/lib/libcrypto.dylib

Bbommel 18. Jan 2023 08:17

AW: Indy und TLSv2 funktioniert seit heute nicht mehr mit Mailversand
 
Ich dachte, Indy unterstützt nach wie vor kein OpenSSL 1.1 und neuer. Dann muss das doch zwangsläufig crashen, wenn man das nutzen will.

mjustin 18. Jan 2023 08:33

AW: Indy und TLSv2 funktioniert seit heute nicht mehr mit Mailversand
 
Zitat:

Zitat von Bbommel (Beitrag 1517558)
Ich dachte, Indy unterstützt nach wie vor kein OpenSSL 1.1 und neuer. Dann muss das doch zwangsläufig crashen, wenn man das nutzen will.

Ja, Indy unterstützt in der aktuellen Trunk-Version kein OpenSSL 1.1. Es gibt jedoch schon länger einen Pull Request aus https://github.com/mezen/Indy/tree/NewOpenSSL_PR, in dem es möglich ist. Getestet habe ich diesen noch nicht.

Alternativ gibt es noch Anbieter eines OpenSSL 1.1 fähingen SSL-IOHandlers für Indy, die man einfach der entsprechenden Property der Indy-Komponente zuweisen kann.

KodeZwerg 18. Jan 2023 11:03

AW: Indy und TLSv2 funktioniert seit heute nicht mehr mit Mailversand
 
Zitat:

Zitat von mjustin (Beitrag 1517559)

Mehr dazu kann man auch hier Indy & OpenSSL 1.1.1 & TLS 1.3 nachlesen.

Harry Stahl 18. Jan 2023 15:06

AW: Indy und TLSv2 funktioniert seit heute nicht mehr mit Mailversand
 
Auf Windows und Linux funktioniert Indy und die DLL's zum senden und Empfangen der Mails per TLS 1.2, aber unter macOS bring ich das nicht zum Laufen.

Wie Remmy hier erklärt (https://en.delphipraxis.net/topic/47...#comment-69160) liegt das wohl daran, dass der OpenSSLHandler OpenSSL nur bis 1.02 unterstützt (aber nicht 1.1).

Ich denke OpenSSL 1.02(u) bedeutet eine Unterstützung bis TLS 1.2, unter macOS habe ich aber nur libs gefunden, die bis 1.02s lauteten, aber die funktionieren nicht mit TLS 1.2. Man benötigt wohl die aktuellen 1.1 dylibs, aber die werden von Indy nicht uterstützt.

Frage an KodeZwerg: Habe mir mal die SecureBridge angesehen, die ja TLS 1.2 mit der Indy-Bridge unterstützen soll, kriege es aber nicht zum Laufen (unter macOS). Da Du die ja nutzt, mache ich den Thread von kürzlich noch mal auf, wo die Indy Alternativen diskutiert worden sind, evtl. hast Du ja einen Tipp für mich.

Siehe dort: https://www.delphipraxis.net/211132-...ml#post1517585


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:11 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz