Authenticated Post Office Protocol
# Authenticated Post Office Protocol

Authenticated Post Office Protocol (APOP) ist ein Verfahren zur sicheren Übertragung des Passworts beim Abruf von E-Mails mittels Post Office Protocol, das 1993 mit eingeführt wurde. Ohne APOP wird das Passwort im Klartext übertragen und kann dann mittels Sniffer in den Besitz Unbefugter kommen. Die Übertragung der E-Mails verschlüsselt APOP nicht. Auch Passwörter müssen dafür unverschlüsselt gespeichert werden.

APOP gilt als unsicher. Der zugrundeliegende Message-Digest Algorithm 5 verbunden mit der zwangsläufig stetig wiederholten Übertragung des Passworts offenbart nach überschaubarer Zeit selbst lange Passwörter.

APOP ist kein zwingender Bestandteil des Post Office Protocols, sondern kann von Mailservern angeboten werden.

## Verfahrensablauf

APOP anbietende Mailserver beantworten Kontaktaufnahmen mit einer Zeichenkette, die nach dem einleitenden +OK zusätzlich einen aktuellen Zeitstempel enthält. Dieser muss einer msg-id nach RFC 822 entsprechen und insbesondere einzigartig sein.

APOP unterstützende Mail User Agents durchsuchen die empfangene Zeichenkette nach den spitzen Klammern, die den Zeitstempel markieren. Wenn sie einen Zeitstempel finden, hängen sie an diesen das Passwort an, berechnen aus dieser Kombination einen MD5-Hashwert und senden diesen mit dem Befehl APOP und dem Benutzernamen zurück.

Der Mailserver führt dann dieselbe Berechnung durch, vergleicht die beiden Hashwerte und gewährt bei Übereinstimmung Zugriff.

## Beispiel

| Client | Server | Erläuterung |
| - | - | - |
| pop.example.com:110 | | Client baut eine POP3-Verbindung zum Server auf |
| | +OK <1896.697170952@pop.example.com> | Server sendet +OK und Zeitstempel |
| APOP adam c4c9334bac560ecc979e58001b3e22fb | | Client berechnet einen Hash-Wert aus: "<1896…>passwort" und sendet diesen an den Server |
| | +OK 1 message (369 octets) | Server berechnet Hash-Wert ebenfalls, OK bei Übereinstimmung |

## Alternativen

* Simple Authentication and Security Layer
* POP3S
* STARTTLS
