POPPOP, genauer POP 3, ist die bisher noch gebräuchlichste Methode, um E-Mails von einem Provider zu empfangen, wenn der eigene Rechner nicht ständig mit demInternet verbunden ist. Das Prinzip und der Funktionsumfang von POP sind einfach:- Die für den Empfänger bestimmten E-Mails landen beimProvider im Spool-Verzeichnis und müssen dort vomEmpfänger abgeholt werden.
- Der Provider stellt einen POP-Server zur Verfügung, welcher dieSchnittstelle des POP-Clients auf dem Empfänger-Rechnerdarstellt. Der lokale POP-Client kommuniziert mit dem POP-Serverbeim Provider. "Uber ihn werden die vorhandenen E-Mailsangeboten.
Eine Kommunikation zwischen dem POP-Client und dem POP-Server beimProvider kann schematisch beispielsweise so aussehen : Client:Hast Du neue E-Mails für mich? Server:Ja, insgesamt fünf Stück! Client:Liste mir die Absender auf! Server:Meier, Mueller, Huber, Schulze Client:Zeige die E-Mails an! Server:((Zeigt E-Mails an)) Client:((Speichert E-Mails ab)) Client:Lösche alle angezeigten E-Mails Server:((Löscht alle angezeigten E-Mails))
Wenn ein Client über POP3 Nachrichten abrufen möchte, baut er eine
TCP-Verbindung über Port 110 auf. Ist die Verbindung zustande gekommen, sendet
der Server eine Begrüßungsmeldung. Die weitere Kommunikation zwischen
beiden Rechnern erfolgt über Kommandos, die aus drei oder vier Zeichen langen
Wörtern (mit einem oder mehreren Argumenten mit bis zu je 40 Zeichen) bestehen.
Antworten enthalten einen Status-Indikator und ein Statuswort sowie optionale
Informationen. Es gibt zwei Status-Indikatoren:
- Positiv: +OK
- Negativ: -ERR
Eine POP3-Verbindung durchläuft mehrere Stufen. Nach der
Server-Begrüßung beginnt der "Authorization State". Der Client muß sich
gegenüber dem Server identifizieren. Nach erfolgreicher Authorisierung beginnt
der "Transaction State". Es werden alle Operationen zum Bearbeiten von Mails
ausgeführt. Sendet der Client das Kommando QUIT, beginnt der "Update State".
Der Server beendet die TCP-Verbindung und führt die vom Client im
"Transaction State" angeforderten Änderungen durch.
Viele POP3-Server haben zusätzlich einen Inaktivitäts-Timer. Laut
Spezifikation muß dieser auf mindestens zehn Minuten eingestellt sein.
Jedes Kommando des Clients setzt den Timer zurück. Ist der Timer abgelaufen,
wird die TCP-Verbindung beendet, ohne in den "Update State" zu wechseln - eventuelle
Änderungen werden auf dem Server nicht gespeichert.
Nachdem der POP3-Client eine Verbindung zum Server aufgebaut hat, sendet dieser
eine einzeilige Begrüßungsmeldung beliebigenInhalts, z. B.:
Server: +OK POPEL-3 server ready
Dabei handelt es sich bereits um eine Antwort des Servers, daher beginnt die
Meldung immer mit einer positiven Bestätigung (+OK). Die Verbindung befindet
sich nun im Zustand "Authorization". Der Client muß sich jetzt gegenüber
dem Server identifizieren. Dies erfolgt über die beiden Kommandos USER und PASS.
Kommandos im "Authorization State" |
Kommando | Argument | Beschreibung |
USER | Name |
Das Argument identifiziert eine Mailbox. |
PASS | String |
Der String enthält ein Mailbox-spezifisches Passwort. |
QUIT | - |
Beendet die Verbindung. |
Die Kombination aus den Kommandos USER und PASS ist am gebräuchlichsten.
Dabei werden die jeweiligen Parameter im Klartext an den Server gesendet.
Ein Beispiel: Der Username für das Postfach soll "plate", das Passwort
"XYZ1230" heißen. In diesem Fall wird folgender Authentifizierungsdialog ablaufen:
Client: USER plate
Server: +OK name is a valid mailbox
Client: PASS YXZ1230
Server: +OK platesÝs maildrop has 9 messages (1600 octets)
Bei falschen Angaben verweigert der Server den Zugang und gibt eine
Fehlermeldung aus. Mögliche Dialoge bei falschem Usernamen:
Client: USER plato
Server: -ERR sorry, no mailbox for plato here
Oder bei einem falschen Passwort:
Client: USER plate
Server: +OK name is a valid mailbox
Client: PASS tralala
Server: -ERR invalid password
Die Tatsache, daß alle Dialoge im Klartext über das Netz abgewickelt
werden, birgt ein hohes Sicherheitsrisiko. Mit dem Kommando APOP sieht die
aktuelle POP3-Definition eine wesentlich sicherere Option zur Authentifizierung
vor. Diese beschreibt in einem Kommando den User und identifiziert ihn mit einer
Einweg-Hash-Funktion.
Hat sich der Client beim Server identifiziert, wechselt die Verbindung in den
"Transaction State". Dem Client stehen nun eine Reihe von Kommandos zur
Behandlung der Mails zur Verfügung:
Kommandos im "Transaction State" |
Kommando | Argument | Beschreibung |
STAT | - |
Liefert die Anzahl der gespeicherten Mails und die Größe der
Mailbox zurück (in Byte). |
LIST | Nummer |
Liefert die Nummer und Größe (in Bytes) aller Mails zurück.
Wird als Argument eine Mail-Nummer angegeben, wird nur die Größe
dieser Mail ausgegeben. |
RETR | Nummer |
Gibt die Mail mit der als Argument übergebenen Nummer aus. |
DELE | Nummer |
Löscht die Mail mit der übergebenen Nummer. |
NOOP | - |
Bewirkt die Antwort "+OK". Dient zur Aufrechterhaltung der
Verbindung, ohne daß ein Time-Out auftritt. |
RSET | - |
Setzt die aktive Verbindung zurück. Noch nicht ausgeführte
Änderungen werden verworfen. |
QUIT | - |
Beendet die Verbindung und führt alle gespeicherten Änderungen aus. |
Der Server führt das Kommando DELE nicht unmittelbar aus. Die entsprechenden
E-Mails werden als gelöscht marlkiert und erst bei Beenden der Verbindung
endgültig vom Server gelöscht. Hat man eine Nachricht zum Löschen gekennzeichnet, möchte dies jedoch rückgängig machen, führt
man das Kommando RSET aus. Der Server verwirft alle noch nicht ausgeführten
Operationen.
Sendet der Client das QUIT-Kommando, wechselt die Verbindung in den "Update State".
Der Server trennt die TCP-Verbindung und führt alle gespeicherten
Änderungen aus.
Neben den hier vorgestellten, für eine minimale Implementation ausreichenden
Kommandos gibt es noch weitere, die von den meisten Clients und Servern unterstützt
werden. Details hierzu finden Sie in RFC1725.
Im folgenden Beispiel sehen Sie den Ablauf einer POP3-Verbindung. Der Client
identifiziert sich gegenüber dem Server und ruft eine Liste der gespeicherten
E-Mails ab. Danach werden die Nachrichten einzeln heruntergeladen, auf dem Server
zum Löschen gekennzeichnet, und die Verbindung wird beendet.
Server: +OK POP3 server ready
Client: user plate
Server: +OK
Client: pass xyz1230
Server: +OK
Client: LIST
Server: +OK 3 messages (520 octets)
Server: 1 120
Server: 2 190
Server: 3 210
Server: .
Client: RETR 1
Server: +OK 120 octets
Server: <... sendet Nachricht 1>
Server: .
Client: DELE 1
Server: +OK message 1 deleted
Client: RETR 2
Server: +OK 190 octets
Server: <... sendet Nachricht 2>
Server: .
Client: DELE 2
Server: +OK message 2 deleted
Client: RETR 4
Server: -ERR no such message
Client: QUIT
Server: +OK
|