1

我目前是基于每个用户(电子邮件帐户)的重复数据删除电子邮件。我正在创建一个包含多个标头(消息 ID、主题、发件人、日期、收件人)的 sha512 哈希。之后,我将完整的电子邮件(mime 字符串)存储在一个文件中,并在 Elasticsearch 中将元数据(主题、发件人、发件人、收件人、cc ...)与“userID”字段相结合。

这在每个用户的基础上都可以正常工作,但我可以通过在全球范围内对它们进行重复数据删除来大大降低存储成本。问题是有时当 UserA 和 UserB 都收到相同的消息时,某些标头可能会不同。并且像发件人本身的标头也不同。

非常感谢任何有关如何创建它的提示。

PS 1 解决方案是保存不带标题的 MIME 文件并保存每个用户分开的标题。因此,为了获取 userA 的完整电子邮件,我将 MIME 文件与链接到 userA 的文件的标题相结合。但是这个解决方案对我来说似乎有点低效?

4

1 回答 1

0

我在一个涉及处理您提出的完全相同问题的行业(诉讼发现)工作 - 请参阅博客文章(您可以跳过大约一半到“重复数据删除快速入门”编号列表和评论),以了解基本完全相同的困境您提到的,即,某些电子邮件标头字段总是会变化,这使得几乎不可能基于所有标头进行全局重复数据删除。

为了解决这个问题,我用于此目的的软件仅对此处“密钥生成”部分中显示的字段进行哈希处理。我提到的博客文章的评论部分提供了一个很好的基于字段子集的散列示例。基本上,它将类似于以下内容:

  • 附件(列表)
  • 正文(纯文本)
  • 抄送
  • 主题

此外,默认哈希设置(我使用的)是 128 位 MD5,而不是 SHA-1。您可能希望根据以下关于哈希冲突概率的文章(堆栈溢出不会让我发布两个以上的链接,抱歉)尝试生成两者并比较结果(使用每种算法“删除”了多少个):

preshing.com/20110504/hash-collision-probabilities/

于 2014-03-15T21:32:08.223 回答