我有一个托管在godaddy的网站example.com
。我只是搞乱了PHP的mail
功能,并将以下内容上传到我的网站example.com
:
mail( "someone@yahoo.com", "test", "test message", "From: someone@gmail.com" );
为什么这样做?我的意思是,它不应该,对吧? “发件人”地址域不是“@ example.com”。然而,当我在someone@yahoo.com查看我的电子邮件时,我收到了来自someone@gmail.com的消息...我怎么能(可能)在没有密码的情况下从任何人的电子邮件帐户发送电子邮件?
答案 0 :(得分:3)
这是可能的,因为您可以随意添加电子邮件标题,包括完全任意的发件人地址。不过,您是对的,安全意识提供商通常会以允许发送邮件的服务器上的发件人地址的方式配置其外发邮件服务;但他们没有拥有。
此外,在接收端,发件人地址属于与发送邮件服务器无关的域的邮件经常最终出现在垃圾邮件文件夹中。
(正如您已经知道的)使用此非常糟糕的做法。至于提供商是否处于 fault - 它可以是任何信任的标志(如果您是服务器上的唯一用户,或者是少数几个客户中的一个),那么粗心大意。您可能有理由抱怨,因为如果您的某个网络托管邻居误用此邮件发送垃圾邮件,服务器的IP地址可能会被列入黑名单,导致任何电子邮件来自它(合法与否)获取陷入垃圾邮件过滤器。
答案 1 :(得分:1)
这是因为电子邮件格式规范。 看一下电子邮件的标题规范,您可以参考http://en.wikipedia.org/wiki/Email#Header_fields
这就是为什么一旦收到电子邮件就不应该信任“来自”信息的原因。
答案 2 :(得分:0)
你是否能够做到这一点基本上是你问的问题。电子邮件RFC声明您应该这样做。托管和ISP的最佳实践表明你不应该这样做。
从PHP的角度来看。是的你应该
编辑: 顺便说一句,你不是从某个人的帐户发送邮件,只是说你的电子邮件与实际情况不同。这与将自己介绍给陌生人基本相同,就像“比尔克林顿”一样。如果接收者正在注意他们会知道这是错的。在现实世界中,因为您看起来不像他,在电子邮件世界中,您只需测试是否允许发送服务器依赖该特定域。
答案 3 :(得分:0)
这就是引入Sender Policy Framework(SPF)和DomainKeys Identified Mail(DKIM)等系统的原因。
SPF允许管理员定义特定域的电子邮件的来源。在您的示例中,假设已设置SPF记录,记录将显示发送邮件的Go Daddy主机不是gmail.com
域的授权发件人。收到该邮件并进行SPF验证的(Yahoo)邮件服务器可能会拒绝该邮件。
DKIM使用数字签名允许发送邮件服务器显示来自其所声称的域的电子邮件。在您的示例中,您将无法签署您的电子邮件并使其看起来像是来自Gmail,因为您没有密钥。
这两个系统都需要设置正确的SPF / DKIM记录,并且还要求为其收件人处理电子邮件的邮件服务器实际执行验证。
所以不要担心:这个问题正在解决: - )