记录一次网站邮箱(STMP)被恶意伪造事件
网站运行了一段时间了,最近用户增加的比较多,突然有用户反馈说遇到骗子了,给我看了他跟骗子的邮件记录,发现骗子竟然可以用我们域名的邮件发邮件,真是被惊吓到了,赶紧开始查找问题.
- 首先怀疑是企业邮箱密码泄露了,于是赶紧把密码给改了。
- 然后进入服务器的邮箱发送日志列表,过滤搜索用户提供给我们的关键字,未找到对应的邮件记录。
- 进入到企业邮箱账户,搜索邮件关键字,也未找到任何记录。
到这里我就疑问了,因为邮件客户端我们一直登着,所以不会存在邮箱记录被删除的情况,于是我猜应该是我们的邮箱服务被攻击了,通过Google了解到STMP的邮件可以很容易被伪造,只要域名解析中没有配置SPF记录(SPF是 Sender Policy Framework 的缩写,一种以IP地址认证电子邮件发件人身份的技术,是非常高效的垃圾邮件解决方案),如果没有这条TXT记录,那么任何人都可以你域名的邮箱发邮件,于是赶紧将腾讯的 SPF 加入。
SPF是一条 TXT 记录,主机记录为@就行了,值设置为
v=spf1 include:spf.mail.qq.com ~all
加入之后发现还是可以伪造邮件,经过反复尝试查阅资料,最后将SPF的值改成如下解决此问题:
v=spf1 include:spf.mail.qq.com -all
-all 表示前面的策略没有命中,则直接拒绝邮件,所以安全级别更高。
如何测试自己的域名是否可以被伪造,我提供两种方法:
- 通过在线网站测试(https://emkei.cz/)
- 如果有Linux主机,可以直接安装 mail,通过命令行测试
sudo apt install mailutils
internet site >> example.com # 安装的时候会让你配置, example.com 可以随便设置
echo "成功伪造啦!" | mail -s "我是XXX" -r no-reply@example.com youremail
然后查看 mail 日志 (/var/log/mail.log),如果发送结果是 250,表示这封邮件发送成功了,此时就要去配置SPF,如果提示 SPF 未通过,表明已经加了SPF,则不用理会。
这次的查错过程很曲折,甚至都把企业邮箱服务商都改了(当然我用的免费版的,无所谓)
说说对腾讯企业邮箱和网易企业邮箱的感受
腾讯企业邮箱
优点:
1、 DNS解析生效很快(可能是我们用了DNSpod的原因)
2、 可以绑定微信,管理安全方便。
缺点:
客服人员的专业性比较差,问什么都不知道,还骗我说免费版不支持SPF,总想着怎么让你办理收费套餐。
网易企业邮箱
优点:
- 客服人员服务态度好,即使用的是免费版。
- 相比腾讯客服的比较专业。
缺点:
MX验证花了两三个小时,后面在知乎上看到有人说需要增加CNAME记录,于是照做了,结果一下子就验证通过了(不确定是CNAME的影响还是确实时间到了)。
参考文章
记录一次网站邮箱(STMP)被恶意伪造事件的更多相关文章
- js记录用户在网站的浏览记录和停留时间
by weber开发者 from http://weber.pub/ 本文地址: http://weber.pub/js记录用户行为浏览记录和停留时间/163.html 问题 公司想统计一个用户从进入 ...
- 记录asp.net网站停止运行原因的代码
记录网站是什么原因导致停止运行还是有必要的,下面是具体的实现方式. protected void Application_End(object sender, EventArgs e) { Recor ...
- 阿里云服务器 发送邮箱 STMP 25端口 465端口问题 Javamail 25被禁用
我们传统使用的比较简单的是 STMP 25端口收发邮件 今天发现刚购买的阿里云服务器不能作为客户端通过STMP 25端口发送邮件 开始在网上有说发现是JDK1.8的原因,然后自己也把JDK1.8换到了 ...
- 阿里云服务器 通过JavaMail发送邮箱STMP问题( 25端口被禁用 使用SSL协议465端口 )
我们传统使用的比较简单的是 STMP 25端口收发邮件 今天发现刚购买的阿里云服务器不能作为客户端通过STMP 25端口发送邮件 开始在网上有说发现是JDK1.8的原因,然后自己也把JDK1.8换到了 ...
- 阿里云服务器 通过JavaMail发送邮箱STMP问题 25端口被禁用 使用SSL协议465端口
1 问题描述 我们传统使用的比较简单的是 STMP 25端口收发邮件 今天发现刚购买的阿里云服务器不能作为客户端通过STMP 25端口发送邮件 开始在网上有说发现是JDK1.8的原因,然后自己也把JD ...
- 用jsp的application写一个记录用户登陆网站的数量
</head><body><%int i = 0;Object number = application.getAttribute("num");if ...
- 记录一次网站漏洞修复过程(三):第二轮处理(拦截SQL注入、跨站脚本攻击XSS)
在程序编写的时候采用参数化的SQL语句可以有效的防止SQL注入,但是当程序一旦成型,再去修改大量的数据库执行语句并不是太现实,对网页表单上输入进行校验是易于实现的方法.在webForm 页面中开启校验 ...
- 记录一次网站漏洞修复过程(二):第一轮处理(IIS目录枚举、应用程序错误)
解决IIS目录枚举 当前的IIS版本为7.5 [IIS] => [请求筛选] => [URL]中添加 [拒绝序列] 符号 ~ 应用程序错误 在Global.asax 中添加异常处理代 ...
- Java 利用监听器来实现记录用户访问网站次数
假如有这么一个需求,要记录所有用户访问某一页面的次数. 最先想到的可能是在该Controller定义一个静态成员,然后在相应Action里自增.但这样有一个问题,就是Tomcat或者其他服务器重启的话 ...
随机推荐
- 安装yii2 需要token 记录
在安装yii2过程中会提示需要token,参照github help: https://help.github.com/articles/creating-a-personal-access-toke ...
- json文件转换成excel
1.环境 python2.7 2.库 xlwt.demjson.json 3.code # -*- coding: utf-8 -*- import xlwt,demjson,json if __na ...
- php的运行模式
1.php最常见的五种运行模式. CGI 通用网关接口 FastCGI 常驻内存的CGI CLI 命令行 Web模块 Apache等Web服务器 模块的形式加载php进程 ISAPI 已经不用了
- Java、中Date的格式初始化以及Calendar的使用
使用字符串初始化Date String dateString = “2018-02-23”; Date date= new SimpleDateFormat(“yyyy-MM-dd”).parse(d ...
- C语言博客作业5--指针
C语言博客作业5--指针 1.本章学习总结(2分) 1.1思维导图 请以思维导图总结本周的学习内容,如下图所示: 1.2本章学习体会及代码量学习体会 1.2.1学习体会 描述本周学习感受,也可以在这里 ...
- jenkins+maven+git持续集成部署问题总结
1.这个问题出现在单独构建一个项目的子模块时,很奇怪,构建父项目没有问题. Executing Maven: -N -B -f /root/.jenkins/workspace/newMer/pom. ...
- AET PN结
电场方向 电场方向和正电荷受力方向相同 飘移运动和扩散运动 多子和电场方向互相抵制,而多子是扩散运动,而对少子则是促进作用,当扩散和漂移达到动态平衡时,我们称PN结形成 PN结特性 单项导电性
- RF:win10跑用例过程中有中文日志会显示非中文
问题:RobotFramework在win10跑用例过程中有中文日志会显示非中文,如截图: 解决: C:\Python27\Lib\site-packages\robot\utils\unic.py ...
- PG数据库中用户权限
每当在数据库中创建一个对象,所有者可以分配它访问权限.所有者通常是执行创建语句的用户.对于大多数类型的对象,初始状态是,只有所有者(或超级用户)可以修改或删除对象.为了让其他角色或用户使用它,特权或权 ...
- 爬虫之urllib
一.request模块 1.urlopen() --返回值为HTTPResponse对象 urlopen(url, data=None, timeout=socket._GLOBAL_DEFA ...