SMTP und Hosteurope?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • SMTP und Hosteurope?

    Mittels einer Klasse, welche der Diskussion zur Mail-Funktion im PHP-Handbuch entspringt, greife ich auf einen SMTP-Server zu.

    Abfolge:
    HELO
    auth login + base64-enkodierte Benutzerdaten
    ...

    Dies funktioniert soweit auch zufriedenstellend, nur akzeptiert Hosteurope dieses Prozedere nicht. Als ich daraufhin versuchte, das Verfahren mittels Telnet nachzuvollziehen, erhielt ich folgende Meldung:

    AUTH command used when not advertised
    EHLO gab folgendes zurück:
    250-****.webpack.hosteurope.de Hello [.............]
    250-SIZE 26214400
    250-PIPELINING
    250-AUTH PLAIN LOGIN
    250-STARTTLS
    250 HELP
    HELP:
    214 AUTH STARTTLS HELO EHLO MAIL RCPT DATA NOOP QUIT RSET HELP
    Kann mir zufällig jemand sagen, wie die Kommunikation mit diesem Server auszusehen hätte? Ich habe mich bisher durch die verschiedensten Artikel bezüglich dieses Protokols gewühlt und bin leider nicht fündig geworden.
    [COLOR=red]Gesellschaftsforum.net[/COLOR] - Projekt zur Wiederbelebung der Diskussionskultur im Internet
    [COLOR=orange]1st News[/COLOR] - Das Newsletterscript für den professionellen Einsatz

  • #2
    Re: SMTP und Hosteurope?

    Original geschrieben von Crake
    HELO
    auth login + base64-enkodierte Benutzerdaten
    Der Mailserver teilt dir mit, welche AUTH-Methoden er unterstützt. In diesem Fall (leider nur) PLAIN und LOGIN.
    Das heißt du kannst folgende AUTH-Kommandos absetzen: Entweder "AUTH PLAIN" oder "AUTH LOGIN". Beachte, dass du wirklich nur "AUTH LOGIN" sendest, nicht "AUTH LOGIN foobar". Letzteres versteht der Server nämlich als "ich möchte die Methode "LOGIN foobar" nutzen. Die wird vom Server nicht unterstützt, was er dir mit "AUTH command used when not advertised" mitteilt.

    http://de.wikipedia.org/wiki/SMTP-Auth

    Kommentar


    • #3
      Re: Re: SMTP und Hosteurope?

      Original geschrieben von onemorenerd
      Der Mailserver teilt dir mit, welche AUTH-Methoden er unterstützt. In diesem Fall (leider nur) PLAIN und LOGIN.
      Das heißt du kannst folgende AUTH-Kommandos absetzen: Entweder "AUTH PLAIN" oder "AUTH LOGIN". Beachte, dass du wirklich nur "AUTH LOGIN" sendest, nicht "AUTH LOGIN foobar". Letzteres versteht der Server nämlich als "ich möchte die Methode "LOGIN foobar" nutzen. Die wird vom Server nicht unterstützt, was er dir mit "AUTH command used when not advertised" mitteilt.

      http://de.wikipedia.org/wiki/SMTP-Auth
      Über diesen Artikel bin ich bereits gestolpert und ich verwende seit jeher lediglich "auth login". Von daher lässt sich das Problem nicht darauf zurückführen.
      [COLOR=red]Gesellschaftsforum.net[/COLOR] - Projekt zur Wiederbelebung der Diskussionskultur im Internet
      [COLOR=orange]1st News[/COLOR] - Das Newsletterscript für den professionellen Einsatz

      Kommentar


      • #4
        Dann zeig mal bitte den kompletten Ablauf der SMTP-Session! (sensible Daten unkenntlich machen, aber anzeigen, ob und wie sie encodet sind)

        Kommentar


        • #5
          Original geschrieben von onemorenerd
          Dann zeig mal bitte den kompletten Ablauf der SMTP-Session! (sensible Daten unkenntlich machen, aber anzeigen, ob und wie sie encodet sind)
          Ich poste es ganz einfach mal als PHP-Code. Allerdings erachte ich es als sinnlos, denn die meisten SMTP-Server akzeptieren diese Methode. Routinen zur Fehlerbehandlung wurden zwecks Verbesserung der Lesbarkeit entfernt.

          PHP-Code:
          $this->connection fsockopen($group_options["smtp_server"], $group_options["smtp_port"],...);
          fputs($this->connection"HELO ".$group_options["smtp_server"]."\r\n");
            
          //Anmeldung
          fputs($this->connection"auth login\r\n");
          fputs($this->connectionbase64_encode($group_options["smtp_username"])."\r\n");
          fputs($this->connectionbase64_encode($group_options["smtp_password"])."\r\n");
            
          // Mail from...
          fputs($this->connection"MAIL FROM: <$group_options[sender_email]>\r\n");

          // Rcpt to...
          fputs($this->connection"RCPT TO: <$to>\r\n");

          // Data...
          fputs($this->connection"DATA\r\n");

          //Message
          fputs($this->connection"To: $to\r\nSubject: $subject\r\n$headers\r\n\r\n$message\r\n.\r\n");

          //Verbindung beenden
          fputs($this->connection,"QUIT\r\n"); 
          Zuletzt geändert von Crake; 14.05.2007, 20:12.
          [COLOR=red]Gesellschaftsforum.net[/COLOR] - Projekt zur Wiederbelebung der Diskussionskultur im Internet
          [COLOR=orange]1st News[/COLOR] - Das Newsletterscript für den professionellen Einsatz

          Kommentar


          • #6
            Original geschrieben von Crake
            Allerdings erachte ich es als sinnlos, denn die meisten SMTP-Server akzeptieren diese Methode.
            Deswegen frage ich auch nach dem SMTP-Wortlaut. Dein Code interessiert mich nicht. Du hast ein Problem mit dem SMTP-Server, denn per Telnet klappts ja auch nicht, richtig?

            Kommentar


            • #7
              Original geschrieben von onemorenerd
              Deswegen frage ich auch nach dem SMTP-Wortlaut. Dein Code interessiert mich nicht. Du hast ein Problem mit dem SMTP-Server, denn per Telnet klappts ja auch nicht, richtig?
              Entschuldige, da habe ich dich mißverstanden und muss zugeben, dass ich nicht weiß, was du unter SMTP-Wortlaut verstehst.
              [COLOR=red]Gesellschaftsforum.net[/COLOR] - Projekt zur Wiederbelebung der Diskussionskultur im Internet
              [COLOR=orange]1st News[/COLOR] - Das Newsletterscript für den professionellen Einsatz

              Kommentar


              • #8
                Ich meine den Ablauf der SMTP-Sitzung wie hier in der linken Box.

                Kommentar


                • #9
                  Ah.

                  Anmerkung: Die BASE64-enkodierten Daten habe ich mal sicherheitshalber verschlüsselt.

                  >220 wp090.webpack.hosteurope.de ESMTP Exim 4.43 Sun, 13 May 2007 23:37:00 +0200
                  <HELO mailout.***.com
                  >250 ***.webpack.hosteurope.de Hello mailout.***.com [88.134.***.***]
                  <auth login
                  >503 AUTH command used when not advertised
                  <a56eec8fc8db77e23d47e0db2bc24707
                  >500 unrecognized command
                  <b192faa6188916963409bc0d26bae5ab
                  >500 unrecognized command
                  Zuletzt geändert von Crake; 14.05.2007, 00:36.
                  [COLOR=red]Gesellschaftsforum.net[/COLOR] - Projekt zur Wiederbelebung der Diskussionskultur im Internet
                  [COLOR=orange]1st News[/COLOR] - Das Newsletterscript für den professionellen Einsatz

                  Kommentar


                  • #10
                    Inzwischen bin ich durch Zufall auf eine Lösung gestoßen.

                    Ursache für das Problem:
                    Der SMTP-Server von Hosteurope erwartet "EHLO" anstelle von "HELO". Falls bei anderen Scripten ebenfalls entsprechende Probleme bestehen, können diese anhand jener Information angepasst werden.

                    Hinweis:
                    Viele PHP-Funktionen nutzen fgets() zum Auslesen der Rückgabewerte des SMTP-Servers. Da "EHLO" mehrere Zeilen zurückgibt, muss entweder der Dateizeiger an das Ende des Textes gesetzt werden oder fread() verwendet werden.
                    [COLOR=red]Gesellschaftsforum.net[/COLOR] - Projekt zur Wiederbelebung der Diskussionskultur im Internet
                    [COLOR=orange]1st News[/COLOR] - Das Newsletterscript für den professionellen Einsatz

                    Kommentar

                    Lädt...
                    X