根据我之前在Google App Engine上提到的this question,如果我可以访问标准电子邮件中的所有信息,而不仅仅是From
,To
,{{1} },Subject
字段,以及所有标头和MIME信息,如何验证具有相同Body
地址的两个传入电子邮件实际上来自同一发件人。
到目前为止我已经考虑过了:
我意识到这是一个复杂的问题(我确信像Posterous这样的公司已经花了很多时间来解决这个问题)。我只是在寻找一些初步开始的标准。谢谢!
更新
到目前为止的答案确实很有帮助,但只是为了帮助他们,我的项目的背景是我将从我的用户接收吨和大量的电子邮件作为Web应用程序。他们会使用他们的电子邮件作为向我的系统输入数据的主要方式。这就是为什么我做了Posterous的比喻。用例非常相似。
答案 0 :(得分:3)
你说对了所有的标题,以及要比较的“已知良好”电子邮件,这有助于识别可能的欺骗性电子邮件。
您正在开发的内容最多可能是启发式而非算法。
我会考虑按时间对字段进行加权,以及与“已知好”电子邮件的时间有多接近......
此外,如果“已知良好”电子邮件的结构与嫌疑人不同;即内联图像,html,缩短的网址等
答案 1 :(得分:2)
为什么不通过spamassassin运行电子邮件或某些附加贝叶斯分数的过滤器。然后你可以读取那个分数。这将节省你重新发明轮子。
您可以对来自该个人之前所有电子邮件的数据库对该电子邮件进行评分。
还有查找发件人允许的框架和DomainKeys,SpamAssassin可以为您做。
答案 2 :(得分:2)
只是为了赞美我之前发帖的兄弟们:
不知道您要分析此内容的上下文,并且非常一般,我建议您的第一个停靠点是SPF或DomainKeys,以限制来自恶意来源的电子邮件被接受的可能性。我还建议只使用一个具有SSL安全性的SMTP服务器。我这样做并在全球范围内旅行我很少遇到无法发送邮件的情况,在这种情况下,唯一可行的是webmail(没有安全本地SMTP)。
除此之外:如果您要验证邮件是否真的来自您自己,那么您也可以使用PGP工具在发送时签署您的邮件,然后过滤任何没有有效签名的邮件。 Thunderbird中的Enigmail是自动签名的良好来源,也有Outlook的插件。
之后,如果您真的希望在电子邮件上做更多的取证工作,那么您可以使用Spam Bayes根据以前的电子邮件数据库对电子邮件进行评分。您将在非唯一数据周围建立一个令牌数据库(不包括诸如“收件人:”之类的条目),然后为电子邮件评分它与之前的电子邮件的概率。从理论上讲,你应该对任何邮件得分都很高。
显然我不了解你的情况,但我认为有很多技巧,但有时候更容易找到问题的根源而不是尝试修复它。
<强>更新强>
根据提供的上下文:
我会考虑使用“地址扩展”这是您的用户可以使用电子邮件地址将邮件发送到包含引用的地址的位置:emailname+extension@domain.com GMail和许多其他服务器支持使用+扩展名@到正确的emailname@domain.com发送电子邮件,而无需hi-jinx。您可以让用户使用唯一ID作为扩展程序发送邮件,这样您就会知道它来自他们并且他们会觉得更特别。显然有人可以通过嗅探他们的传出或传入邮件来窃取他们的独特代码,但这总是可能的,如果有人可以这样做,他们也可以注入邮件。
如果你真的只想沿着分析路线前进,那么我建议只使用SpamAssassin每用户贝叶斯匹配的反向。将每封邮件与发件人的邮件数据库进行比较(而不是传统的邮件匹配到“帐户”)。请记住,一旦您的数据库被误报,您将不得不删除误报,或冒着该发件人匹配完整性的风险。
答案 3 :(得分:2)
可能不实用但可行的方法:
当收到的邮件到达时,请“回复发件人”功能,然后询问是否发送了邮件。这可以是自动生成的确认链接或其他形式。
但由于我不知道项目的具体细节,这可能不太实际......就像你必须为每个用户多次这样做一样,没有人会忍受它。
答案 4 :(得分:2)
也许考虑使用Sender Policy Framework。它可能不是您正在寻找的,但它可能有所帮助。
简而言之,SPF记录的设计意图是允许接收MTA(邮件传输代理)查询出现在电子邮件(发件人)中的域的名称服务器,并确定邮件的原始IP(来源)有权为发件人的域发送邮件。
从维基百科上抄下:
发件人政策框架(SPF),如 RFC 4408中定义的是一封电子邮件 旨在防止的验证系统 通过解决常见问题来发送垃圾邮件 漏洞,源地址 欺骗。 SPF允许电子邮件 管理员能够指定 允许哪些Internet主机 发送声称来自的电子邮件 通过创建特定DNS来创建该域 公共DNS记录中的SPF记录。 邮件交换者然后使用DNS 记录以验证发件人的身份 反对该公布的名单 电子邮件管理员。