POP3 ist ein sehr verbreitetes Protokoll zum Herunterladen von E-Mails von einem Mailserver. Es ist gleichermaßen bei Serverbetreibern und Nutzern beliebt, da es mit relativ wenigen Befehlen sehr performant arbeitet, allerdings nur rudimentäre Archivierungsmöglichkeiten auf der Serverseite bietet.
Wieso POP3?
Als allgemeines Übertragungsprotokoll für E-Mails hat sich im Internet das Simple Mail Transfer Protocol (SMTP) durchgesetzt. Es transportiert E-Mails von einem SMTP-Client zu einem SMTP-Server und entsprechend zu einem anderen SMTP-Server weiter.
Die Internet-Welt hat sich jedoch seit der Einführung von SMTP grundsätzlich gewandelt. Immer mehr Rechner sind nur temporär im Internet, beispielsweise Einwahlkunden eines Internet-Providers. Deshalb wurde schon recht frühzeitig die Idee verfolgt, Mails auf einem SMTP-Server zu lagern und diese den Empfängern zum Herunterladen bereitzustellen. Dieses Herunterladen konnte nicht mit SMTP realisiert werden, da SMTP ein reines "Push"-Protokoll ist, also E-Mails von Host zu Host weiterleitet, und in der Urfassung beispielsweise keine Möglichkeiten zur Benutzerauthentifizierung ermöglicht. Andere Konzepte waren deshalb zum Herunterladen von E-Mails gefragt.
Im Laufe der Zeit haben sich zwei unterschiedliche Protokolle etabliert: IMAP4 und POP3. Beide Protokolle dienen ausschließlich zum Herunterladen von E-Mails von einem Mailserver, verfolgen aber zwei unterschiedliche Techniken. IMAP4 richtet sich vor allem an Nutzer, die E-Mails auf dem Mailserver organisieren (z.B. serverseitig in Ordner verteilen usw.) wollen oder müssen. Dies macht Sinn, wenn Nutzer von verschiedenen Standorten ihre E-Mails verwalten möchten, erfordert allerdings eine nicht zu unterschätzende Rechenleistung des Servers. POP3 hingegen bietet keine umfangreichen serverseitigen Organisationsmöglichen, sondern stellt quasi nur die Möglichkeit bereit, Mails vom Server zum Client zu transportieren und diese danach auf dem Server zu löschen.
Die Ziffer 3 steht übrigens für "Version 3", ebenso wie die Ziffer 4 bei "IMAP4". Im Falle von POP3 ist dies also die dritte Version des POP-Protokolls.
Technische Grundzüge
POP3 funktioniert nach dem Client-Server-Prinzip und ist ein verbindungsorientiertes Protokoll. Ein POP3-Client baut eine eigene Sitzung zum POP3-Server auf und beide halten diese Sitzung aufrecht, bis einer von beiden die Sitzung terminiert oder die Verbindung anderweitig trennt (zum Beispiel durch eine Zeitüberschreitung).
Eine solche POP3-Sitzung ist in drei Stadien aufgeteilt; dem Authorization State (Autorisierung), dem Transaction State (Transaktion) und dem Update State (Aktualisierung). Diese drei Stadien müssen POP3-Client und -Server für eine erfolgreiche POP3-Sitzung durchlaufen.
Zu den einzelnen Stadien kommen wir im nächsten Block bei
den POP3-Befehlen.
POP3-Befehle
AUTHORIZATION STATE
Dieses Stadium dient der Benutzerauthentifizierung. Ordentlich beendet kann dieses Stadium entweder nur durch die Eingabe einer gültigen Benutzernamen-Passwort-Kombination (dann wird automatisch in das Transaction State umgeschaltet) oder dem Beenden der POP3-Sitzung durch den QUIT-Befehl.
- USER benutzername
Hier wird der Benutzername an den POP3-Server übergeben. Als Antwort gibt der POP3-Server entweder eine positive Antwort mit der Aufforderung, nun das Passwort zu übergeben (siehe nächsten Befehl), oder eine negative Antwort. Dann muss der Befehl wiederholt werden. Die meisten POP3-Server geben bei jedem Benutzernamen eine positive Antwort und prüfen erst nach Eingabe des Passwortes, ob die angeforderte Mailbox auch wirklich vorhanden ist. - PASS passwort
Hier wird das Passwort an den POP3-Server übergeben. Als Antwort gibt der POP3-Server entweder eine positive Antwort und geht in das Transaktionsstadium über, oder eine negative Antwort. Dann muss die Authentifizierung nochmals neu mit dem USER-Befehl gestartet werden. Alternativ darf ein Mailserver nach einer fehlgeschlagenen Authentifizierung die aktuelle POP3-Sitzung beenden. - APOP benutzername verschluesseltes_passwort
Sonderform der Benutzerauthentifizierung, bei der das Passwort auf verschlüsseltem Wege zum POP3-Server übertragen wird. Hierzu übergibt der Server beim Start der POP3-Sitzung mit der Begrüßung einen Zeitstempel. Der POP3-Client fügt nun diesem Zeitstempel das zu übertragende Passwort an und verschlüsselt es mit einem bestimmten Algorithmus. Der POP3-Server entschlüsselt es und geht entweder in das Transaktionsstadium über oder der Client erhält eine negative Antwort. - QUIT
Befehl zur Beendung der Sitzung. Der Server antwortet daraufhin mit einer positiven Antwort und beendet die Sitzung.
TRANSACTION STATE
Dieses Stadium ist das eigentliche "Arbeitsstadium"; hier werden Informationen über die Mailbox angezeigt, Mails abgerufen und zur Löschung markiert. Ordentlich verlassen werden kann dieses Stadium durch den QUIT-Befehl.
- STAT
Dieser Befehl liefert in einer positiven Rückantwort die Zahl der Mails, die derzeit im Mailfach liegen und, getrennt durch einen Leerschritt, den Speicherplatz, der durch die Mails belegt ist. - LIST nachricht
Dieser Befehl listet, wenn kein Argument angegeben wird, zeilenweise jede vorhandene Mail auf. Jede Zeile enthält die Nummer der Mail und, getrennt durch einen Leerschritt, den Speicherplatz, der durch diese Mail belegt ist. Wird der Befehl mit einem Argument abgesendet, gibt das Argument die Nummer der Mail an und es wird nur die Mailnummer und Speicherplatzbelegung für die angegebene Mail zurückgegeben. - RETR nachricht
Befehl zum Abrufen einer Mail. Das unbedingt mitzuliefernde Attribut gibt dabei die Nummer der Mail an, die abgerufen werden soll. - TOP nachricht zeilen
Dieser Befehl ist eine erweiterte Form des RETR-Befehls. Mit einem zusätzlichen Attribut kann die Zahl der Zeilen vorgegeben werden, die angezeigt werden sollen. Dies ist nützlich, wenn eine besonders große Mail in der Mailbox liegt und deshalb z.B. nur die ersten 100 Zeilen angezeigt werden sollen. - DELE nachricht
Befehl zum Löschen einer Mail. Das unbedingt mitzuliefernde Attribut gibt dabei die Nummer der Mail an, die gelöscht werden soll. Die Mail wird hierbei aber nicht sofort gelöscht, sondern wird nur zur Löschung freigegeben, das wiederum mit dem Befehl RSET zurückgenommen werden kann. Gelöscht werden zur Löschung freigegebene Mails erst, wenn die POP3-Sitzung mit dem Befehl QUIT beendet werden soll und der POP3-Server danach in das Update Stadium übergeht. - NOOP
Befehl zum Aufrechterhalten der aktuellen POP3-Sitzung. Als Antwort auf diesen argumentlosen Befehl liefert der POP3-Server eine positive Antwort zurück. - RSET
Dieser argumentlose Befehl setzt alle eventuell gegebenen Löschmarkierungen wieder zurück, d.h. Mails, die mit dem Befehl DELE zur Löschung freigegeben wurden, werden nicht gelöscht.
UPDATE STATE
In diesem Stadium werden zur Löschung freigegebene Mails gelöscht. Dies hat den Sinn, dass Mails im Transaction State nicht unkontrolliert gelöscht werden können, z.B. bei einem Verbindungsabbruch. Werden im Transaction State Mails gelöscht, geschieht dies in Wirklichkeit erst im Update Stadium; bricht vorher die Verbindung ab, werden die zur Löschung freigegebenen Mails nicht gelöscht.
- QUIT
Dieser Befehl wechselt in das Update Stadium löscht erst dann Mails, die zur Löschung durch den DELE-Befehl markiert wurden. Nach dieser Löschung wird die POP3-Sitzung ordentlich getrennt.
Statusmeldungen
Im POP3-Protokoll werden alle Antworten des Servers in zwei Kategorien eingeteilt, positive und negative Antworten:
- +OK
Der gesendete Befehl wurde vom POP3-Server empfangen, verstanden und korrekt ausgeführt. - -ERR
Der gesendete Befehl wurde vom POP-Server entweder nicht empfangen (Timeout-Beschränkungen können die Verbindung serverseitig trennen, wenn eine bestimmte Zeit keine Daten übertragen wurden), nicht verstanden (eventuell Fehler in der übergebenen Syntax) und/oder nicht korrekt ausgeführt.
Alle Befehlsantworten des POP3-Servers werden in diesem Format zurückgeliefert.
Weiterführende Links
ftp://ftp.isi.edu/in-notes/rfc1939.txt
RFC 1939 - Post Office Protocol - Version 3