# Post Office Protocol

POP3 (Post Office Protocol Version 3) :
| Familie: | Internetprotokollfamilie |
| Einsatzgebiet: | Abholen von E-Mail vom Provider |
| Port: | 110/TCP 995/TCP (Verschlüsselt) |
| POP3 im TCP/IP-Protokollstapel: Anwendung POP3 Transport TCP Internet IP (IPv4, IPv6) Netzzugang Ethernet Token Bus Token Ring FDDI … ||
| Standards: | RFC 1939 (POP3, 1996) |
Das Post Office Protocol (POP) ist ein Netzwerkprotokoll auf Anwendungsschicht, über das ein E-Mail-Programm E-Mails von einem E-Mail-Server abholen kann und das 1984 erstmals beschrieben wurde. Version 3 (POP3) von 1988 wird im RFC 1939 beschrieben.
POP3 ist in der Funktionalität sehr beschränkt und erlaubt nur das Auflisten, Abholen und Löschen von E-Mails am E-Mail-Server. Für weitere Funktionen wie hierarchische Mailboxen direkt am Mailserver, Zugriff auf mehrere Mailboxen während einer Sitzung, Vorselektion der E-Mails usw. müssen Protokolle wie IMAP verwendet werden.
Als Gegenstück zu POP3 ist für das Versenden von E-Mails üblicherweise in Clients und Servern das Simple Mail Transfer Protocol (SMTP) implementiert.

## Geschichte

Erstmals wurde das Post Office Protocol im Oktober 1984 in RFC 918 beschrieben. Bereits im Februar 1985 folgte das in RFC 937 beschriebene POP2, bevor POP3 erstmals im November 1988 in RFC 1081 erschien.
POP3 entspricht POP und POP2 in der grundsätzlichen Form. Die Vorgehensweise des Mailabrufs unterscheidet sich vor allem dadurch, dass die Notwendigkeit der Empfangsbereitschaft des Clients wegfällt sowie der korrekte Empfang einer Mail nicht mehr bestätigt zu werden braucht. Die geringere Komplexität und das Vorhandensein von „Übersichtsbefehlen“ wie STAT und LIST gehören zu den Merkmalen von POP3. Auch ist POP3 von Anfang an genauer und ausführlicher beschrieben.
Für POP4 als Nachfolgerversion wurde ein Vorschlag inklusive funktionierender Serverimplementierung dargelegt. Dieser Vorschlag enthält elementares Verzeichnismanagement, Unterstützung für multi-part messaging sowie Nachrichtenmarkierungen, was ein einfaches Protokoll ermöglicht, um einige populäre IMAP-Funktionen nachzurüsten, die in POP3 fehlen. Seit 2003 konnten aber keine Fortschritte mehr bei der Entwicklung von POP4 beobachtet werden.

## POP3-Clients

Das POP3-Protokoll ist in verbreiteten E-Mail-Programmen integriert, wird jedoch zunehmend von IMAP abgelöst.

## POP3-Server

Ein POP3-Server lauscht standardmäßig auf Port 110.
Bei Windows-E-Mail-Servern kann der POP3-Server in das entsprechende E-Mail-Server-Paket (z. B. im Mail-Server von Windows Server 2003 oder bei Server-Software wie beispielsweise Microsoft Exchange oder Lotus Domino) integriert sein. Bei Mercury/32 ist die POP3-Funktionalität als Modul vorhanden. Andere Softwarehersteller können weitere Lösungen vorsehen.
Im Unix-Bereich gibt es u. a. folgende POP3-Server-Software:
* courier-pop
* cyrus-pop3d (Teil der Cyrus-Mailserver-Software)
* Dovecot
* ipopd
* popa3d
* qpop3d (Teil von qmail)
* qpopper
* ipop3d (aus dem IMAP Toolkit Environment von Mark Crispin)
* Citadel/UX

## Unterschiede zu IMAP

POP3-Verbindungen werden bei Bedarf vom Client aufgebaut und beendet; nach der Anmeldung werden alle E-Mails vom Mailserver heruntergeladen.
Eine Synchronisierung zwischen den Clients findet per POP3 hingegen nicht statt. Wenn eine E-Mail gelöscht oder als „gelesen“ markiert wird, bleibt die Nachricht ungelöscht bzw. ungelesen auf allen anderen Geräten erhalten.
Dadurch unterscheidet sich POP3 von IMAP, das sowohl eine dauerhafte Verbindung zum Server als auch eine Synchronisierung zwischen Clients ermöglicht.

