Thomas Mirke: MIME::lite mit Authentifizierung bei 1&1

Hallo,

hat jemand Erfahrung bei der Verwendung des Moduls MIME::lite (http://search.cpan.org/~yves/MIME-Lite-3.01_05/lib/MIME/Lite.pm)über den 1&1 SMTP-Server? Seit gestern muss ich die Authentifizierung verwenden und würde gerne rund 20 Scripte nicht umprogrammieren müssen, also bei diesem Modul bleiben. Aber leider klappt die in der Dokumentation empfohlene Authentifizierung nach dem Muster:

$msg->send('smtp','smtp.1und1.de', Debug=>1, AuthUser=>$user, AuthPass=>$pass);

nicht. Ich erhalte:

MIME::Lite::SMTP: MIME::Lite::SMTP MIME::Lite::SMTP: Net::SMTP(2.24) MIME::Lite::SMTP: Net::Cmd(2.21) MIME::Lite::SMTP: Exporter(5.566) MIME::Lite::SMTP: IO::Socket::INET(1.26) MIME::Lite::SMTP: IO::Socket(1.27) MIME::Lite::SMTP: IO::Handle(1.21) MIME::Lite::SMTP=GLOB(0x1c90e2c)<<< 220 smtp.1und1.de (mrelayeu3) Welcome to Nemesis ESMTP server MIME::Lite::SMTP=GLOB(0x1c90e2c)>>> EHLO localhost.localdomain MIME::Lite::SMTP=GLOB(0x1c90e2c)<<< 250-mrelayeu3.kundenserver.de pleased to meet you MIME::Lite::SMTP=GLOB(0x1c90e2c)<<< 250-STARTTLS MIME::Lite::SMTP=GLOB(0x1c90e2c)<<< 250-AUTH PLAIN LOGIN MIME::Lite::SMTP=GLOB(0x1c90e2c)<<< 250-AUTH=PLAIN LOGIN MIME::Lite::SMTP=GLOB(0x1c90e2c)<<< 250-PIPELINING MIME::Lite::SMTP=GLOB(0x1c90e2c)<<< 250-SIZE 52428800 MIME::Lite::SMTP=GLOB(0x1c90e2c)<<< 250 HELP MIME::Lite::SMTP=GLOB(0x1c90e2c)>>> MAIL FROM: MIME::Lite::SMTP=GLOB(0x1c90e2c)<<< 250 mail from: ok MIME::Lite::SMTP=GLOB(0x1c90e2c)>>> RCPT TO: MIME::Lite::SMTP=GLOB(0x1c90e2c)<<< 550 must be authenticated

Vielleicht hilft das weiter?
Danke für Hinweise.

Bei 1&1 sagen sie, das ist mein Problem, nicht ihres.

TM

  1. Moin,

    eine Authentifizierung kriegst Du auch mit 'Net::SMTP_auth' hin, siehe hier für Details: http://rolfrost.de/mail.html

    MIME::Lite ist eher was für MIME-Mails (Mails mit Anhang), hat also mit Auth weniger zu tun.

    Viele Grüße,
    Horst Haselhuhn

    1. Hallo Horst,

      vielen Dank für Dein statement!

      Beim Googlen bin ich darauf gestoßen, dass immer dann, wenn einer ein Problem mit einem der vorhandenen Mail-Module hat, im der Einsatz eines anderen Moduls geraten wird. MIMI::Lite sieht halt die von mir zitierte Funktion zur Authentifizierung laut CPAN-Doku vor und ich wollte diese nutzen. Gestern abend so gegen 22 Uhr bin ich dann auf ein statement in einem anderen englischsprachigen Forum gestoßen, wonach die Verlässlichkeit von MIME::Lite als nicht besonders hoch eingestuft wird.

      Inzwischen neige ich dazu, ähnlich wie von Dir empfohlen, die HTML-Mail inkl. Anhängen zunächst mit MIME::Lite zusammenzustellen, diese dann aber mit Net::SMTP zu versenden. "Schlüsselerfahrung" war dann die Code-Zeile:

      $smtp ->datasend($msg ->as_string());

      Mit dieser wird die Message für Net::SMTP korrekt "aufbereitet". So scheint es zu funkionieren. Allerdings müssen offenbar in der Zeile

      $smtp ->auth('user', 'password');

      Strings übergeben werden, als Variablen werden die Werte in meinem Fall nicht akzeptiert (es kommt nicht zu einer Authentifizierung). Das finde ich merkwürdig.

      Bei Dir sieht der Auth-Befehl anders aus:
      $smtp->auth('LOGIN', $user, $pass) or die "not auth";

      Was hat hier 'LOGIN' für eine Bewandnis, im CPAN ist nur die Übergabe von user und password dokumentiert.

      1. Bei Dir sieht der Auth-Befehl anders aus:
        $smtp->auth('LOGIN', $user, $pass) or die "not auth";

        http://search.cpan.org/~apleiner/Net-SMTP_auth-0.08/SMTP_auth.pm#METHODS

        Was hat hier 'LOGIN' für eine Bewandnis, im CPAN ist nur die Übergabe von user und password dokumentiert.

        Das lese ich anders:
         auth ( AUTH, USER, PASSWORD )

        Authenticates the user USER via the authentication method AUTH and the password PASSWORD. Returns true if successful and false if the authentication failed. Remember that the connection is not closed if the authentication fails. You may issue a different authentication attempt. If you once are successfully authenticated, you cannot send the AUTH command again.

        The AUTH method NTLM is supported via Authen::NTLM (thanks to James Fryman).

        Struppi.

        1. Hallo Struppi,

          ich hatte hier nachgelesen:

          http://search.cpan.org/~gbarr/libnet-1.22/Net/SMTP.pm#methods

          Dort heißt es dann:
          "Attempt SASL authentication."

          Daher reichen wohl zwei Parameter.
          Hier noch ein nützlicher Link fürs Archiv:
          http://de.wikipedia.org/wiki/Simple_Authentication_and_Security_Layer

          Danke,
          Thomas

          1. Hallo Struppi,

            ich hatte hier nachgelesen:

            http://search.cpan.org/~gbarr/libnet-1.22/Net/SMTP.pm#methods

            Das ist aber nicht das Modul das Rolf verwendet.

            use Net::SMTP;  
            use NET::SMTP_auth;  
              
            # Objekt erstellen  
            my $smtp = Net::SMTP_auth->new($host);  
            ...  
            # Autentifizierung am Postausgangsserver  
            $smtp->auth('LOGIN', $user, $pass) or die "not auth";  
            
            

            Dort heißt es dann:
            "Attempt SASL authentication."

            Das ist vermutlich die Frage, welche Art der Authentizierung der Server verwendet und das Modul kann?

            Struppi.

            1. Hallo,

              seit ich jetzt das Modul Net::SMTP (auch) verwende, habe ich leider bei ca. 5% der Mails Fehlermeldungen, die sich auf alleinstehende LF ohne CR beziehen:

              http://cr.yp.to/docs/smtplf.html

              Die Methode as_string() scheint entweder nicht richtig zu filtern oder das Modul selbst produziert den Fehler. Der durch MIME::Lite beigesteuerte "body" der message ist jedenfalls sauber, denn vorher hatte ich das Problem nicht.

              Natürlich kann das auch auf die Besonderheit irgendwie zurückgehen, dass ich ActivePerl auf einem MS-Server verwende. Dennoch sollte es doch möglich sein, das Problem zu vermeiden. Hab bisher aber noch nichts Praktikables gefunden.

              Gruß,
              Thomas

              1. seit ich jetzt das Modul Net::SMTP (auch) verwende, habe ich leider bei ca. 5% der Mails Fehlermeldungen, die sich auf alleinstehende LF ohne CR beziehen:

                Was hast du gegen das Modul NET::SMTP_auth?

                http://cr.yp.to/docs/smtplf.html

                Das betrifft, soweit ich das verstehe den MTA

                Die Methode as_string() scheint entweder nicht richtig zu filtern oder das Modul selbst produziert den Fehler. Der durch MIME::Lite beigesteuerte "body" der message ist jedenfalls sauber, denn vorher hatte ich das Problem nicht.

                Soweit ich das sehe ändert MIME::Lite da nichts und fügt auch nichts hinzu, d.h. die Zeilenumbrüche kommen aus deinem Skript.

                Natürlich kann das auch auf die Besonderheit irgendwie zurückgehen, dass ich ActivePerl auf einem MS-Server verwende. Dennoch sollte es doch möglich sein, das Problem zu vermeiden. Hab bisher aber noch nichts Praktikables gefunden.

                Wenn es um das LF/CR Problem geht, dann könntest du diese explizit angeben, anstatt \n als Zeilenumbruch zu verwenden.

                Struppi.

                1. Hallo Struppi,

                  Was hast du gegen das Modul NET::SMTP_auth?

                  Das ist auf dem Server nicht installiert (:-).

                  Soweit ich das sehe ändert MIME::Lite da nichts und fügt auch nichts hinzu,

                  Das hatte ich ja geschrieben. "aus dem Script" kommen sie aber auch nicht, denn dieses habe ich nicht geändert. Alles was Net::SMTP übergeben wird, wird vorher von mir geprüft und gefiltert. Daher vermute ich das Problem bei Net::SMTP.

                  Ich hatte das Problem früher schon mal bei dem unauthentifizierten Versand über MIME::Lite, da der versendete HTML-Corpus teilweise aus verschiedenen Editoren stammt, die teilweise "Mist" beisteuern. Daher wird dieser seither wie gesagt vor dem Versand gefiltert.

                  Wahrscheinlich empfiehlst Du mir gleich "dann installiere doch Net::SMTP_auth" ... (:-)

                  Wenn es um das LF/CR Problem geht, dann könntest du diese explizit angeben, anstatt \n als Zeilenumbruch zu verwenden.

                  Wie gesagt enthält der HTML-Body inkl. Anhängen usw. keine bare linefeeds.

                  Die Meldungen lauten:
                  -----------
                  SMTP error from remote server after transfer of mail text:
                  host xyz.de[xx.xxx.xx.xx]:
                  451 See http://pobox.com/~djb/docs/smtplf.html.
                  -----------

                  Wie gesagt, in ca. 5% der Fälle.

                  Ciao,
                  Thomas