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

标签 php email elasticsearch mime deduplication

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

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

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

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

最佳答案

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

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

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

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

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

    关于php - 邮件重复数据删除多个用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22417952/

    相关文章:

    java - NoclassDefFound :javax. 激活.DataHandler

    php - 无法在FOSElasticaBundle中排序

    node.js - 用查询更新elasticsearch不允许使用特殊字符更新值

    elasticsearch - 如何使用Elasticsearch 5.5.1为文件建立索引

    Python 在按钮上发送邮件单击 Google App Engine

    android - facebook android sdk - 用户电子邮件返回空

    PHP:正则表达式与 ctype_*

    php - 获取 MySQL 中 3 个类别的所有可能组合

    php - Docker 在具有 curl 支持的 alpine 图像上构建 php 失败。我该如何解决?

    php - 联系表格不会返回主页