DeBUG:远程调试瑞星屏蔽邮件发送
找完工作以后,又忙着修改以前项目中的数据录入以及存储中问题的优化。
前几天,空间要到期了,甚是郁闷,不想再用这个空间了,想换一个,还好永超说他有个空间可以帮我绑定一下,借一部门空间给我用一段时间,我甚是感激呀!折腾了一两天才把东西全部移过去。这下算是安稳了。
同学小明,现在就职某规划局,据他说,他每天都要登录一个招标网站,查看这个网站有没有更新相关信息。漏掉的信息就会被其他的单位抢走。他很想做个软件帮他处理这些事务。让我帮他想想办法。
我想了下这个应该不难,获取到网站中的招标目录,去除HTML,匹配更新,提示,搞定!这样做来比较快就实现了。他用起来也比较舒心。但是过了一段时间,感觉还是有些不太方便:如果不再电脑旁边,而又想接收到实时更新呢?怎么办?我突然间想起来,是不是可以用由邓东东开发的LibFetion的lib包,开发一个飞信的发送呢?理论上是可行的,但是这样操作起来复杂度比较高。而且还要熟悉lib接口。然后就想到了使用mail发送移动的139邮箱,然后139邮箱有免费短信提醒的功能。这样见解可以实现信息的短信提醒。
以前做过N多的mail发送了,写起来比较简单。比较纠结的是,这个东西我电脑上发送邮件十分的正常,到我同学电脑上发送一直不成功,“提示连接被关闭”。因为同学远在郑州,跑过去debug也不太现实。想了好久,决定让同学安装一个抓包软件,配合我调试一下,看到同学抓过来的包,提取SMTP的信息流,大概如下:
为什么是data发送不成功呢?
我们知道,发送了rcpt to 命令以后,接下来的便是data命令,但是我们的程序怎么直接就QUIT了呢?是发送不成功?还是程序在data之前就quit了?还是data发送失败,但是没有检查失败?带着以上疑问,我抓了下自己的发送数据包:
我们可以看我的数据包发送了data,而且数据也是正常的,这个是为什么呢?考虑了上面我们想到的,一一排除,最后,我决定把get_response中的服务器返回数据全部打到log里面,看下问题所在。结果一下就看到了比较悲剧的事情,是瑞星的邮件保护措施,屏蔽了DATA命令。
看到服务器交互认证成功以后,发送出去的数据全部改成了:
250 Send from Rising mail proxy
这个数据应该是瑞星把mail发送的数据拦截了,然后又再次发送出去。让同学把瑞星的邮件屏蔽功能关掉。程序OK了。
程序其实没有问题,只是瑞星屏蔽了。通过远程的debug,分析问题,解决问题。呵呵



学习了,不过,我还是看不懂!
差距咋就这么大呢,学习了
@bear
呵呵,没什么的哈,你也加油!
博主,兔年快乐!
谢谢分享。