Vor kurzem war ich auf der Suche nach einer schnellen aber eleganten Debug-Lösung zum Testen des Email-Versands. Natürlich lässt sich so ein Dienst auch ganz fix von Hand schreiben (der Autor überlässt das kurzerhand dem Leser zur Übung). Aber wer will das schon? Insbesondere dann, wenn es mal wieder schnell gehen muss!
Hier springt Python in die Bresche. Mit der Klasse DebuggingServer aus dem Modul smtpd stellt es einen solchen Debugging-Mailserver in null-komma-nix auf die Beine. Host und Port lassen sich auf der Kommandozeile festlegen. Hier ein Beispielaufruf:
python -m smtpd -n -c DebuggingServer localhost:1025
Der Prozess lümmelt dann auf der Konsole herum bis er über Port 1025 eine Nachricht empfängt. Diese wird prompt auf der Konsole ausgegeben, was dann beispielsweise so aussieht:
---------- MESSAGE FOLLOWS ---------- Date: Mon, 30 May 2011 12:07:07 +0000 (GMT) From: sender@myhost.de Reply-To: sender@myhost.de To: receiver@anotherhost.de Message-ID: <145994206.01306757227256.JavaMail.user@hostname> Subject: Hallo Welt MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Peer: 127.0.0.1 Etwas Demo-Text... ------------ END MESSAGE ------------
Eigentlich alles, was das Debugger-Herz begehrt, oder? Weitere Infos dazu gibt die Python Dokumentation her.
Übrigens ist der SMTP Server nicht alleine unterwegs. Im Handgepäck von Python befindet sich u.a. auch noch ein minimaler HTTP Server, um auf die Schnelle ein lokales Verzeichnis für andere Nutzer verfügbar zu machen. Aufgerufen wird der Dienst wieder über die Konsole:
python -m SimpleHTTPServerDas bindet den Prozess an die IP 0.0.0.0, Port 8000. Ruft man die URL über den Browser auf, mutet die Server-Antwort zwar etwas spartanisch an, erfüllt aber voll und ganz ihren Zweck:

Der Prozess gibt auf der Konsole das Access-Log des Servers aus. Wie schon vorhin sei auch in diesem Fall auf die Python Dokumentation verwiesen.
2 Kommentare
Basil sagt:
8. Juni 2011 von 23:19 (UTC 1)
Wirklich Nett! i like it! Wo ist denn der Facebook-Like-Button?
ronny sagt:
22. Juni 2011 von 18:25 (UTC 1)
Dafür sah ich bisher echt keinen Bedarf. Aber mal sehen.