【问题标题】:How to confirm sender of an incoming email? [duplicate]如何确认收到的电子邮件的发件人? [复制]
【发布时间】:2012-02-20 11:49:23
【问题描述】:

可能重复:
how to confirm email source

我想知道 Hotmail 和 Yahoo 等电子邮件服务如何确认“发件人”标头没有被欺骗。我的意思是,您没有尝试代表其他人发送电子邮件。

我现在试图欺骗 Facebook 消息,使用 php 脚本向我的@facebook.com 电子邮件发送电子邮件,欺骗“发件人”。我代表那个朋友帐户收到了它。但是,提示“无法确认--朋友姓名--作为发件人”。出现了。

Facebook(和其他服务)如何确认这一点?

请注意,扩展名 (emailname+extension@mydomain.com) 不适用于我。我的想法是模拟类似于 Facebook Messages 对电子邮件的支持。

我相信仅检查标题是不够的。我想我必须检查 DNS/SPF 的东西,但我不知道该怎么做,甚至不知道该怎么做。

如果你能告诉我一些“算法”(最好在 php 中)以及检查欺骗的步骤,这将有助于我分配。谢谢!

【问题讨论】:

    标签: php email dns spoofing


    【解决方案1】:

    作为域所有者,您可以在您的 DNS 区域中实施 SPF。它允许您设置允许代表您的域发送邮件的服务器的 IP 地址。如果另一个 IP 尝试以您的域名作为发件人发送邮件,它将被任何检查 SPF 的邮件服务器拒绝(幸运的是,越来越多的人开始这样做了!)。从来没有硬性保证没有人会以您的名义发送欺骗性邮件,但这会大大降低这种可能性。

    【讨论】:

    • 我明白了。但是,是否也允许 IP 欺骗?我的意思是,您使用 SPF 记录中包含的一项来欺骗“发件人”并欺骗 IP。谢谢。
    • 一般情况下,您不能在 TCP 连接上欺骗您的 IP 地址 - 您连接的服务器必须知道真实 IP 地址才能发送回它的一半连接。
    • 啊!那很好。所以我需要在我的 php 脚本中做的就是检查 IP 并查看它是否列在 From 域的 SPF 记录中,仅此而已?请跟我确认一下。感谢您的有用回答!
    • SPF 专门用于 IP 授权。域可以指定允许哪些服务器以其名称发送电子邮件(或者它可以指定“任何事情发生”;该规范绝对是灵活的)。检查应该发生在为您接受邮件的服务器上;它知道哪个 IP 地址连接到它(TCP 需要握手,所以不能真正被欺骗)。
    • SPF 实际上具有欺骗性,因此“确认发件人”的唯一真正可靠的方法是通过 DKIM 签名。这些很难欺骗,实际上是 Hotmail 和 Yahoo 真正想要的。
    【解决方案2】:

    正如 Oldskool 所建议的,SPF 是一种广泛使用的检测伪造的发件人(和回复)地址的方法 - 但是大多数电子邮件提供商使用更广泛的检查来区分垃圾邮件和火腿。

    Spamassassin 是一个开源项目,提供一个管理程序和一组插件(以及一个用于开发您自己的 API),包括用于验证电子邮件的 SPF。

    【讨论】:

    • 所以,我现在很好奇。如果我的 cPanel 有 Spamassassin,我可以直接从那里自动删除“无效”消息,这样我就不必担心检查管道电子邮件的 PHP 部分了吗?或者,这不是一个好主意(甚至可能)吗?谢谢!
    • 否 - 您想保留和管理垃圾邮件以训练贝叶斯过滤器。
    猜你喜欢
    • 2017-05-02
    • 2013-05-19
    • 2017-05-03
    • 2013-09-02
    • 1970-01-01
    • 2019-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多