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?
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-Kommando | Beschreibung |
---|---|
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
- Nach dem Verbinungsaufbau meldet sich der E-Mail-Client mit dem Benutzername an. Meistens ist das die E-Mail-Adresse.
- Der Server liefert eine positive Antwort und erwartet das Passwort.
- Das Passwort wird vom E-Mail-Client in Klartext an den Server übermittelt.
- Der Server liefert eine positive Antwort zurück. Der Benutzer ist nun korrekt angemeldet.
- Der Client fragt die Fähigkeiten des POP-Servers ab.
- Der Server liefert eine positive Antwort zurück.
- Anschließend liefert der POP-Server hintereinander alle Fähigkeiten.
- Die Liste der Fähigkeiten wird vom Server mit einem . (Punkt) abgeschlossen.
- Mit LIST fordert der E-Mail-Client eine Liste aller vorliegenden E-Mails an.
- Der Server gibt eine positive Antwort zurück.
- Anschließend liefert er einzeln alle E-Mails mit Message-ID und Größe in Byte zurück.
- Die E-Mail-Liste wird vom Server mit einem . (Punkt) abgeschlossen.
- Mit STAT fordert der E-Mail-Client eine Liste aller ungelesenen E-Mails an.
- Der Server gibt eine positive Antwort und die E-Mail mit Message-ID und Größe in Byte zurück.
- Mit RETR fordert der E-Mail-Client diese E-Mail an. Er kennzeichnet die Forderung mit der Message-ID.
- Der Server gibt eine positive Antwort zurück.
- Anschließend liefert er die ausgewählte E-Mail.
- Der Server schließt mit einem Punkt das Ende der E-Mail ab.
- Der E-Mail-Client löscht die E-Mail.
- Der Server gibt eine positive Antwort zurück.
- Der E-Mail-Client setzt mit RSET die Verbindung zurück. Damit wurde auch der vorhergehende Befehl DELE verworfen.
- Der Server gibt eine positive Antwort zurück.
- Mit QUIT beendet der E-Mail-Client die Verbindung zum Server
- Der Server gibt eine positive Antwort zurück. Die Verbindung wird beendet.