## Kommandos

POP3 ist ein textbasiertes Protokoll, das ASCII verwendet. Der Client sendet auf einer Zeile ein Kommando an den Server, der mit einer oder mehreren Zeilen antwortet.
Standardkommandos (auf jedem Server vorhanden):

### USER xxx

    wählt den Benutzernamen bzw. das Benutzerkonto auf dem E-Mail-Server.

### PASS xxx

    übergibt das Passwort in Klartext.

### STAT

    liefert den Status der Mailbox, u. a. die Anzahl aller E-Mails im Postfach und deren Gesamtgröße (in Byte).

### LIST n

    liefert die Anzahl und die Größe der (n-ten) E-Mail(s).

### RETR n

    holt die n-te E-Mail vom E-Mail-Server.

### DELE n

    löscht die n-te E-Mail auf dem E-Mail-Server.

### NOOP

    keine Funktion, der Server antwortet mit +OK.

### RSET

    setzt alle DELE-Kommandos zurück.

### QUIT

    beendet die aktuelle POP3-Sitzung und führt alle DELE-Kommandos durch.
Optionale Kommandos (serverabhängig):

### APOP

    sichere Anmeldung, s. u.

### TOP n x

    ruft den Header und die ersten x Zeilen der n-ten Mail ab.

### UIDL n

    zeigt die eindeutige ID der E-Mail an.
Zum Test von POP3-Verbindungen können die Kommandos mittels eines Telnet-Programms direkt an den Port 110 gesendet und die Antworten des POP3-Servers überprüft werden. (Für dieses Beispiel gibt man unter Windows oder Linux telnet example.com pop3 in der Eingabeaufforderung oder in der Konsole ein. Domain und Port werden durch Leerzeichen und nicht durch Doppelpunkt getrennt.)
Eine typische POP3-Session zwischen Server und Client könnte folgendermaßen aussehen:
| Client | Server |
| | (wartet auf Verbindungen auf TCP Port 110) |
| (öffnet Verbindung) | |
| | +OK example.com POP3-Server |
| USER wiki@example.com | |
| | +OK Please enter password |
| PASS passwort_im_klartext | |
| | +OK mailbox locked and ready |
| STAT | |
| | +OK 1 236 |
| LIST | |
| | +OK mailbox has 1 messages (236 octets) 1 236 . |
| RETR 1 | |
| | +OK message follows Date: Mon, 18 Oct 2004 04:11:45 +0200 From: Someone <someone@example.com> To: wiki@example.com Subject: Test-E-Mail Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Dies ist eine Test-E-Mail . |
| DELE 1 | |
| | +OK message marked for delete |
| QUIT | |
| | +OK bye (schließt Verbindung und führt DELE Befehl aus) |

## Sicherheit
### Authentifizierung

Wie auch SMTP ist POP3 recht simpel. Es setzt die Authentifizierung des Benutzers über Benutzernamen und Passwort voraus. Nutzername und Passwort werden ungeschützt als Klartext übertragen. Das ermöglicht Angreifern den unbemerkten Zugriff auf die Mailbox und ist eine eklatante Sicherheitslücke. Um die Authentifizierung abzusichern, gibt es verschiedene Erweiterungen. Abhilfe schaffen die bei vielen Servern verfügbaren über SASL eingebundenen Mechanismen und das ebenfalls im Standard definierte APOP. Bei Benutzung von APOP wird das Passwort nicht mehr im Klartext übertragen. Stattdessen überträgt der Server am Anfang der Sitzung einen Zeitstempel. Der Mailclient berechnet aus diesem und dem Passwort einen Hash-Wert, der dann an den Server übertragen wird. Kommt der Server zu demselben Ergebnis, gilt der Loginvorgang als erfolgreich.

### Verschlüsselung

Authentifizierungsdaten, POP3-Kommandos und die Nachricht selbst können über SSL/TLS auch komplett verschlüsselt übertragen werden. Dabei wird alternativ das STARTTLS-Verfahren (das Kommando lautet STLS) auf dem Standard-TCP-Port 110 oder POP3 über SSL (POP3S) auf TCP-Port 995 verwendet.