命令行下实现Email收发

作者:宋洋

在浏览器下通过web方式收发Email大家都会,但如何在命令行下完成这样一个过程呢?了解了Email传输过程的朋友们,一定对于一封信的传输流程不陌生,但我们怎样通过命令行方式实现这样一种传输呢?
首先教你一招——Telnet。telnet是远程登录服务,利用它可以实现远程登录到Internet上的任意一台主机上,它是一种协议也是一种命令,可以帮助我们完成很多工作,更是Hacker的入门工具,在这方面我了解的不多,就不详述了。言归正传,为什么要讲它呢,我们可以想象,如果我们能够远程登录到一个邮件服务器上去,并以另一个邮件服务器的“口吻”与它对话,是不是就可以骗得它接收我们发的信了呢?也许你会说我天真,邮件服务器哪那么容易骗,看你IP就认识你了,哎,你说对了,有些邮件服务器不支持这种方式就是因为看了你的IP,这个我们后面再谈。也许你认为这样实现起来可能性不大,那么我们换一种思维,既然无法把自己装扮成一个邮件服务器,那么我们就做回我们自己,以一个用户的身份登录总行了吧,登录了干什么?发信呗!web方式下发不是很好,何必非要用telnet在命令行方式下发呢?因为命令行方式下发信赋予了我们更多的权限啊!至于什么权限我会演示给你看!

可能上面的文笔较差,令你没太看懂。简单的说,我们在命令行下发一封信有两种途径:一种是直接发给接收方的邮件服务器;另一种是将命令行方式虚拟成一种发件代理工具,把信发到我们自己的邮箱所在的服务器上去,让我们自己的邮件服务器去发这封信给接收方邮件服务器。其中尤以第二种方式较高明,因为接收方邮件服务器可以不认识你,但却决不会不认识你的邮箱所在的服务器,当然你应该使用那些比较常见的门户网站的邮箱。但你又说了,你怎么保证一定能通过命令行方式把邮件发到你的邮箱所在的邮件服务器上去呢?因为你有账号、密码啊,如此之权限在手,夫复何求?

多说无益,演示一下才是真的,我们先来演示第一种吧也就是,直接把邮件发给一个接收方的邮件服务器。请看下图:命令行方式下收发Email的相关图片

 

 

 

 

 

 

 

 

 

解释一下:我们首先在开始——运行里输入cmd打开一个shell,然后输入
telnet ssmail.hit.edu.cn 25
则会弹出上图并显示第一行语句,然后我们输入ehlo asdf,这是在打招呼,就是告诉ssmail邮件服务器,“我来了”,更深层次的讲,这其实是建立了一个TCP连接。为什么输入“asdf”,是为了告诉你,随便输入什么都行,毫无影响,不过建议输入类似“163.com“这样的字符串,只是给建议,我没见过这样有什么意义,有没有意义你可以自己做实验,不扯了,接着说。然后,你会看到连续6行的相应信息,这信息懂英文应该不难理解,不理解的就去google it!接着,我们输入mail froma@12.c,为什么输这些,目的是告诉你,连这个都不用写什么正式信息,至少在ssmail下是这样的,那在别的服务器上呢?别的服务器我还没有试过,不过请放心,知名门户网站是不会给你直接发到人家收件服务器上去的这种机会的。不过对于ssmail来说,你必须要有@这个字符,并且在@的前面必须有字符存在,最简单的说就是,”.@“也是可以的。然后,输入rcpt to666@ssmail.hit.edu.cn,这里的地址必须是你所访问的服务器下的电子邮件地址,因为如果你随便填个别的邮件地址,人家干嘛要管你的闲事呢!如果这时,屏幕的下一行返回了“205 OK”,则表明你基本上算是成功了,后面的事就是把信写好就行了,这里写信的内容我另起以行来写,因为对于两种方式来讲,在如何写信上是没有区别的。

一开始,你要输入“data”,表明你要开始写信的内容了。然后需要写的是一系列的首部行,也是最危险的东西,因为在这里不像在web方式下写信,一些信息不是你自己所能决定的,比如发信人、发信日期,但在命令行方式下写这封信的时候,这些内容都是可以随便去写的,于是我可以很负责任的告诉你,电子邮件是不可信的,从今以后,大家还是把它当成网络硬盘吧!继续我们的话题,我把这些首部行的书写模式给大家,照着模拟就可以了。

