用任意自定义邮箱地址发送邮件!

以前在NEWS以及后来在Gfans里面, 经常有人问道, 收到自己给自己发的垃圾邮件, 很是奇怪, 其实… 那些邮箱都是垃圾邮件发送端伪造的假象. 伪造成收件人自己给自己发的邮件, 最主要的目的我猜也就是尽量避免给收件人的邮件过滤规则过滤. 其实不仅仅邮箱名, 连邮箱域在内(邮箱@后面的后缀部分), 整个邮箱地址都是可以伪造的. :P 看一下下面的截图, 你就会明白了…


这是Google公司给我发的邮件吗??? 当然不是… 这是我自己伪造的… 其实只要你安装了SMTP服务, 你想伪装成什么邮箱地址都没问题… 这个截图是是前几天在解决WordPress无法发送评论通知的问题时, 用测试PHP发送邮件功能的一个页面发的. 现在想了想… 可能会有人对这个很好奇, 于是那个测试页面我没有删除, 并且简单的改了改, 现在这个页面能够让访问者自己任意定义邮箱地址来发送邮件了.发送邮件的页面地址在这里. 对此有兴趣的朋友可以尝试一下~ :) 不过如果你伪装成@Google.com的邮箱发送给GMAIL的收件人, 有可能邮件被判断为垃圾邮件… 所以你可以伪装成别的域试试… 经过测试, 伪装成@microsoft.com的邮件都可以顺利发送到GMAIL的收件箱. 呵呵… :P

另外, 目前我的SMTP服务并没有设置身份验证, 所以如果你需要一个不需要身份验证的SMTP服务器, 那么是可以使用的, 但! 我不希望我的服务器被滥用… 也就是, 一旦发现有任何发送垃圾邮件的行为. 我会立刻停止对外的SMTP服务. 恩… 就是这些… :)

Update: 应keith兄的要求, 现在把把源代码放上来. 为了节省文章的篇幅, 源码中去掉了与程序无关的大部分HTML标记语言以及CSS的定义部分. 为了方便更多人理解, 另外加了一些注释. sentmail.html 及 mail.php 的源代码如下:

mail.php 文件源码:

<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”>
<html xmlns=”http://www.w3.org/1999/xhtml”>
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=utf-8″ />
<title>以自定义邮箱地址发送邮件 – by 猫饭店 http://www.newchen.com</title>
</head>
<body>

<?php

// 获取sentmail.html表单中的数据
$fname=$_POST['fname'];
$name=$_POST['name'];
$email=$_POST['from'];
$remail=$_POST['remail'];
$text=$_POST['text'];
$to = $_POST['to'];
$sub = $_POST['sub'];
$from = “From: “.$name.”<”.$email.”>\r\nReply-To: “.$remail;

// 将获取到的数据以及文字放入正文 $mail 中.
$mail = $fname.’,您好。’.”\n”.’您的朋友 ‘.$name.’  ‘.$remail.’ 向您发送了邮件,以下是邮件正文:’.”\n\n”.$text.”\n\n\n”.’此邮件发送服务由 猫饭店(http://www.newchen.com) 提供,如您发现此服务被滥用,请立即与 猫饭店 联系。谢谢!’;

// 递交表单后的条件选择语句, 这里除了 $remail 以外的所有内容必须填写, 否则不继续执行 mail()
if($to==NULL)
echo(‘请填写收件人邮箱地址’);
else if ($fname==NULL)
echo(‘请填写收件人名字’);
else if ($name==NULL)
echo(‘请填写你的名字’);
else if ($email==NULL)
echo(‘请填写你的邮箱地址’);
else if ($text==NULL)
echo(‘请填写你想说的话’);
else if ($from==NULL)
echo(‘请填写你的邮箱地址’);
else if ($sub==NULL)
echo(‘请填写邮件标题’);

// 所有 if else 条件满足后, 执行 mail() 发送邮件并输出成功提示.
else
{
mail($to, $sub, $mail, $from);
echo (‘恭喜!! 邮件已经成功发送至〖’.$to.’〗’);
}
?>
</body>
</html>

sentmail.html 文件源码:

<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”>
<html xmlns=”http://www.w3.org/1999/xhtml”>
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=utf-8″ />
<title>以自定义邮箱地址发送邮件 – by 猫饭店 http://www.newchen.com</title>
</head>
<body>

<!– 创建表单, 并创建所需数据输入框 –>
  <form action=”mail.php” method=”post”>
        收件人的名字:<br />
  <label>
  <input name=”fname” type=”text” id=”fname” size=”40″ />
  </label>
  <br />
        收件人的邮箱:<br />
  <label>
  <input name=”to” type=”text” id=”to” size=”40″ />
  </label>
  <br />
        你的名字:<br />
  <input type=”text” name=”name” size=”40″ />
  <br />
        你的邮箱:<br />
  <input name=”from” type=”text” id=”from” size=”40″ />
  <br />
  回信邮箱:<br />
  <label>
  <input name=”remail” type=”text” id=”remail” value=”你希望收件人的回信发送到哪个邮箱(可选)” size=”40″ />
  </label>
  <br />
  邮件标题:<br />
  <label>
  <input name=”sub” type=”text” id=”sub” size=”40″ />
  </label>
  <br />
  想说的话:<br />
  <textarea name=”text” cols=”40″ rows=”10″ id=”text”>
</textarea>
  <br />
  <input name=”submit” type=”submit” value=”猛击发送邮件!” />
      </form>
<!– 表单结束 –>

<p align=”center”>创作公用 by 戴耳钉的猫</p>
</body>
</html>

OK, 就是这些了… :) 当然, 要使 mail() 函数生效, 你的服务器上要有SMTP服务, 并且正确设置好了php.ini文件才行.

