POP - Post Office Protocol

POP ist ein Kommunikationsprotokoll, um E-Mails von einem Posteingangsserver (POP-Server) abzuholen. Die Kommunikation erfolgt zwischen einem E-Mail-Client und einem E-Mail-Server (Posteingangsserver). Das Protokoll, das diesen Zugriff regelt, nennt sich POP (aus dem Jahr 1984), das in der aktuellen Version 3 vorliegt, und deshalb manchmal auch als POP3 bezeichnet wird.

Wie funktioniert POP?

E-Mail-Kommunikation
Per Fernzugriff werden die gespeicherten E-Mails abgerufen und auf dem lokalen Computer gespeichert. POP sieht das Prinzip der Offline-Verarbeitung von E-Mails vor. Online werden die E-Mails vom Posteingangsserver vom E-Mail-Client heruntergeladen. Wenn sich darunter E-Mails mit einem großen Dateianhang befinden, kann der Download schon mal etwas länger dauern. Erst nach erfolgreichem und vollständigem Zugriff werden die E-Mails auf dem Server gelöscht. Die Bearbeitung der eingegangenen E-Mails erfolgt anschließend auf dem lokalen Computer des Benutzers ohne Verbindung (offline) POP-Server.
Die Verbindung zwischen POP-Server und E-Mail-Client erfolgt über TCP auf Port 110.

POP-Befehle

Ist eine Verbindung zwischen POP-Server und E-Mail-Client zustande gekommen, werden zur weiteren Kommunikation Kommandos ausgetauscht. Die POP-Kommandos bestehen aus 3 bis 4 Zeichen und einen oder mehreren Parametern. Die Antwort des Servers auf ein Kommando enthält einen Status und optionale Informationen. Der Status ist entweder positiv (+OK) oder negativ (-ERR). Die folgenden Befehle stellen die Minimal-Implementierung des POP-Protokolls dar.

POP-KommandoBeschreibung
USER Dieser Befehl identifiziert die Mailbox.
PASS Nach der Anmeldung muss der Benutzer mit einem Passwort authentifiziert werden.
QUIT Mit diesem Befehl wird die Verbindung zum POP3-Server beendet. Alle gespeicherten Änderungen werden dann ausgeführt. Zum Beispiel der Befehl DELE.
STAT Dieser Befehl fordert vom Server die Anzahl der gespeicherten E-Mails an. Außerdem wird die Größe der Mailbox in Oktetts zurückgeliefert.
LIST Dieser Befehl fordert vom Server die Nummer und Größe (in Oktetts) aller E-Mails an. Es kann auch die Größe einzelner E-Mails abgefragt werden.
RETR Dieser Befehl veranlasst den Server die angeforderte E-Mail zu liefern.
DELE Dieser Befehl veranlasst den Server die angeforderte E-Mail zu löschen. Dieser wird aber erst nach dem Beenden der Verbindung wirklich ausgeführt.
NOOP Dieser Befehl dient zur Aufrechterhaltung der Verbindung. Ein Timeout würde sonst die Verbindung trennen. Als Antwort liefert der Server +OK.
RSET Dieser Befehl setzt die aktive Verbindung zurück. Noch nicht ausgeführte Änderungen werden verworfen. Zum Beispiel der Befehl DELE.

POP-Sitzungen

Eine POP-Verbindung umfasst mehrere Sitzungsstufen. Nach dem der POP-Server die Verbindung mit einer positiven Meldung bestätigt hat, beginnt der "Authorization State", die Sitzung zur Benutzeranmeldung. Hier muss sich der E-Mail-Client gegenüber dem Server mit Benutzername und Passwort identifizieren. Nach erfolgreicher Identifizierung erfolgt der "Transaction State", die Sitzung zur Anforderung und Übermittlung der E-Mails. Hier werden alle Befehle zur Bearbeitung von E-Mails ausgeführt. Sendet der E-Mail-Client den Befehl QUIT, beginnt der "Update State", in dem alle vom E-Mail-Client angegebenen Änderungen ausgeführt werden. Die Verbindung über TCP ist zu diesem Zeitpunkt schon beendet. Der letzte Vorgang, der "Update State" stellt sicher, dass E-Mails nur dann auf dem Server gelöscht werden, wenn die Verbindung vom E-Mail-Client ordnungsgemäß beendet wurde. Ist die TCP-Verbindung während einer E-Mail-Übertragung zusammengebrochen oder ist es zu einem Timeout gekommen, dann sind noch nicht alle geladenen E-Mails verloren. Sie können nach einem nochmaligen Verbindungsaufbau heruntergeladen werden.

Beispiel für den Ablauf einer POP-Verbindung

 1: > USER ******
2: < +OK
3: > PASS ******
4: < +OK
5: > CAPA
6: < +OK
7: < EXPIRE 240
8: < LOGIN-DELAY 720
9: < TOP
10: < UIDL
11: < PIPELINE
12: < USER
13: < .
14: > LIST
15: < +OK
16: < MsgID Größe in Byte
17: < .
18: > STAT
19: < +OK MsgID Größe in Byte
20: > RETR MsgID
21: < +OK message follows
22: < E-MAIL
23: < .
24: > DELE MsgID
25: < +OK message MsgID deleted
26: > RSET
27: < +OK
28: > QUIT
29: < +OK

Analyse der POP-Verbindung

  1. Nach dem Verbinungsaufbau meldet sich der E-Mail-Client mit dem Benutzername an. Meistens ist das die E-Mail-Adresse.
  2. Der Server liefert eine positive Antwort und erwartet das Passwort.
  3. Das Passwort wird vom E-Mail-Client in Klartext an den Server übermittelt.
  4. Der Server liefert eine positive Antwort zurück. Der Benutzer ist nun korrekt angemeldet.
  5. Der Client fragt die Fähigkeiten des POP-Servers ab.
  6. Der Server liefert eine positive Antwort zurück.
  7. Anschließend liefert der POP-Server hintereinander alle Fähigkeiten.
  8. Die Liste der Fähigkeiten wird vom Server mit einem . (Punkt) abgeschlossen.
  9. Mit LIST fordert der E-Mail-Client eine Liste aller vorliegenden E-Mails an.
  10. Der Server gibt eine positive Antwort zurück.
  11. Anschließend liefert er einzeln alle E-Mails mit Message-ID und Größe in Byte zurück.
  12. Die E-Mail-Liste wird vom Server mit einem . (Punkt) abgeschlossen.
  13. Mit STAT fordert der E-Mail-Client eine Liste aller ungelesenen E-Mails an.
  14. Der Server gibt eine positive Antwort und die E-Mail mit Message-ID und Größe in Byte zurück.
  15. Mit RETR fordert der E-Mail-Client diese E-Mail an. Er kennzeichnet die Forderung mit der Message-ID.
  16. Der Server gibt eine positive Antwort zurück.
  17. Anschließend liefert er die ausgewählte E-Mail.
  18. Der Server schließt mit einem Punkt das Ende der E-Mail ab.
  19. Der E-Mail-Client löscht die E-Mail.
  20. Der Server gibt eine positive Antwort zurück.
  21. Der E-Mail-Client setzt mit RSET die Verbindung zurück. Damit wurde auch der vorhergehende Befehl DELE verworfen.
  22. Der Server gibt eine positive Antwort zurück.
  23. Mit QUIT beendet der E-Mail-Client die Verbindung zum Server
  24. Der Server gibt eine positive Antwort zurück. Die Verbindung wird beendet.