对邮件服务器的一点思考(代码片段)

sunansheng sunansheng     2022-12-06     351

关键词:

正常发送邮件

我们一般使用SMTP服务器帮我们代发邮件。例如我申请了一个163邮箱,我会通过客户端,使用用户名和密码登录163的SMTP服务器,帮我代发邮件到QQ邮箱或者其它邮箱。这个时候我们是需要有用户名和密码的,否则163的SMTP不会允许我们发送邮件。

那么问题来了,在163给QQ邮箱发送邮件的时候,163怎么登录到QQ邮箱的?如果不登陆,那么QQ怎么允许163发送邮件?

该问题的思考

可能使用的解决方法:

1.每个SMTP服务器都用一个默认的匿名账户,类似FTP的匿名。

2.使用单独的服务器IP,用户邮件服务器之间的邮件交换。

MX记录

除了以上了问题,还有一个问题。给定一个邮箱地址如何知道邮箱服务器的IP地址?

答案肯定是通过域名设置的,每个域名都会设置MX记录,用于查找对方邮件服务器的地址。可以通过nslookup查询。

C:\\Users\\suns>nslookup

> set type=mx
> qq.com

非权威应答:
qq.com  MX preference = 20, mail exchanger = mx2.qq.com
qq.com  MX preference = 10, mail exchanger = mx3.qq.com
qq.com  MX preference = 30, mail exchanger = mx1.qq.com

mx2.qq.com      internet address = 14.215.140.20
mx1.qq.com      AAAA IPv6 address = 2402:4e00:8010::af

从结果中可以看到,mx2.qq.com、mx3.qq.com、mx1.qq.com,都是对方SMTP服务器的地址。

那么这个时候,第二种方式就最有可能了,因为我们客户端设置的QQ SMTP地址是:smtp.qq.com。

最终实验发现,使用MX记录获得的SMTP地址不用登陆即可发送邮件,但是只能发给本域的邮箱地址。这些大牌的邮件服务器都会进行必要的校验,防止我们乱发邮件。

一些福利

因为我们自己可以作为邮局来发送邮件,那么这个时候发件人什么的都可以自己进行设置了。我测试QQ邮件的时候,使用admin@baidu.com邮箱进行发送的时候会进行错误提示,提示DNS的ip校验错误:

550 SPF check failed [MraFGBRmMtV9SLG8AGEhJnwLt0lUKuPNrULkU8/Lgq9iwCSogqh0tkA= IP: 110.80.20.170].

但是我换成admin@baidu123.com就可以进行发送了。百度知名度比较高,因此有进行DNS校验,我测试了几家企业的邮箱,很多可以正常发送,所以敏感邮件不能只看发件人

声明:Nansheng.Su 发表于 2019-04-28 16:33:00 ,共计529字。

转载请署名:对邮件服务器的一点思考 | www.sunansheng.com

汉诺塔问题的一点思考(代码片段)

  汉诺塔问题是递归中常见的一类问题,刚开始接触这类问题毫无头绪,但是看了很多资料之后也慢慢发现了其中的一点规律  关于汉诺塔的一点传说:汉诺塔问题是源于印度一个古老的传说大梵天创造世界的时候做了三根... 查看详情

思考$nexttick与settimeout的一点对比!(代码片段)

作者:ChimezieEnyinnaya译者:前端小智来源:blog有梦想,有干货,微信搜索【大迁世界】关注这个在凌晨还在刷碗的刷碗智。本文GitHubhttps://github.com/qq449245884/xiaozhi已收录,有一线大厂面试完整考点、资料以... 查看详情

设计表的时候,对变长字段长度选择的一点思考(代码片段)

原文:设计表的时候,对变长字段长度选择的一点思考不管是在MSSQL还是MySQL或者Oracle,变长字段的长度衡量都是要经常面对的。对于一个变长的字段,在满足业务的情况下(其实所谓的满足业务是一个比较模糊的东西),到底是... 查看详情

引用作为函数返回值的一点思考(代码片段)

本篇文章的关注点是引用作为函数返回值,网上类似很多,具体可参考引用作为函数返回值的优缺点。这里,我想写下自己的想法。在C++中,引用变量必须要初始化,否则会有编译错误。这里指的初始化,一般变量赋值初始化。... 查看详情

关于unity3d的世界空间和本地空间的一点思考(代码片段)

