簡體   English   中英

電子郵件重復數據刪除

[英]Email deduplication

是否可以通過僅使用其某些標頭來對電子郵件進行重復數據刪除,因為根據 RFC,它們的消息 ID 應該是唯一的?

有沒有辦法計算在下面的這種重復數據刪除方法中遺漏 1 封電子郵件的幾率(這 3 個標頭的 sha512 哈希)?

// $email is a parsed array containing 3 keys (mime headers) -> message_id, subject and date. $hashStr = $email['message_id']; $hashStr .= $email['subject']; $hashStr .= $email['date']; $uniqueEmailId = hash('sha512', $hashStr);

不會遺漏任何一封電子郵件是一項至關重要的任務,很可能我們不得不對數個(>2)十億個 mime 文件進行重復數據刪除。

SHA512哈希產生具有512位數據的哈希值。 假設比特的隨機分布,這可能超過1.34e + 154個可能的值。 即使有超過2e + 9個樣本,意外碰撞的幾率幾乎為零。

但是,您對哈希的輸入並不是那么隨機。 message_id是一個全局唯一標識符 ,“僅”具有5.3e + 36個可能值,並且隨機性取決於實現。 根據維基鏈接,碰撞的幾率在4.2e + 18個樣本時約為50%。 電子郵件地址和日期可能會明顯高於此。

也就是說,如果沒有實際進行概率數學計算,我會說幾率可以忽略不計。

如果message-id已經是唯一的,那么散列幾乎沒有意義(因此引入了可忽略的碰撞機會)。
似乎更強大的方法是使用message-id本身作為比較的基礎。

即使 RFC 說 Message-ID 必須是全局唯一的,生成這些標頭的仍然是發送者。

您不能相信發件人符合 RFC(如果發件人軟件不受您控制)。

原始發件人可能不想生成全局唯一的 Message-ID,或者他正在使用具有相同 Message-ID 的模板向不同的收件人發送副本。

我不知道任何驗證 Message-ID 標頭唯一性的電子郵件服務器。

如果您想對電子郵件進行重復數據刪除,最好的解決方案是使用足夠位計算其整個內容的加密安全哈希。 恕我直言,160 位足夠 20 億。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM