共用方式為


剖析 POP3 帳戶的訊息下載歷程記錄

本主題描述代表 POP3 帳戶訊息下載歷程記錄的 POP3 BLOB 結構,以識別該帳戶上已下載或刪除的訊息。

為什麼要剖析訊息下載歷程記錄?

Outlook 的 Post Office 通訊協定 (POP) 提供者可讓使用者在其本機裝置上擷取和下載新的電子郵件訊息,然後在郵件伺服器上留下或刪除這些電子郵件訊息。 當郵件客戶端檢查是否有要下載的新郵件時,它必須能夠識別並只下載該收件匣的新訊息。 郵件用戶端會先使用 UIDL (唯一識別符清單) 命令來取得每個曾經傳遞至該收件匣的郵件對應,以 (UID) 的唯一標識符。 用戶端也會取得該用戶端上 [收件匣] 已下載或刪除之訊息的訊息下載歷程記錄。 用戶端接著可以使用訊息 UID 對應和下載歷程記錄,將記錄中不存在的訊息識別為新的訊息,因此應該下載這些訊息。

若要取得收件匣的訊息下載歷程記錄:

  • 請遵循尋找 POP3 帳戶的訊息下載歷程 記錄中的步驟來尋找 PidTagAttachDataBinary 屬性,其中包含代表 POP3 帳戶之訊息歷程記錄的 BLOB (BLOB) 二進位大型物件。

  • 閱讀本主題,其中描述 BLOB 的結構,並示範範例 BLOB,以識別已針對 POP3 帳戶的收件匣下載或刪除的訊息。

POP BLOB 結構

如表格 1 中所述,POP BLOB 結構的開頭是 Version 和Count 這兩個字段,後面接著 一個計數 的資源標記數目,每個都以 Null 終止。

表 1. 代表 POP3 帳戶訊息下載歷程記錄的 BLOB 結構

BLOB 中的欄位 大小 描述
版本
2 個位元組
PBLOB_VERSION_NUM) 必須 是 3 (
數目
2 個位元組
此 BLOB 中的資源標籤。
資源標籤
變數
編碼資源標籤的 0 或多個以 Null 結束的 UTF-8 字串。 以 Null 結尾的字串數目必須符合 Count

每個資源標記都會指定套用至訊息的作業、作業的一些日期時間元數據,以及編碼訊息的 UID。 資源標記字串的格式會如下所示細分,並在表格 2 中進一步說明。

Ocyyyymmddhhmmssuuu...

表 2. 資源標籤的結構

資源標籤中的欄位 大小 描述
O
1 個字元
在電子郵件訊息上執行的作業。 值必須是 “+”、“-” 或 “&”,分別表示成功取得、刪除或取得和刪除作業。
c
1 個字元
作業所涉及的訊息內容部分。 值必須是 “、”h“ 或 ”b“,分別表示 none、header 或 body 的內容。
yyyy
4 個字元
作業的四位數年份。
MM
2 個字元
作業的兩位數月份。
dd
2 個字元
作業的兩位數日期。
hh
2 個字元
作業的兩位數小時。
mm
2 個字元
作業的兩位數分鐘。
ss
2 個字元
作業的兩位數秒。
uuu…
可變長度
訊息的編碼 UID。

範例

圖 1 顯示代表 POP 帳戶訊息下載歷程記錄的 BLOB 範例。

圖 1: POP3 帳戶訊息下載歷程記錄的範例 BLOB 結構

BLOB for messages download history of POP3 account

根據表格 1 和表格 2 中所述的結構,此 BLOB 代表 23 封電子郵件訊息的下載歷程記錄。

若要剖析每個資源標記中的原始 UID,請注意 UID 會遵循此編碼:UID 中的字元大多是英數位元,而每個非英數位元在前面加上 ASCII 字元 “$” (0x24) 。 因此,ASCII 字元 $2d 代表非英數位元 “-”。 圖 2 顯示先將資源標記 1 中的原始 UID 轉換為 ASCII 表示法的範例,然後轉換前面加上 “$” 的任何非英數位元,以產生實際的 UID:

0BC535DB-EA63-11E1-A75C-00215AD7BB74

圖 2: 將資源標籤中的原始 UID 轉換為實際訊息 UID

Converting raw UID in BLOB to actual message UID

若要解譯此 BLOB 中的資源標記 1:2012 年 9 月 6 日 13:11:38 成功擷取具有 UID 0BC535DB-EA63-11E1-A75C-00215AD7BB74 的訊息。

您同樣可以剖析該 BLOB 的其餘 22 個資源標記。

另請參閱