最近才开始学Unity3d,被这个本地空间和世界空间搞得有点晕头转向的。于是花了一点时间随便写了一点代码加深理解。代码如下:1publicclassMoveX:MonoBehaviour23voidUpdate()45if(Input.GetMouseButtonDown(0))67vartwo=newVector3(2,2,2);8varlocalSpace=transfor... 查看详情

关于重构工作的一点思考

...重构方案,到具体执行的过程中遇到的问题,以及对重构的一点理性思考。起因:  本系统是2015年11月开始建设,当时为了快速投入使用,大量的烂代码,后期一直保持快速前进,没有进行过实质性的重构。具体表现:●分层... 查看详情

xss和实体编码的一点小思考(代码片段)

首先,浏览器渲染分以下几步:解析HTML生成DOM树。解析CSS生成CSSOM规则树。将DOM树与CSSOM规则树合并在一起生成渲染树。遍历渲染树开始布局,计算每个节点的位置大小信息。将渲染树每个节点绘制到屏幕。已知的问题:""之间... 查看详情

对引擎收发包的一次思考(代码片段)

  这是对引擎strace 的结果,可以看到引擎在回复报文的时, 频繁的使用write 系统调用,报文内容可以看到就是一个http响应报文,正常情况应该是只会调用一次write回复报文,但是实际情况是调用了多次write回... 查看详情

对扩展openflow协议的一点思考

   软件定义X变得越来越火,正所谓,Softwareiseatingtheworld。软件定义网络也是如此。不论是在工业界还是学术界都将是一次伟大的革命,都在紧随着这个行业的方向,找自己的研究点,关注着标准化的进展。各种Controll... 查看详情

ue4关于创建动态结构体的一点思考(代码片段)

...教学视频或资料和大家交流这篇文章是自己写工具时遇到的一个问题,由此而写。看到这篇文章就不用再看其他文章了,因为都没有这方面的资料 介绍下目前ue4的静态Str 查看详情

对“机器视觉”的一点思考

从小孔成像到凸透镜成像,原理其实是一样的,就是光的直线传输,从而在视网膜上成像,并通过神经元传递到大脑,进行进一步的图像处理与分析。如上图所示,物理世界是一个巨大的世界,由无数个原子构成,而视网膜是如... 查看详情

关于python项目路径导入自己写的库出错的一点思考(代码片段)

其实也是在写自己项目的时候遇到的,以前也遇到了但是一直采取的是回避的策略,这次总算弄清楚所以总结一下。这个项目的顶级目录是medivac,他本身是一个python模块。熟悉flask的人都知道,在写一个flask项目的时候,我们常... 查看详情

对软件测试教育的一点思考

...了一天的学习就恍若隔世。软件测试最初是作为软件工程的一个分支,而今不断衍生,茁壮成长,覆盖了整个软件工 查看详情

工作中上的一点思考

防御式编程,不要相信任何人和服务。你要做好对自身的保护,号称4个9的AWS不也宕机了吗!你所担心的事一定会发生,而且可能马上会发生。最近上了一些功能,你说好像这个地方可能会有问题,你最好赶紧看,也许马上就会... 查看详情

对tcp端口和连接数的一点思考

先来看看一些约定俗成的内容。一个网卡对应一个IP地址一个IP地址对应65535个端口一个socket(addr,port)可以接受多个socket连接(accept)一个端口只能被一个socket监听(listen)我在面试的时候,被问到过这么一个问题:ipv4协议下... 查看详情

关于使用原生javascript的一点思考

前端很大,大到那些连类都不知道的仅仅上了培训班的人都会用jquery写网页。。。 当一个行业的从业人数出现爆发性增长时,基于规模效应,真正有用的有思想的技术就会出现。。。 这也是我推崇用原生JavaScript写代码... 查看详情

对于函数名本质的一点思考

自己在学习函数指针的时候对函数名的意义产生了一点疑惑,经过一些尝试和思考,感觉应该可以像下面这样理解,如果有啥不对的希望大家指正。首先我们对变量名的定义做一下回顾:在C语言里面,我们声明一个变量的时候... 查看详情

对消费主义的陷阱以及脱离人的动物性本能的一点思考

...想到了一点问题,于是就想趁着这个余热未尽时,把自己的一点思考及时用文字表达出来,第一次写,语言难免浅薄,还望见谅。  首先,我想讲一下消费主义的问题。其实,在很多创业的MOOC中,我常常听到很多“流量”“... 查看详情