Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Indy 10 SMTPServer und AuthMode (https://www.delphipraxis.net/197065-indy-10-smtpserver-und-authmode.html)

Real Thunder 15. Jul 2018 19:55

Indy 10 SMTPServer und AuthMode
 
nach Jahren mal wieder zurück in dieses Forum.

Ich habe ein Problem mit den Indy SMTP Server
und zwar wird das Event UserLogin nicht gefeuert, was ja auch logisch ist wenn der Client kein AUTH sendet.
Nach ein wenig googeln wurde mir bestätigt dass

Code:
SMTPServer.Authmode:=true
gesetzt werden muss um ein Auth zu forcieren.
Aber aus irgendeinem Grund kennt er die Eigenschaft nicht.
Kann es sein dass dieses aus der Indy10 SMTP Server entfernt wurde ?
Und wenn ja, wie erreiche ich es jetzt dass sich ein E-Mail Client anmelden muss ?

Redeemer 16. Jul 2018 17:19

AW: Indy 10 SMTPServer und AuthMode
 
Zitat:

Zitat von Real Thunder (Beitrag 1407355)
nach Jahren mal wieder zurück in dieses Forum.

Ich habe ein Problem mit den Indy SMTP Server
und zwar wird das Event UserLogin nicht gefeuert, was ja auch logisch ist wenn der Client kein AUTH sendet.
Nach ein wenig googeln wurde mir bestätigt dass

Code:
SMTPServer.Authmode:=true
gesetzt werden muss um ein Auth zu forcieren.
Aber aus irgendeinem Grund kennt er die Eigenschaft nicht.
Kann es sein dass dieses aus der Indy10 SMTP Server entfernt wurde ?

Ja.

Zitat:

Zitat von Real Thunder (Beitrag 1407355)
Und wenn ja, wie erreiche ich es jetzt dass sich ein E-Mail Client anmelden muss ?

Einfach mal kurz den Quelltext von Indy 9 durchlesen, dann siehst du wie es funktioniert. Nun siehst du noch, dass diverse Klassen geändert wurden: TIdCommand heißt jetzt TIdContext und dessen Erbe TIdSMTPServerContext hat jetzt das, was da noch im Feld
Delphi-Quellcode:
TIdCommand.Thread as TIdSMPTServerThread
war.

Also muss deine Ereignisbehandlungsroutine so aussehen:
Delphi-Quellcode:
procedure TuWas(AContext: TIdContext);
begin
  if TIdSMTPServerContext(AContext).HELO then
  begin
    if not TIdSMTPServerContext(AContext).LoggedIn then
    begin
      AContext.Connection.IOHandler.Writeln('553 bla'); // wahlweise auch 535
      Exit;
    end;
  // usw.
end;

Real Thunder 16. Jul 2018 18:21

AW: Indy 10 SMTPServer und AuthMode
 
Das bringt mich schon ein bisschen weiter...
Und schon merkt man dass man eigentlich weniger weiß.

Okay... Authmode ist wech.. so weit habe ich es verstanden.

Noch steige ich nicht dahinter wo
Code:
 if TIdSMTPServerContext(AContext).HELO then
   begin
     if not TIdSMTPServerContext(AContext).LoggedIn then
     begin
       AContext.Connection.IOHandler.Writeln('553 bla'); // wahlweise auch 535 <-- Macht glaube ich mehr sinn (ausser bei Relaying)
       Exit;
     end;
rein muss.. aber ich "probiere mal rum" in aller Hoffnung dass es dann klick macht

EDIT:
Für alle mit Ähnlich beschränktem Verständnis: 8-)
Okay.. ich bin das Ganze falsch angegangen... Falsche Denkweise gehabt.
Der Server forciert ja keinen Auth, sondern kann bestimmte Aktionen negativ quittieren wenn der Benutzer sich nicht authentifiziert hat.

Das Sinnigste für "Relay nur bei authentifizierten Benutzern zu erlauben" ist beim Event "onRcptTo"


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:51 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