from王树国 ”< wsg@hit.edu.cn >(这样写真实些,不过你可以随便写,你写什么都能显示到发件人那一栏里)
to< 666@ssmail.hit.edu.cn > (这个暂时我还没发现有什么意义 )
date16 Apr 2006 154525 +0800(关于日期,你只要按照这种格式写就行,写的是什么时候接收方显示的就是什么时候,不过如果格式有误,则会显示服务器所理解的一个时间, +0800的目的是把时差加上,东八区嘛!)
subject:好玩吗?(这是主题)
请注意:输入这些首部行时最好不要敲错了,敲错了也不用改,因为照样是会被写过去的,这里面具体是怎样规定的那是服务器的事,,不同服务器规定的标准也会稍有不同,但不会差太多,有兴趣你可以自己测测看。写完这些首部行之后,就应该写正文了,不过正文与首部行之间需要一个空行,接收方邮件服务器会把空行以下的部分自动收到正文里去,正文该怎么写,我就不教大家了,图上都很清楚了。不过再需要注意的一个地方就是如何结束——敲一个空行,输入一个“ .”,再敲一个空行,这样服务器才知道你已经写完这封信了,于是屏幕上会有一串回显字符,表明该封信已经被接收到队列中去了。
也许你现在已经感兴趣了,准备向 163或者 sina开刀,但我会告诉你通过这样一种方式去欺骗大型门户网站的邮件服务器是妄想,以下几幅图是本人失败的写照。

顺便提醒大家,连接这些邮件服务器时需要用类似这样的方式:telnet smtp.163.com 25或者telnet smtp.sina.com.cn 25命令行方式下收发Email的相关图片

 

 

 

 

 

 

 

 

命令行方式下收发Email的相关图片

 

  

 

 

 

 

命令行方式下收发Email的相关图片

 

 

 

 

 

 

        

         综上可见,无论是163sina126gmail都不能让我们轻易的直接发到其邮件服务器上去,难道这样就没办法了吗?当然不是的!
        第二种方式该登场了,这就是我所谓的以shell中敲命令行作为代理发信工具的方式实现发给任何邮件服务器上的任何一个邮箱。它的大体流程与第一种方式是类似的,所以我讲起来也方便些,唯一不一样的地方是,当进行了ehlo alkj握手连接之后,我们不是输入mail from…而是输入auth login,以向该邮件服务器表示,我们是一个用户,准备登陆发信了,然后屏幕上回显一个字符串,意思是让我们输入用户名,输完后屏幕上又会回显一个字符串,让我们输入密码,请大家注意,这里的用户名和密码可是有讲究的,就是必须经过base64编码后的才可,不然服务器是不识别的,关于base64我在这里倒想多谈一些,但鉴于时间问题,暂且为止吧,我只是想告诉大家,平时我们发附件时,会显示比实际稍大是跟它有关的。至于如何得到你的用户名与密码的base64编码呢,大家自己去google吧,网上这方面的介绍不少,也都足够详细,我在这里要做的就是把几个参考图片发出来,也就足以说明问题了!顺便提一点,gmail是不支持这样一种操作的。命令行方式下收发Email的相关图片                            

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

命令行方式下收发Email的相关图片命令行方式下收发Email的相关图片命令行方式下收发Email的相关图片

         以上说了一大堆都是关于发送Email,至于接收,既然题目里写了,那为了满足部分人的好奇心,就也简单说说吧!不过在我看来,命令行下接收Email确实没什么大用,也什么意思!因为你读到的差不多都是经过了发信方服务器base64编码后的内容,除非人家的邮件服务器没编码,不过对于那些大型门户网站下的Email来说,这种可能性不大。
    如果要实现命令行方式下接收Email,首先需要连接到你的邮箱服务器的110端口上去,具体操作是这样的:首先telnet pop3.163.com 110,得到回应后,输入 user magicsongyang,得到提示后,再输入pass 123456,这样你就可以进行收信了,常用的一些命令在网上都可以找到,比如list用来列出所有邮件,retr 5用来查看编号为5的那封邮件,退出输入quit就可以了。为便于大家理解,简单贴一张图出来吧!

命令行方式下收发Email的相关图片

        以上介绍了有关命令行方式下收发Email的相关知识,目的在于把底层细节上的东西介绍给大家,绝对不鼓励大家利用这些知识来做一些鸡鸣狗盗的勾当。希望大家能对计算机网络的相关知识感兴趣,对应用层的一些协议理解的更细致,本来还想介绍一些关于ftp命令方面的知识,以及讨论一下通过telnet可否进行文件传输等问题,不过鉴于其中一些内容本人了解的也不透彻,就不献丑了,虽然已经很惭愧了。最后感谢google、Baidu提供给我几天来的资料支持,感谢King的鼓励,谢谢大家!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值