![]() |
SMTP-Problem, Indy und TLS 1.3 oder ICS
Hallo,
gestern hat strato TLS 1.0 und 1.1 abgeschaltet und jetzt geht unser Mailversand nicht mehr. Bisher hatte ich die Indy10-Routinen (TIdSMTP und TIdSSLIOHandlerSocketOpenSSL) unter Delphi XE benutzt, aber die unterstützen kein TLS 1.3. Deshalb habe ich die ICS-Routinen installiert, habe aber bereits Probleme bei dem Beispiel-Programm icsv866\Samples\Delphi\MailNewsDemos\OverbyteIcsMa ilSnd1. Beim strato-Postfach kommt die Meldung "Connecting to SMTP server ..." und er bleibt hängen. Alternativ habe ich auch gmx probiert (was mit den indys noch problemlos funktioniert). Hier komme ich zwar weiter, aber bei der Authentication ist auch hier Schluss. Das Protokoll sieht so aus Connecting to SMTP server... 220 gmx.net (mrgmx105) Nemesis ESMTP Service ready < 220 gmx.net (mrgmx105) Nemesis ESMTP Service ready RequestDone Rq=0 No Error EHLO i5-2015 > EHLO i5-2015 250-gmx.net Hello i5-2015 [79.212.23.214] < 250-gmx.net Hello i5-2015 [79.212.23.214] 250-8BITMIME < 250-8BITMIME 250-SIZE 69920427 < 250-SIZE 69920427 250 STARTTLS < 250 STARTTLS RequestDone Rq=10 No Error AUTH CRAM-MD5 > AUTH CRAM-MD5 530 Must issue a STARTTLS command first < 530 Must issue a STARTTLS command first RequestDone Rq=11 Error: 500 Authentication Type could not be determined. Error, stoped All-In-One demo Die Authentication ist AutoSelect, aber auch alle anderen Einstellungen gehen nicht. Hat jemand eine Idee, warum das DemoProg nicht funktioniert oder auch wie ich möglichst schnell wieder versenden kann? |
AW: SMTP-Problem, Indy und TLS 1.3 oder ICS
Falls du hier nicht weiterkommen solltest: in der en.delphipraxis.net gibt's ein ICS Unterforum wo die Entwickler mit lesen und antworten. Alternativ gibt's für die Übergangszeit SMTPRelay oder so, das liefe auf dem Mail sendenden PC, gibt sich dort als unvrschlüsselter SMTP Server aus und kann mit dem richtigen SMTP Server passend reden.
|
AW: SMTP-Problem, Indy und TLS 1.3 oder ICS
Just for info: Mit Indy geht TLS 1.2 und dies wird von Strato noch unterstützt. So habe ich das Problem gelöst. War ein 10 Minüter und es finden sich hier im Forum auch schon Beispiele, wie es anzuwenden ist.
|
AW: SMTP-Problem, Indy und TLS 1.3 oder ICS
@TurboMagic
Danke für die Info. @philipp.hofmann Das wäre super, wenn das ginge, aber bist du sicher, dass das auch mit Delphi XE2 geht? In meiner IdSSLOpenSSL.pas (Indy10) steht TIdSSLVersion = (sslvSSLv2, sslvSSLv23, sslvSSLv3, sslvTLSv1); und damit ging es bei mir leider nicht :( |
AW: SMTP-Problem, Indy und TLS 1.3 oder ICS
Indys mal aktuallisieren?
Mein olles Delphi 7 kann jedenfalls
Delphi-Quellcode:
TIdSSLVersion = (sslvSSLv2, sslvSSLv23, sslvSSLv3, sslvTLSv1, sslvTLSv1_1, sslvTLSv1_2)
|
AW: SMTP-Problem, Indy und TLS 1.3 oder ICS
Ja, das hatte ich versucht, aber nichts gefunden. Wo bekomme ich denn ein Update her? Alle Links, auch hier aus dem Forum, sind veraltet, wie z.B.
![]() |
AW: SMTP-Problem, Indy und TLS 1.3 oder ICS
Meine Suchmaschine liefert mit indy github als erstes Ergebnis die passende Stelle:
![]() |
AW: SMTP-Problem, Indy und TLS 1.3 oder ICS
Habe mir indy-master.zip runtergeladen, sieht aber verwirrend aus. Das packe ich heute nicht mehr. Morgen kann ich vielleicht wieder klarer denken.
Erst einmal vielen Dank für deine Hilfe. |
AW: SMTP-Problem, Indy und TLS 1.3 oder ICS
Zip auspacken.
XE2 entspricht der VER230 ( ![]() Demnach dürfte Indy230.groupproj für Dich interessant sein. Oder aus dem Verzeichnis Core die Packages IndyCore230.dpk und dclIndyCore230.dpk kompilieren und installieren. Bei Delphi 7 mache ich das immer ganz einfach: Vorhandenes Indy-Verzeichnis umbenennen. Neues Indy-Verzeichnis umbenennen, so dass es den "alten" Namen bekommt. Die beiden o. g. Packages in der genannten Reihenfolge öffnen und kompilieren bzw. installieren. Klappt eigentlich immer. |
AW: SMTP-Problem, Indy und TLS 1.3 oder ICS
Liste der Anhänge anzeigen (Anzahl: 1)
Ach, du hast mich so glücklich gemacht. 26 neuen Kompos wurden installiert (von TIdAntiFreeze bis TIdUPDServer), ...
..bis ich mein Prog öffnen wollte. Irgendwie scheint noch was von den alten Indys da zu sein, obwohl ich den Ordner umbenannt habe (Fehlermeldung s. Grafik). Klicke ich auf abbrechen und starte mein Prog erneut, kommt die Meldung "Klasse TIdSMTP nicht gefunden". TIdSMTP ist bei den neuen Kompos auch nicht aufgeführt. Hast du eine Idee, woran das liegen kann? |
AW: SMTP-Problem, Indy und TLS 1.3 oder ICS
Ggfls. musst Du all "alten" .DCU von Indy, wo immer auch bei Deinen Projekten der Ausgabepfad dafür sein mag, löschen.
Kompilieren alleine reicht nicht zwingend, eventuell mal "alles neu erstellen". Das Package mit der 160 im Namen gehört wohl zu Delphi 8. Dann mal in der IDE nachschauen, welche Packages da so alles installiert sind und auch hier für Ordnung sorgen. Ggfls. dort mal alle momentan installierten Packages von Indy entfernen und dann nur die für Dein Delphi relevanten installieren. Da solltest Du mal gründlich aufräumen und sicherstellen, dass Du nur die zu Deiner Delphiversion gehörenden Packages nutzt. Mal aus dem Verzeichnis mit den kompilieren Packages (*.bpl) alles entfernen, was zu alten Indyversionen gehört. Vorher die IDE zumachen. Beim Neustart der IDE wird sie Dich dann darüber informieren, was da so schiefgeht, z. B. Dich informieren, dass "alte" Indypackages nicht mehr geladen werden können ... (was ja durchaus erwünscht ist). Du kannst dazu auch im "neuen Indyverzeichnis" mal alles "wegwerfen", was nicht zu Deiner Delphiversion gehört, das dürften vermutlich alle Dateien unter \Lib\Core\ sein, die am Ende eine Zahl im Namen haben, die aber nicht 230 ist. So ungefähr alles von dclIndyCore100.* bis dclIndyCore220.* und alles ab dclIndyCore240.* bis dclindycorelaz.*, analog dann auch noch für IndyCore*.*, unter \Lib\Protocols\ sieht es ähnlich aus, ebenso unter \Lib\System\. Für Dein Delphi dürftest Du wohl alles benötigen, was in Indy230.groupproj aufgeführt ist. Die Projektgruppe zu verwenden, wäre eventuell auch keine schlechte Idee. Damit sollte eigentlich alles für Dein Delphi korrekt kompiliert und installiert werden können. Mal in allen Pfaden nach dem Package IndySystem160 suchen. |
AW: SMTP-Problem, Indy und TLS 1.3 oder ICS
Liste der Anhänge anzeigen (Anzahl: 1)
Jetzt habe ich deine Ratschläge befolgt und alles ist installiert und ich kann mein Prog sogar compilieren. Dein ausführlicher Post war echt super, danke.
Leider geht der Verbindungsaufbau zu strato trotzdem nicht. Je nachdem, welche Version ich einstelle, kommen unterschiedliche Fehlermeldung (s. Grafik). Vermutlich fehlen nur noch ein paar Einstellungen. Würdest du mal einen kurzen Blick auf meine Routine werfen? Vielleicht springt dir der Fehler ja sofort ins Auge. Brauche ich eine spezielle Version von libeay32.dll oder ssleay32.dll?
Delphi-Quellcode:
procedure TMainForm.Btn_TESTMAILClick(Sender: TObject);
var idAttachment : TIdAttachmentFile; Mail : TIdMessage; SMTP : TIdSMTP; SSL : TIdSSLIOHandlerSocketOpenSSL; MBHTML: TIdMessageBuilderHTML; MailText : string; begin SMTP := TIdSMTP.Create; SSL := TIdSSLIOHandlerSocketOpenSSL.Create(SMTP); SSL.SSLOptions.SSLVersions := [sslvTLSv1_2]; //XXX Mail := TIdMessage.Create; try MBHTML := TIdMessageBuilderHTML.Create; try with MBHTML do begin HTML.Text := 'Die ist eine Testmail.'; HtmlCharSet := 'utf-8'; FillMessage(Mail); end; finally MBHTML.Free; end; with Mail do begin From.Address := ... ; From.Name := ... ; Recipients.EMailAddresses := ... ; Subject := 'Test-Mail'; end; with SMTP do begin Host := 'smtp.strato.de'; Username := ... ; Password := ... ; Port := 465; AuthType := satDefault; IOHandler := SSL; UseTLS := utUseImplicitTLS; try Connect; Send(Mail); finally Disconnect; end; end; finally Mail.Free; SMTP.Free; end; end; |
AW: SMTP-Problem, Indy und TLS 1.3 oder ICS
Welche Versionen der OpenSSL dll verwendest Du?
|
AW: SMTP-Problem, Indy und TLS 1.3 oder ICS
Version 0.9.8.14
|
AW: SMTP-Problem, Indy und TLS 1.3 oder ICS
DIe Version sollte > 1 sein. Ich setze hier u.a. 1.0.2.12 ein. Zum Herumspielen unter Erhaltung der Interoperabilität empfiehlt es sich, die dlls jeweils gezielt von Indy laden zu lassen.
Delphi-Quellcode:
IdSSLOpenSSLHeaders.IdOpenSSLSetLibPath(<Pfad der ssl dll>);
|
AW: SMTP-Problem, Indy und TLS 1.3 oder ICS
DANKE DANKE an alle, die mir hier geholfen haben.
ES FUNKTIONIERT ALLES !!! |
AW: SMTP-Problem, Indy und TLS 1.3 oder ICS
Hört sich schon mal gut an. Um für die Zukunft gerüstet zu sein, solltest du einmal die TIdSMTP.SASLMechanisms Collection anschauen und ggf. alle reinaddieren. Dann wird die AUTH response Indy dazu bewegen, das korrekte Verfahren zu verwenden.
|
AW: SMTP-Problem, Indy und TLS 1.3 oder ICS
Das sagt mir jetzt alles noch nichts, aber da werde ich hier im Forum mal etwas stöbern. Meinst du, das wäre besser als die ICS-Routinen?
|
AW: SMTP-Problem, Indy und TLS 1.3 oder ICS
ICS habe ich bisher nicht eingesetzt. Ich verwende möglichst das Winhttp und wenn dort etwas nicht verfügbar ist, die Indy.
|
AW: SMTP-Problem, Indy und TLS 1.3 oder ICS
Zitat:
|
AW: SMTP-Problem, Indy und TLS 1.3 oder ICS
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:54 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz