为什么我可以从我不拥有的域发送电子邮件?

Yah*_*din 2 security email authentication

当我发现真正困扰我的发现时,我最近在搞乱邮件功能!

我在PHP中使用了类似格式的命令:

mail("client@example.com","My subject", "IT WORKED", "From: contact@domainidontown.com");
Run Code Online (Sandbox Code Playgroud)

我意识到的是,无论我在“发件人”部分上放什么电子邮件,该电子邮件始终都会发送(尽管它确实进入了“垃圾邮件”文件夹,但这可能是由于电子邮件的内容所致)!

我的问题是:

  • 为什么这样做?当然,应该进行一些身份验证过程,以确保我实际拥有该域,并且该电子邮件确实是由该域发送的!
  • 是什么让我无法假装来自银行或Paypal或其他公司,并且欺诈
  • 作为用户,我如何确定收到的电子邮件确实来自发件人?我的检查方式一直是查看发件人的电子邮件地址。但是看来我可以从任何电子邮件地址发送任何电子邮件(甚至我不拥有的电子邮件地址),它仍然可以发送!

注意:我使用Outlook.com作为我的电子邮件客户端(网络版本。不是台式机!)

我本来会继续进行实验,看看它是否可以与以下电子邮件一起使用:contact@paypal.com,但我担心自己可能在做非法的事情,否则我的IP将被列入黑名单。

zac*_*ess 5

是的,您是正确的,从技术上讲,没有任何东西可以阻止您以其他用户的身份发送电子邮件。这被定义为简单邮件传输协议(SMTP)的一部分。但是,有一些身份验证过程可以尝试识别接收端这样发送的邮件:

  1. DKIM(域密钥标识的邮件)https://en.wikipedia.org/wiki/DomainKeys_Identified_Mail
  2. SPF(发送方策略框架)https://en.wikipedia.org/wiki/Sender_Policy_Framework

这些身份验证过程的失败实际上可能是导致您的邮件而不是邮件内容直接发送到垃圾文件夹的原因。作为用户,这与电子邮件客户端UI中的其他元素(例如Thunderbird中的“欺诈检测”)结合在一起,就会告诉您电子邮件可能不可信。

DKIM

DKIM通过非对称密钥工作。只有域的真正所有者才知道用于对电子邮件进行数字签名的私有部分,并且他们将公共部分作为TXT记录发布在其DNS区域中。

当某人收到声称来自example.com的电子邮件时,其电子邮件客户端将使用已发布的密钥的一半来检查邮件上的DKIM-Signature标头,以验证邮件是否已正确签名。由于签名还包括消息内容的哈希,因此还确保了内容在传输过程中没有更改,并确保了发件人是合法的。

SPF

域的真正所有者发布允许其代表发送电子邮件的主机列表,同样作为其DNS区域中的TXT记录。

当某人收到声称来自example.com的电子邮件时,他们的电子邮件客户端将检查域所有者已授权发送电子邮件的主机。