—— by: 超级憎恨垃圾邮件的戴耳钉的猫

  1. 哇,好神奇~非常感谢
    原来mail()直接能调用了….

  2. 瀑布汗了……………
    竟然发现有人用这个来行骗…….
    真是… 唉…. 服了….
    这个程序被撤下了… 不再开放了… 太多鸟人了…

  3. 查看信头就很容易知道这个邮件时假的,并且SPF记录也没有通过。
    Received-SPF: fail (google.com: domain of Admin@localhost.com does not designate 218.25.87.68 as permitted sender) client-ip=218.25.87.68;
    Authentication-Results: mx.google.com; spf=hardfail (google.com: domain of Admin@localhost.com does not designate 218.25.87.68 as permitted sender) smtp.mail=Admin@localhost.com

  4. @Yanyan
    哈哈… 谢谢Yanyan姐, 过年好!过年好~

  5. 拜年拜年咯~~~祝猫猫新一年里事事顺心如意,天天开心如鼠~~哈哈!!! 另外,谢谢猫猫帮俺辛苦做新BLOG~~~~ ^_^

  6. 其实当时想到为了避免一些意外发生, 所以在邮件结尾加了" 此邮件发送服务由 猫饭店(http://www.newchen.com) 提供,如您发现此服务被滥用,请立即与 猫饭店 联系。谢谢!"这样一段话… 不过在做这个页面的时候还真是没想到忽悠QQ用户… 呵呵… 难道是我太正直了? 可能是因为我太讨厌腾讯吧!? 呵呵… :)

  7. @jonchil
    汗… 那也要伪装 @tencent.com 这个域啊… 伪装 @QQ.com 多假啊… 呵呵…
    (这算教唆吗? 呵呵…)

    • Jonchil
    • 二月 5th, 2008 11:16下午

    额,看到这个页面我第一个想法就是用admin@QQ.com给人发邮件,内容就说验证QQ密码保护资料- -||

    貌似伪装性相当大的说

  8. @keith

    好的, 稍后就把源码放上…
    @PS: 那个蝴蝶眼熟吗? 哈哈… Photoshop里面有这个画笔图案哦~ :P

    • 星遗
    • 二月 5th, 2008 8:30下午

    强悍

    • keith
    • 二月 5th, 2008 8:22下午

    终于知道别人怎么糊弄我的了: 我给他分配email地址不好好用,非弄个很花哨的地址发来发去,由于不知道怎么回事,没好意思问他.

    我想看你的用php使用smtp服务的源代码,当然网上有很多,但我想看看你的.

    ps: 首页上带蝴蝶的图很好看,我好像在哪见过.

  1. 还没有引用通告。

*
为了防止机器人评论,请输入验证码。 点击验证码图片可以收听验证码。
点击图片播放验证码文字。

 
你该不是在用360安全套浏览器,傲游,腾讯套套,这些浏览器在看我吧?你。。。。流氓。。。换成Chrome或Firefox再来。我脱给你看~
战场原·黑仪