System.Net.Mail (SMTP-Auth) klappt unter Win, nicht unter Linux



  • Hallo,

    folgendes funktioniert ohne Probleme unter Windows.

    MailMessage mail = new MailMessage(mymail);
    mail.Subject = ...
    mail.Body = ...
    mail.To = ...
    SmtpClient smtp = new SmtpClient("smtp.web.de");
    smtp.Credentials = new NetworkCredential(mymail, mypass); 
    smtp.Send(mail);
    

    Unter Linux (Mono) fliegt immer eine Exception:
    Unhandled Exception: System.Net.Mail.SmtpException: 501 Keine Authentifizierung, oder POP3-Anmeldung zu weit in der Vergangenheit . / Authentification failed, or POP3 logon too old.

    Ähnlich bei anderen smtp-Servern die ich probiert habe (gmx, gmail, yahoo,...)

    Ich kann das Problem nun leider nicht weiter eingrenzen, hat jemand eine Idee?

    Danke



  • Ich denke nicht dass es ein Linux Problem ist. Bei vielen Email Diensten, auch dein genanntes web.de, muss man sich erst per Pop3 authentifizieren bevor man per Smtp Mails senden kann. Nur die Credentials mit den Zugangsdaten zu setzen reicht nicht aus. Wenn ich keine Mails hole(und mich damit per Pop3 authentifiziere) sondern nur sende, bekomm ich diesen Fehler auch bei anderen Mail Programmen, das ist normal. Kann sein dass du deine Mails in Windows holst mit nem extra Mailprogramm dass dich authentifizirt? Und das das nicht unter Linux geschieht und irgendwann deshalb die Authentifizierung abläuft und du dich neu authentifizieren müsstest



  • If you receive an SmtpException exception, check the StatusCode property to find the reason the operation failed. The SmtpException can also contain an inner exception that indicates the reason the operation failed.

    Kannst du da mal bitte nachgucken, damit man den Fehler ein wenig eingrenzen kann?



  • @Zwerg
    Daran liegt es nicht ganz sicher nicht. Man kann die Postfächer entweder umstellen oder einen anderen Port verwenden, so dass keine vorherige Pop3 Auth notwendig ist.

    @lyrc
    InnerException ist null.
    Aber StatusCode=SyntaxError

    "The syntax used to specify a command or parameter is incorrect."

    Hilft das weiter?

    Es ist sogar so, dass die Binary die ich mit VS.NET unter Win erstellt habe und dort super funktioniert, mit der Mono-Laufzeit nicht funktioniert. Scheint also kein Fehler von MonoDevelop während der kompilierung zu sein.



  • Du könntest auch mal den Datenverkehr zum SMTP-Server mit Wireshark mitschneiden und dann das Kommunikationsprotokoll der Microsoftimplementierung mit der von mono vergleichen.



  • Ich kannte Wireshark noch garnicht und hatte vorher nur etwas mit tcpdump experimentiert

    Ok hier mal die wohl relevanten Teile (mit Verzicht ach ACK-Pakete)

    Windows:

    Response: 220 smtp05.web.de ESMTP WEB.DE V4.110#277 Mon, 04 May 2009 15:46:14 +0200
    Command: EHLO abc-0gkylnhdy71
    Response: 250-smtp05.web.de Hello abc-0gkylnhdy71 ["meineIP"]
    Command: AUTH login MjwefwerWFyc2xastrtlYrewerQ==
    Response: 235 Authentication succeeded
    Command: MAIL FROM:<mymail@web.de>
    Response: 250 <mymail@web.de> is syntactically correct
    

    Linux:

    Response: 220 smtp05.web.de ESMTP WEB.DE V4.110#277 Mon, 04 May 2009 16:03:17 +0200
    Command: EHLO benjamin-desktop
    Response: 250-smtp05.web.de Hello benjamin-desktop ["meineIP"]
    Command: MAIL FROM:<mymail@web.de>
    Response: 501 Keine Authentifizierung, oder POP3-Anmeldung zu weit in der Vergangenheit . / Authentification failed, or POP3 logon too old.
    

    Dies hier "Command: AUTH login" wird bei Linux garnicht angestoßen.
    Kein Wunder, dass ich mich nicht authentifizieren kann. Ist nur die Frage, warum? Obwohl es die ein und selbe Binary ist.

    Möglicherweise irgendwelche Einstellungen der Laufzeitumgebung?



  • Hallo,

    könnte ein Mod das bitte ins Linux-Forum verschieben?

    Danke


Anmelden zum Antworten