Analysieren des Nachrichtendownloadverlaufs für ein POP3-Konto
In diesem Thema wird die Struktur des POP3-BLOBs beschrieben, das den Nachrichtendownloadverlauf eines POP3-Kontos darstellt, um die Nachrichten zu identifizieren, die für dieses Konto heruntergeladen oder gelöscht wurden.
Warum sollte der Downloadverlauf der Nachricht analysiert werden?
Mit dem POP-Anbieter (Post Office Protocol) für Outlook können Benutzer neue E-Mail-Nachrichten auf ihrem lokalen Gerät abrufen und herunterladen und anschließend diese E-Mail-Nachrichten auf dem E-Mail-Server belassen oder löschen. Wenn der E-Mail-Client sucht, ob neue Nachrichten heruntergeladen werden sollen, muss er nur die neuen Nachrichten für diesen Posteingang identifizieren und herunterladen können. Der E-Mail-Client verwendet dazu zunächst den Befehl UIDL (Unique ID Listing), um eine Zuordnung jeder Nachricht abzurufen, die jemals an diesen Posteingang an einen eindeutigen Bezeichner (UID) übermittelt wurde. Der Client ruft auch den Nachrichtendownloadverlauf für Nachrichten ab, die für den Posteingang auf diesem Client heruntergeladen oder gelöscht wurden. Mithilfe der Meldungs-UID-Zuordnung und des Downloadverlaufs kann der Client dann die Nachrichten identifizieren, die im Verlauf nicht vorhanden sind, als neu und daher heruntergeladen werden sollten.
So rufen Sie den Verlauf des Nachrichtendownloads für einen Posteingang ab:
Führen Sie die Schritte unter Suchen des Nachrichtendownloadverlaufs für ein POP3-Konto aus, um die PidTagAttachDataBinary-Eigenschaft zu finden, die ein BLOB (Binary Large Object) enthält, das den Nachrichtenverlauf für ein POP3-Konto darstellt.
Lesen Sie dieses Thema, das die Struktur des BLOB beschreibt und ein Beispielblob zeigt, um Nachrichten zu identifizieren, die für den Posteingang des POP3-Kontos heruntergeladen oder gelöscht wurden.
POP-BLOB-Struktur
Die POP-BLOB-Struktur, wie in Tabelle 1 beschrieben, beginnt mit den zwei Feldern Version und Count, gefolgt von einer Anzahl von Anzahl von Ressourcentags, von denen jedes null-terminiert ist.
Tabelle 1. Struktur des BLOB, das den Nachrichtendownloadverlauf eines POP3-Kontos darstellt
Feld in BLOB | Größe | Beschreibung |
---|---|---|
Version |
2 Bytes |
Muss 3 (PBLOB_VERSION_NUM) sein. |
Count |
2 Bytes |
Die Anzahl der Ressourcentags in diesem BLOB. |
Ressourcentag |
Variable |
0 oder mehr NULL-terminierte UTF-8-Zeichenfolgen, die die Ressourcentags codieren. Die Anzahl der mit NULL beendeten Zeichenfolgen muss mit Count übereinstimmen. |
Jedes Ressourcentag gibt den Vorgang an, der auf eine Nachricht angewendet wird, einige Datums-/Uhrzeit-Metadaten zum Vorgang und codiert die UID der Nachricht. Das Format einer Ressourcentagzeichenfolge ist wie folgt unterteilt und wird in Tabelle 2 näher erläutert.
Ocyyyymmddhhmmssuuu...
Tabelle 2. Struktur eines Ressourcentags
Feld in einem Ressourcentag | Größe | Beschreibung |
---|---|---|
O |
1 Zeichen |
Der Vorgang, der für die E-Mail-Nachricht ausgeführt wird. Der Wert muss "+", "-" oder "&" sein, was auf einen erfolgreichen Get-, Delete- bzw. Get-and-Delete-Vorgang hinweist. |
c |
1 Zeichen |
Der Teil des Nachrichteninhalts, der an dem Vorgang beteiligt ist. Der Wert muss "", "h" oder "b" sein, was den Inhalt von "none", "header" oder "body" angibt. |
yyyy |
4 Zeichen |
Das vierstellige Jahr des Vorgangs. |
MM |
2 Zeichen |
Der zweistellige Monat des Vorgangs. |
dd |
2 Zeichen |
Der zweistellige Tag des Vorgangs. |
hh |
2 Zeichen |
Die zweistellige Stunde des Vorgangs. |
mm |
2 Zeichen |
Die zweistellige Minute des Vorgangs. |
ss |
2 Zeichen |
Die zweistellige Sekunde des Vorgangs. |
uuu… |
Variable Länge |
Die codierte UID einer Nachricht. |
Beispiel
Abbildung 1 zeigt ein Beispiel für ein BLOB, das den Nachrichtendownloadverlauf eines POP-Kontos darstellt.
Abbildung 1: Beispiel-BLOB-Struktur für den Nachrichtendownloadverlauf eines POP3-Kontos
Basierend auf der in Tabelle 1 und Tabelle 2 beschriebenen Struktur stellt dieses BLOB den Downloadverlauf von 23 E-Mail-Nachrichten dar.
Um die unformatierte UID in jedem Ressourcentag zu analysieren, beachten Sie, dass die UID dieser Codierung folgt: Zeichen in einer UID sind meist alphanumerische Zeichen, und jedem nicht alphanumerischen Zeichen wird das ASCII-Zeichen "$" (0x24) vorangestellt. Die ASCII-Zeichen $2d stellen also das nicht alphanumerische Zeichen "-" dar. Abbildung 2 zeigt ein Beispiel für die erste Konvertierung der unformatierten UID im Ressourcentag 1 in die ASCII-Darstellung und anschließendes Konvertieren eines nicht alphanumerischen Zeichens, dem "$" vorangestellt ist, um die tatsächliche UID zu erzeugen:
0BC535DB-EA63-11E1-A75C-00215AD7BB74
Abbildung 2: Konvertieren der unformatierten UID in einem Ressourcentag in die tatsächliche Meldungs-UID
So interpretieren Sie das Ressourcentag 1 in diesem BLOB: Die Nachricht mit der UID 0BC535DB-EA63-11E1-A75C-00215AD7BB74
wurde am 6. September 2012 um 13:11:38 Erfolgreich abgerufen.
Auf ähnliche Weise können Sie die verbleibenden 22 Ressourcentags für dieses BLOB analysieren.