博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用 telnet 发邮件
阅读量:6442 次
发布时间:2019-06-23

本文共 3901 字,大约阅读时间需要 13 分钟。

我们都习惯了用邮件客户端软件或者登录到电子邮件站点进行收发邮件,现在尝试一下使用 Windows 自带的 Telnet 程序手工地发送一封简单的邮件,以此来稍微明白关于邮件发送的一些知识。

现在 E-mail 的传输一般都使用了 ESMTP (扩展的简单邮件传输协议),SMTP 中定义了 18 条命令,用于发送一封邮件。但是作为一个测试实验的话,我们只需要其中最基本的6条命令。

如下(其中的<Space>代表一个空格,<CRLF>代表回车加换行,即写代码时的 \r\n ):

ehlo<Space>主机名<CRLF>

SMTP 邮件发送程序与SMTP邮件接收程序建立连接的第一条必须的命令,主机名是当前邮件发送者的主机名;

auth<Space>login<CRLF>

现在一般的邮箱都需要进行用户名、密码验证,而且SMTP 邮件服务器一般都使用 Login 验证方式,因此就不用考虑其他两种验证方式了;

mail<Space>from:发送人邮箱地址<CRLF>

从命令中很明显地看出来 mail 命令用于指定邮件发送者的邮箱地址;

rcpt<Space>to:收件人邮箱地址<CRLF>

同理,rcpt 命令用于指定邮件接收人的邮箱地址;

data<CRLF>

data 命令用于表示该命令之后的所有内容、数据都将被作为邮件的相关内容,直到遇到<CRLF>.<CRLF>标识符,即一个句号“.”结束邮件的发送内容;

quit<CRLF>

该命令结束邮件发送过程,关闭本机与SMTP 邮件服务器的网络连接。

出处:

======================================================

实例一

telnet常规发邮件

1.连接→telnet smtp.163.com 25

回显"220"

2.报名字(随便写)→helo 163.com

回显"250 ok"

3.登陆模式(这时选一般登陆模式)→AUTH LOGIN

