Manchmal ist es notwendig die Funktionalität eines Mailservers auf niedrigerer Ebene zu testen, um eventuelle Fehler erkennen zu können. Hier zeige ich, wie man sich per POP3 auf einem Server einloggt, vorhandene Mails auflistet und sich anzeigen lassen kann und welche Kommandos noch so möglich sind.

Benötigt wird dazu ein Telnet-Programm (das telnet-Kommando ist auf den meisten Linux-Boxen vorinstalliert ebenso wie die telnet.exe unter Windows (Ausnahme ist Windows7, hier muss telnet nachinstalliert werden). Alternativ dazu kann man sich unter Windows auf den Putty installieren.

POP3 läuft in den allermeisten Fällen auf TCP Port 110. Die Verbindung kann somit mit folgendem Kommando aufgebaut werden:

telnet pop3.mailserver.de 110

wenn die Verbindung geklappt hat, meldet sich der POP3-Server etwa so:

Connected to pop3.mailserver.de (123.123.123.123).
Escape character is '^]'.
+OK Hello there. <14408.1289900395@localhost.localdomain>

Für jedes Kommando, das ihr nun ausführt, antwortet der Server entweder mit einem Fehler und einer optionalen Fehlernummer:

-ERR 999 message text

oder wenn das Kommando ausgeführt wurde mit:

+OK message text

Die ersten Kommandos machen Dich mit dem Server bekannt und gewähren Zugriff auf die Mailbox:

USER test@mailserver.de
+OK Password required.
PASS test123
+OK logged in.

Je nach Mailserver braucht ihr für das Login den Domainteil oder auch nicht. Die Daten hier sind die gleich, die Ihr z.B. auch im Thunderbird eintragen müsst.

Nach dem Login sind folgende Kommandos möglich:

STAT Der Server antwortet hierauf mit: +OK #msgs #bytes
#msgs ist hier die Anzahl der Nachrichten in der Mailbox und #bytes ist die Gesamtgröße aller Nachrichten zusammen.

LIST Dieses Kommando listet alle Mails in der Mailbox auf, eine Mail pro Zeile mit deren Nummer und der Größe in Bytes.

RETR msg# Gibt die Mail mit der Nummer msg# auf dem Display aus.

TOP msg# #lines Dieses Kommando wird nicht von allen Mailservern unterstützt. Es gibt die Header der Mail msg# und die ersten #lines des Bodys aus.

DELE msg# Dieser Befehl markiert die Nachricht msg# zum Löschen. Die Mail wird nicht gelöscht bevor die Verbindung mit QUIT beendet wird. Sollte die Verbindung vor einem QUIT etwa durch einen Timeout beendet werden, sollte der Mailserver die Nachricht nicht löschen.

RSET Alle vorab zum Löschen markierten Mails werden zurückgesetzt, damit ein QUIT diese nicht löscht.

QUIT Entfernt alle zum Löschen markierten Mails und beendet die Verbindung zum Mailserver.

Diesen und weitere Artikel findet Ihr in meinem Wiki.