Hallo Zusammen,
ich versuche seit heute dem
Indy-
SMTP-Client beim Login auf einem E-Mail-Server das SASL zu benutzen. Leider erhalte ich eine Null-Pointer-
Exception aus den tiefen der
Indy Komponente. Mit dem Typen TIdSASLLOGIN geht alles wunderbar.
Vom Mailserver (Linux Postfix) erhalte ich folgende Meldung:
Jul 13 09:35:45 unicd postfix/smtpd[14266]: warning: SASL authentication failure: need authentication name
Jul 13 09:35:45 unicd postfix/smtpd[14266]: warning:
meine@adresse.de[172.16.16.88]: SASL CRAM-MD5 authentication failed: bad protocol / cancel
Jul 13 09:35:45 unicd postfix/smtpd[14266]: >
meine@adresse.de[172.16.16.88]: 535 5.7.8 Error: authentication failed: bad protocol / cancel
Die TidSASLCRAMMD5 Komponente habe ich natürlich mit einer TIdUserPassProvider Komponente verbunden.
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
dummy : Boolean;
begin
try
IdSMTP1.Connect;
if IdSMTP1.Connected
then
begin
try
IdUserPassProvider1.Username := '
dcssdfgsdjgfsdhjfgdsfsasfgsdfg';
IdUserPassProvider1.Password := '
dcssdfgsdjgfsdhjfgsfgsdfg';
IdSMTP1.Authenticate;
// Hier kommt die Exception
dummy := true;
except
dummy := false;
end;
if dummy
then
begin
try
IdSMTP1.Send(IdMessage1);
except
end;
end;
IdSMTP1.Disconnect();
end;
except
end;
end;
DFM
Delphi-Quellcode:
object IdSMTP1: TIdSMTP
PipeLine = False
AuthType = atSASL
Host = '172.16.16.51'
SASLMechanisms = <
item
SASL = IdSASLCRAMMD51
end>
Left = 136
Top = 240
end
object IdSASLCRAMMD51: TIdSASLCRAMMD5
UserPassProvider = IdUserPassProvider1
Left = 136
Top = 200
end
object IdUserPassProvider1: TIdUserPassProvider
Username = 'dcssdfgsdjgfsdhjfgdsfsasfgsdfg'
Password = 'dcssdfgsdjgfsdhjfgsfgsdfg'
Left = 136
Top = 160
end
Mit Hilfe der ICS-Komponente kann ich den CRAMMD5-Login durchführen. Also es liegt nach meiner Meinung nicht am Server. Ich muss leider die
Indy-Komponente benutzen, da diese SSL unterstützt.
Hat jemand von euch bereits Erfahren mit SASL und
Indy 10 gemacht und kann mir vielleicht einen Tip geben, was ich falsch mache, oder ob die Komponente Buggy ist.