通过telnet使用smtp协议发送邮件

smtp协议是一个简单的邮件传输协议,利用它我们可以将邮件发送给别人,这里将通过telnet这个程序利用smtp协议从网易向gmail发送一封邮件

网上不少有说使用telnet发送邮件的文章,我也看过了,多数的步骤是这样的

1、使用telnet连接smtp服务器
2、发送一个helo或者ehlo指令
3、验证用户(使用邮件名登陆)
4、使用mail命令准备发送邮件
5、使用rcpt命令指定对方邮箱地址
6、使用data命令开始输入内容
7、输入test或者hello world类似字样(即邮件内容)
8、输入邮件内容结束标志.
9、退出smtp服务器

按说步骤应该是这样的,而且在同域内邮件也确实成功发送出去了,但我却发现在给gmail发送邮件的时候却总是会出错发送不出去,总是会收到系统退信,退信内容为
英文说明:SMTP error, DOT: 550-5.7.1 [176.32.86.149 11] Our system has detected that this message is 550-5.7.1 not RFC 2822 compliant. To reduce the amount of spam sent to Gmail, 550-5.7.1 this message has been blocked. Please review 550 5.7.1 RFC 2822 specifications for more information. je1si14935522pbb.180 – gsmtp.(SMTP error, DOT: 550-5.7.1 [176.32.86.149      11] Our system has detected that this message is
550-5.7.1 not RFC 2822 compliant. To reduce the amount of spam sent to Gmail,
550-5.7.1 this message has been blocked. Please review
550 5.7.1 RFC 2822 specifications for more information. je1si14935522pbb.180 – gsmtp)

不知道该怎么办,按说smtp协议是没错的,上面的步骤也是正确的,于是我找了一个邮件客户端然后进行了抓包,终于成功地将邮件发送到了我的gmail帐户上

问 题出在data指令后输入的内容中,我一直以为data指令后的内容是作为邮件内容是可以随意写的,然而在开头还是应该使用subject、from、 to等指令(或许还有cc),它们分别是邮件的主题,邮件的发件人,邮件将要送往何方(cc指令我没测试,我想应该是有的,它应该是抄送),至此,终于成 功地将邮件发往不同的域中

下面说说看上面的几个步骤吧

使用telnet连接smtp服务器很简单,这里连接163的smtp服务器为smtp.163.com端口为25
telnet smtp.163.com 25
helo和ehlo指令的作用是向服务器标识用户身份,返回邮件服务器身份
helo 163.com
验证用户这里要注意下,使用auth login进行验证时用户名和密码是经过base64编码过后的字符
我们输入auth login回车
然 后你会看见一个334状态码和一个VXNlcm5hbWU6字符串,用base64解码后你会发现这是Username:的意思,也就是说这时输入经过 base64编码后的字符串,至于如何得到base64编码后的字符串,在linux下可以使用base64这个命令得到

echo -n [email protected] | base64
将输出的字符串复制到telnet里回车,这里记住用户名是包括@163.com的
然后接着是输入密码,和上面一样,密码也是经过base64编码后的字符串

完成后你会看到了登陆成功的提示
接下来使用mail指令开始写一个邮件,格式是这样的
mail from:<[email protected]>
yourname是你的用户名
然后指定要将邮件发往何方
rcpt to:<[email protected]>
[email protected]是对方的邮件地址
这里可以有多个rcpt指令,格式如上
然后使用data指令开始写邮件内容
subject:主题
from:<来自哪里>
to:<送往何方>
邮件内容
.
注意结束data指令的标志是一个回车一个点再一个回车,这时邮件已经发送了
quit退出服务器
现在去看看你是不是已经收到邮件了呢?什么还没有,再等会吧

下面是我发送的一个实例截图

通过telnet使用smtp协议发送邮件 - 枯龙吟 - 枯龙吟

红色包围起来的就是上面的步骤

通过telnet使用smtp协议发送邮件 - 枯龙吟 - 枯龙吟
已经收到了邮件,这里看不出邮件是谁发的,因为前面的from后面没有跟我的邮件地址,哈哈

 

 

–阅读次数(33)

发表评论

电子邮件地址不会被公开。

*