mf_2
2007-09-26, 13:11:57
Hallo,
Ich habe lokal einen Mailserver laufen. Auf diesem führe ich mit telnet folgende Kommandos aus:
HELO
EHLO
QUIT
Sowohl nach HELO als auch nach EHLO bekomme ich eine Rückgabe. Bei Verbindungsaufbau bekommt man eine Willkommensnachricht.
Wenn ich nun unter PHP so die Verbindung aufbaue:
$sock = fsockopen("127.0.0.1", 25, $errno, $errstr, 30);
und mir $sock ausgeben lasse (echo fgets($sock)."<BR>";), habe ich ebenfalls die Willkommensnachricht.
Nun sende ich das HELO: fwrite($sock, "HELO".chr(10).chr(13));
und wieder eine Ausgabe: echo fgets($sock)."<BR>";
Das klappt auch noch. Wenn ich nun aber nochmal HELO sende, oder auch EHLO, oder QUIT oder sonstwas, bekomme ich immer den Fehler 503 - Bad sequence of commands.
Ich 'vermute', dass mein CRLF (Codes 10 und 13) nicht richtig interpretiert wird und daher das Zeilenende nach der ersten Anweisung nicht sauber ist, was zur Folge hat, dass jede (wie auch immer lautende) Folgeanweisung zum Scheitern verurteilt ist.
Wie bekomme ich nun ein sauberes Zeilenende hin? Laut PHP Manual ist ein CRLF genau das, was erwartet wird.
Ohne diese chr(10).chr(13) funktioniert es garnicht.
Wisst ihr da weiter?
Ich habe lokal einen Mailserver laufen. Auf diesem führe ich mit telnet folgende Kommandos aus:
HELO
EHLO
QUIT
Sowohl nach HELO als auch nach EHLO bekomme ich eine Rückgabe. Bei Verbindungsaufbau bekommt man eine Willkommensnachricht.
Wenn ich nun unter PHP so die Verbindung aufbaue:
$sock = fsockopen("127.0.0.1", 25, $errno, $errstr, 30);
und mir $sock ausgeben lasse (echo fgets($sock)."<BR>";), habe ich ebenfalls die Willkommensnachricht.
Nun sende ich das HELO: fwrite($sock, "HELO".chr(10).chr(13));
und wieder eine Ausgabe: echo fgets($sock)."<BR>";
Das klappt auch noch. Wenn ich nun aber nochmal HELO sende, oder auch EHLO, oder QUIT oder sonstwas, bekomme ich immer den Fehler 503 - Bad sequence of commands.
Ich 'vermute', dass mein CRLF (Codes 10 und 13) nicht richtig interpretiert wird und daher das Zeilenende nach der ersten Anweisung nicht sauber ist, was zur Folge hat, dass jede (wie auch immer lautende) Folgeanweisung zum Scheitern verurteilt ist.
Wie bekomme ich nun ein sauberes Zeilenende hin? Laut PHP Manual ist ein CRLF genau das, was erwartet wird.
Ohne diese chr(10).chr(13) funktioniert es garnicht.
Wisst ihr da weiter?