回显"334 dXNlcm5hbWU6"(注:这时的用户和密码都为Base64编码后的字符

4.用户名****

回显"334 UGFzc3dvcmQ6"

5.密码****

回显"235 Authentication successful" 表示验证通过

6.发件人→mail from: <>

回显"250 Mail OK"

7.收件人→rcpt to: <>

回显"250 Mail OK"

8.开始写正文→data

输入正文内容就ok,正文要符合MIME规范

例子:

From: ←电子邮件的发信人
To: ←电子邮件的收信人
Cc: ←接收通过抄送方式发送的邮件的收件人
Subject: test ←电子邮件的主题
MIME-Version: 1.0 ←MIME 协议的版本
Content-Type: text/plain ←邮件格式texthello vkill ←内容当行输入. 回车,回显"250 OK"发送成功

9.断开连接→quit

 一般这种发送邮件的方式都可以在网上大把大把的搜到的,再有不明白的自己其网上看别人的详细介绍。

出处:

1.在cmd里输入

telnet mail.xxx.com 25
一般来说,如果mail.xxx.com存在,并且port:25有打开,就能连接成功。

2.跟服务器打招呼

helo mail.xxx.com
服务器应该返回
250
如果服务器smtp需要验证,进行第3步,否则到第4步

3.输入

auth login
会一次提示你
334 VXNlcm5hbWU6
334 UGFzc3dvcmQ6
输入用户名的base64编码的字符串,再enter
再输入密码的base64编码的字符串,再enter
注意这里的可以 网上找在线base64加密码的网页对你的用户名和密码加密
smtp认证通过后会显示
235 2.0.0 Authentication successful

4.写信

输入发信人
mail from: <>
输入收信人
rcpt to: <>
分别是发件人,收件人
如果正常都应该返回250

5.输入信件内容

DATA
从这里开始写信的内容
subject:test send mail
test email,receive
.//说明:这个英文的点号不能漏掉,表示信内容的结束

会返回

250 2.0.0 Ok: queued as 93223136C8E
退出邮件
QUIT
出处:

======================================================

实例二

企业内部网络发邮件

 在公司或企业内部,往往都有自己的邮件服务器或使用Exchanger服务器,外部免费邮件服务器网站或端口经过了拦截或屏蔽。

这样我们就没法使用外部服务器,所以我们需要先找到内部服务器再发邮件,当然,你也可以根据Outlook配置查找。

C:\>nslookup

Default Server: ns.hncsptt.net.cn
Address: 202.103.96.68 //开始运行nslookup,并且默认的DNS服务器为该IP地址。
>set type=mx //设置显示类型为MX纪录。
>domainname.com //查询domainame.com 的MX纪录。
domainname.com MX preference = 10, mail exchanger = mail.domainname.com
mail.domainname.com internet address = xxx.xxx.xxx.xxx
>exit

很快通过上面的命令就查出了domainname.com这个域的STMP服务器地址为xxx.xxx.xxx.xxx

好了,让我们继续,   C:\>telnet xxx.xxx.xxx.xxx 25
会出现:
220 mail.domainname.com
在这里也可能是别的,因为可能默认域不是domianname.com的域,而且其他的,但不管这些,你只要看到220这个数字就行了。
现在再接着输入命令:
HELO domain.com
返回:
250 mail.domainname.com Hello [x.x.x.x]
这里表示和邮件服务器握手成功,其中x.x.x.x就是你的IP地址。
好了,我们冒充的最关键地方开始了:
MAIL FROM: [email=[ft=#fff9ba,,]webmaster@domain.com]webmaster@domain.com[/email]
250 OK
这里告诉服务器,我们将用 [email=[ft=#fff9ba,,]webmaster@domain.com]webmaster@domain.com[/email] 这个电子邮件来发送这封电子邮件,很可惜任何的SMTP服务器都不会验证这个电子邮件的真实性,所以这里就被服务器给认可了,于是服务器返回250 OK,表示接受,继续等待下面的命令。
RCPT TO: [email=[ft=#fff9ba,,]username@domainname.com]username@domainname.com[/email]
250 OK
告诉服务器邮件发送给 [email=[ft=#fff9ba,,]username@domainname.com]username@domainname.com[/email] ,但是服务器在这里仅仅只检查domainname.com这个域是不是在自己的转发列表里,由于我们是直接查的dommainname.com这个域的SMTP服务器,所以当然也绝对会在列表了,所以服务器的返回OK,而不会做更多的验证。
DATA
354 Start mail input; end with <CRLF>.<CRLF>
这里输入DATA,告诉服务器要开始输入邮件内容了,邮件服务器会返回354信息,以及上面说的邮件以“.”结束。
开始输入邮件内容了,但一般邮件都会有邮件头,为了更真实的伪造邮件,我们可以按下面的输入:
From: [email=[ft=#fff9ba,,]webmaster@domain.com]webmaster@domain.com[/email] //让Outlook,foxmail等这样的客户端工具显示发送者为 [email=[ft=#fff9ba,,]webmaster@domain.com]webmaster@domain.com[/email]
To:username@domainname.com //同样让客户端工具显示接收者为 [email=[ft=#fff9ba,,]username@domainname.com]username@domainname.com[/email]
Subject: send anonymous mail //邮件主题
Test //邮件内容,这里想怎么写就怎么写了。
. //最后输入一个“.”结束邮件。
250 send OK

服务器返回250,说邮件发送成功,

备注:为企业邮箱局域名加上TXT解析记录,可以防止一此非正常手段发送的邮件,也避免别人盗用自己的邮件服务器来发送垃圾邮件!
TXT记录,如: ABC.COM     V=SPF.include.XXXX.  ~ALL
 出处:

转载地址:http://tmdwo.baihongyu.com/

你可能感兴趣的文章
java类路径classpath和包
查看>>
Information Retrieval 倒排索引 学习笔记
查看>>
【Git】Git-add之后-忽略部分文件的方法
查看>>
JQuery使用trigger模拟触发selete的选择change事件
查看>>
连表更新数据
查看>>
tensorflow笔记1:基础函数、embedding_lookup
查看>>
如何用phpmyadmin导入大容量.sql文件,直接使用cmd命令进行导入
查看>>
BZOJ4133 : Answer的排队
查看>>
基于Centos搭建 Mono 开发环境
查看>>
算法题:福尔摩斯的约会
查看>>
Oralce sql (+) 补充
查看>>
hdu 2665 划分树
查看>>
laravel中的plicy授权方法:
查看>>
基于R进行相关性分析--转载
查看>>
常用 cdn
查看>>
tomcat8 管理页面403 Access Denied的解决方法
查看>>
怎样避免应用冷启动
查看>>
把vux中的@font-face为base64格式的字体信息解码成可用的字体文件
查看>>
vue sync
查看>>
CentOS6下OpenLDAP+PhpLdapAdmin基本安装及主从/主主高可用模式部署记录
查看>>