邮件重复数据删除多个用户

时间:2014-03-15 00:14:25

标签: php email elasticsearch mime deduplication

我目前是基于每位用户(电子邮件帐户)的重复数据删除电子邮件。我正在创建几个标头的sha512哈希(message-id,subject,from,date,to)。之后我将完整的电子邮件(mime字符串)存储在一个文件中,并在Elasticsearch中插入元数据(subject,from,to,cc ...)和“userID”字段。

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

非常感谢有关如何创建此内容的任何提示。

P.S。 1解决方案是保存没有标头的MIME文件,并保存按用户分隔的标头。因此,要获取userA的完整电子邮件,我会将MIME文件与链接到userA的该文件的标题相结合。但这个解决方案对我来说似乎有点低效?

1 个答案:

答案 0 :(得分:0)

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

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

  • 附件(清单)
  • 正文(纯文字)
  • CC
  • 来自
  • 主题

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

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