你知道有很多网站(只要在谷歌上搜索)会发送假电子邮件(!),发送假电子邮件真的很容易(如你所知)。
PHP的例子:$to = "to@to.com";
$from = "from@from.com";
$subject = "subject";
$message = "this is the message body";
$headers = "From: $from";
$ok = @mail($to, $subject, $message, $headers, "-f " . $from);
是否有办法设置PHP与原始服务器(域)的电子邮件,以及电子邮件服务提供商如何检测电子邮件真的从原始域发送或它是FAKE?
在您的dns帐户中,您需要设置您的MX记录指向您的域名。
关于你的第二个问题。
当收到电子邮件时,它可能有一个假的发件人地址,但发送邮件的服务器的ip地址不能是假的。有许多组织和服务提供商不断更新他们的数据库,为每一个垃圾邮件服务器收到通知。电子邮件服务提供商要么拥有该服务,要么使用其他服务提供商来过滤电子邮件。一个著名的组织是spamhaus
。
- 如果电子邮件地址中的域名(因此在您的示例
from.com
中)在DNS区域中有注册的MX记录,则可以检查getmxrr()
,该记录将处理传入和传出的邮件。 - 在电子邮件的标题中有类似
Received: from[ip-address]
的东西。您可以将此与from.com
域的MX记录进行检查。如果有多个Received: from
,选择最后一个。
理论上,您可以使用此过程检查发送给您的电子邮件是否确实是由管理给定域的邮件的服务器发送的。
理论上是因为:垃圾邮件发送者可以绕过这一点(例如,通过黑客的电子邮件帐户)。但是,这个电子邮件帐户发出的垃圾邮件应该相对较少,因为电子邮件提供商将检测到垃圾邮件发送者并阻止该电子邮件帐户。