smtp命令详解2

    之前有文说过smtp协议的详解,下面这段是泥人整理过的。通常你可以使用抓包工具来在服务器上侦听25端口,可以分析出这些内容了。以下的内容是一方和另一方服务器之间的SMTP通信内容,而不同于之前介绍的smtp命令详解中的,上一文主要是客户端软件和服务器之间的连接内容。

new message[]                                                                    开始发信
bytes 1174 from aaa@abc.com.cn                                         发信人
starting delivery: to remote bbb@gmail.com                            收信人
deliver to remote server 209.85.199.27                                     收信方邮件服务器地址
[<--]: 220 mx.google.com ESMTP f21si17539450rvb.0              以下是smtp通信的命令交互
[-->]: EHLO 163xmail.com
[<--]: 250-mx.google.com at your service, [218.71.143.71]
[<--]: 250-SIZE 28311552
[<--]: 250-8BITMIME
[<--]: 250 ENHANCEDSTATUSCODES
[-->]: MAIL FROM: <aaa@abc.com.cn>
[<--]: 250 2.1.0 OK
[-->]: RCPT TO: <bbb@gmail.com>
[<--]: 250 2.1.5 OK
[-->]: DATA
[<--]: 354 Go ahead
[***]: Transporting message (1174 bytes)

………………………………………内容省略!太多了
[***]: Finished transport
[<--]: 250 2.0.0 OK 1213147225 f21si17539450rvb.0
[—>]: QUIT                                                   完成
delivery success                                          递交成功   
end message[]                                            结束

如果递交不成功会有错误的.像下面这个.就会收到退信.如果你设了中继第一次递交不成功后会有个中继再递交的动作.如果成功就会是成功的.如
果还不成功则会退信.

[***]: Transporting message (76260 bytes)
[***]: Finished transport
[<--]: 550 Error: content rejected.http://mail.qq.com/zh_CN/help/content/rejectedmail.html    这里将是你在退信的邮件中看的重要内容。其他内容为你所在的邮件系统自动生成的。
[-->]: QUIT

 

欢迎使用SMTP小工具来学习点这里下载smtp测试小工具

POP3命令详解

一 简介:
1. POP适用于C/S结构的脱机模型的电子邮件协议,目前已发展
到第三版,称POP3。脱机 模型即不能在线操作,不像IMAP4
(netscape支持IMAP4)
2. 当客户机与服务器连接并查询新电子邮件时,被该客户机指
定的所有将被下载的邮件 都将被程序下载到客户机,下载后,
电子邮件客户机就可以删除或修改任意邮件,而无需与电子邮件
服务器进一步交互。
3. POP3客户向POP3服务器发送命令并等待响应,POP3命令采用
命令行形式,用ASCII码 表示。
服务器响应是由一个单独的命令行组成,或多个命令行组成,响
应第一行以ASCII文本+ OK或-ERR指出相应 的操作状态是成功还
是失败
4. 在POP3协议中有三种状态,认可状态,处理状态,和更新状态。
当客户机与服务器建立联系时,一旦客户机提供了自己身份并成
功确认,即由认可状态转入处理状态, 在完成相应的操作后客
户机发出quit命令,则进入更新状态,更新之后最后重返认可
状态。如下图
等待连接 身份确认 quit命令
—— |认可|————— |处理|——————|更新|
       |__________________________________|
                 重返认可状态
5. 认可状态的命令语句
一般情况下,大多数现有的POP3客户与服务器执行采用ASCII明
文发送用户名和口令,在 认可状态等
待客户连接的情况下,客户发出连接,并由命令user/pass对在网络上发送明文用户名和 口令给服务器
进行身份确认。一旦确认成功,便转入处理状态。
为了避免发送明文口令的问题,有一种新的认证方法,命令为
APOP,使用APOP,口令在 传输之前被加密。
当第一次与服务器连接时,POP3服务器向客户机发送一个ASCII
码问候,这个问候由一串字符组成对每个客户机是唯一的,与当
时的时间有关,然后,客户机把它的纯文本口令附加到从服务器接
收到的字符串之后,然后计算出结果字符串的MD5单出函数消息
摘要,客户机把用户名与MD5消息摘要作为APOP命令的参数一起
发送出去。
目前,大多数windows上的邮件客户软件不支持APOP命令,qpopper支持。
6. POP3命令码如下:
命令 参数 状态 描述
——————————————
USER username 认可 此命令与下面的pass命令若成功,将导致状态转换
PASS password 认可
APOP Name,Digest 认可 Digest是MD5消息摘要
——————————————
STAT None 处理 请求服务器发回关于邮箱的统计资料,如邮件总数和总字节数
UIDL [Msg#] 处理 返回邮件的唯一标识符,POP3会话的每个标识符都将是唯一的
LIST [Msg#] 处理 返回邮件数量和每个邮件的大小
RETR [Msg#] 处理 返回由参数标识的邮件的全部文本
DELE [Msg#] 处理 服务器将由参数标识的邮件标记为删除,由quit命令执行
RSET None 处理 服务器将重置所有标记为删除的邮件,用于撤消DELE命令
TOP [Msg#] 处理 服务器将返回由参数标识的邮件前n行内容,n必须是正整数
NOOP None 处理 服务器返回一个肯定的响应
——————————————
QUIT None 更新
a.客户机希望结束这次会话
b.如果服务器处于‘处理’状态,那么将进入‘更新’状态以删除任何标记为删除的邮

c.导致由处理状态到更新状态,又重返认可状态的转变
d.如果这个命令发出时服务器处于‘认可’状态,则结束会话,不进行‘更新’状态。
7. POP3协议在TCP/110端口上等待客户连接请求。
8. 若密码为明文,我如何监听?
下面的命令在服务器运行后在屏幕上显示POP3连接及命令发送的过程:
#sniffit -a -A. -p 110 -b -s 192.169.11.12
note: 192.168.11.12是客户机IP地址
你需要事先安装sniffit这个端口监听程序
9. 考虑这种情况,若客户在收取邮件时,假定为15封信等待接收,但由于线路问题,收
到第10封时断线了,
为什么下次收时仍然从第一封开始,也即为什么前10封没有被从服务器上删除掉?
任何邮件的删除都必须在quit命令发出后对已标记为删除的邮件执行删除操作,由于中
途断线,仍处于
处理状态,没有机会执行quit命令以进行状态转换。
10. pop3 session is locked by another session, please wait 10 minutes then t
ry again.
由于非正常操作引起POP3程序内部机制锁住该次会话。
11. Foxmail与OE(outlook express)的处理机制的不同。
a. 假定服务器上有三封邮件等待客户机接收。用foxmail与OE的不同之处在于
foxmail每收一封标记删除一封,而OE则等全部接收完后再全部标记为删除最后执行qui
t命令。
Foxmail OE
——————————-
retr 1 retr 1
dele 1 retr 2
retr 2 retr 3
dele 2 dele 1
retr 3 dele 2
dele 3 dele 3
quit quit
b. Foxmail的远程邮件管理是非常优秀的管理工具,假定服务器上有三封信,对第一封
,我们不想接收
想从服务器直接删除;对第二封,想接收但不删除,对第三封,这一次不想接收,分别
标记后
最后foxmail发出的命令是
dele 1
retr 2
quit
c. 若没有foxmail,正好有几封很大的信堵住了,我不想接收,想直接删除它,或者想
查看这两封是谁发的?
直接在windows的DOS窗口下用命令行操作,如:
# telnet 192.169.11.12 110
user username
pass password
list

dele 3
dele 5
quit

SMTP命令详解

本测试使用magicwinmail完成.通常情况下.我们都在使用telnet serverIP 25来测试是否可以正常收发信.当然如果你要用这个方式来发信也是可以的.所有邮件收发软件都使用这一标准来和服务器联系发送邮件.

什么是 SMTP
SMTP (Simple Mail Transfer Protocol) : 电子邮件从客户机传输到服务器或从某一个服务器传输到另一个服务器使用的传输协议。 SMTP 是请求/响应协议,命令和响应都是基于 ASCII 文本,并以 CR 和 LF 符结束。响应包括一个表示返回状态的三位数字代码。SMTP 在 TCP 协议 25 端口监听连接请求。

什么是 ESMTP
ESMTP (Extended SMTP),顾名思义,扩展 SMTP 就是对标准 SMTP 协议进行的扩展。它与 SMTP 服务的区别仅仅是,使用 SMTP 发信不需要验证用户帐户,而用 ESMTP 发信时, 服务器会要求用户提供用户名和密码以便验证身份。验证之后的邮件发送过程与 SMTP 方式没有两样。

SMTP 命令
SMTP 命令包括:
HELO 向服务器标识用户身份。发送者能欺骗,说谎,但一般情况下服务器都能检测到。
EHLO 向服务器标识用户身份。发送者能欺骗,说谎,但一般情况下服务器都能检测到。
MAIL FROM 命令中指定的地址是发件人地址
RCPT TO 标识单个的邮件接收人;可有多个 RCPT TO;常在 MAIL 命令后面。
DATA 在单个或多个 RCPT 命令后,表示所有的邮件接收人已标识,并初始化数据传输,以 CRLF.CRLF 结束
VRFY 用于验证指定的用户/邮箱是否存在;由于安全方面的原因,服务器常禁止此命令
EXPN 验证给定的邮箱列表是否存在,扩充邮箱列表,也常被禁用
HELP 查询服务器支持什么命令
NOOP 无操作,服务器应响应 OK
RSET 重置会话,当前传输被取消
QUIT 结束会话

连接 Winmail Server 使用 SMTP 命令发送邮件
例如:安装 Winmail 的邮件服务器IP是192.168.0.1 (蓝色字体内容由客户端输入,红色字体内容是服务返回的)

telnet 192.168.0.1 25 ———————— 使用 telnet 命令连接服务器 25 端口
Trying 192.168.0.1… ——————————– 正在连接服务器 25 端口
Connected to 192.168.0.1. —————————— 连接服务器 25 端口成功
220 Winmail Mail Server ESMTP ready ————————- 显示服务器的标识名称 (Winmail 管理工具->高级设置->系统参数->基本参数中可更改)
helo cnu.com ———————————————— 向服务器标识用户身份,发信不要认证,跳过下面几步直接发送 mail from 命令
250 Winmail Mail Server
ehlo cnu.com ————————————— ESMTP 命令,发信需要认证。
250-Winmail Mail Server
250-PIPELINING
250-AUTH=LOGIN PLAIN
250-AUTH LOGIN PLAIN
250-SIZE 20480000
250 8BITMIME
auth login ————————————————- 进行用户身份认证
334 VXNlcm5hbWU6 
Y29zdGFAYW1heGl0Lm5ldA== —————————- BASE64 加密后的用户名
334 UGFzc3dvcmQ6 
MTk4MjIxNA== ——————————————- BASE64 加密后的密码
235 auth successfully ————————————– 身份认证成功
(535 auth failure —————————————— 身份认证失败)
发到本系统中域名下的账户可跳过身份认证。
mail from: <test1@domain.com> —————————— mail from 地址 test1@domain.com
250 ok —————————————————– 命令执行成功
rcpt to: <test2@domain.com> ——————————– 递送给地址 test2@domain.com
250 ok —————————————————– 命令执行成功
data ——————————————————- 数据传输初始化
354 go ahead ———————————————– 开始传输数据
From: test1@domain.com
To: test2@domain.com
Date: Mon, 25 Oct 2004 14:24:27 +0800
Subject: test mail

Hi, test2
This is a test mail, you don’t reply it.

.
———————————————————— 数据内容,包括BASE64加密后的邮件内容, 以 CRLF.CRLF 结束数据传输
250 ok message accepted for delivery ———————– 命令执行成功
quit ——————————————————- 结束会话
221  Winmail Mail Server
Connection closed by foreign host .————————- 断开连接

如果想了解更详细可以链接到smtp命令详解2,以及使用SMTP小工具来学习点这里下载smtp测试小工具

高效实用:用简单命令测试网络性能

访问某一个网站时,花费了相当长的时间,有时甚至根本就无法访问该网站。这样,许多时间消耗在等待上。那么,有没有办法来节约等待的时间以提高上网的效率呢?答案是肯定的。

我们知道,之所以访问一个网站需要相当长的等待时间,是因为用户的计算机与所访问网站间的链路出现了交通堵塞、不稳定情况或者故障。如果能够事先知道线路的质量,就
可以做到有的放矢,回避不稳定情况所带来的不便,等线路状态重新变好后再访问特定网站。

如何才能知道线路质量的好坏呢?通过以下几个网络测试命令,可以有助于更好地使用和维护网络。

Ping命令

利用Ping命令,可以测试一帧数据从一台主机传输到另一台主机所需的时间,从而判断主机的响应时间。该命令的作用,主要是用于检查路由是否能够到达。由于该命令的包长很小,所以在网上传递的速度非常快,可以快速地检测要去的站点是否可到达。一般访问某一站点前,可先运行此命令,以确定该站点是否可以到达。

如果执行Ping命令不成功,则可以判断故障出现在以下几个方面:网线是否连通、网络适配器配置是否正确、IP地址是否可用等。如果执行Ping成功而网络仍无法使用,则问题很可能出在网络系统的软件配置方面。Ping命令执行成功,只说明当前主机与目的主机间存在一条可连通的物理路径。其使用格式是,在命令提示符下键入“Ping IP地址或主机名”,执行结果为显示响应时间,重复执行这个命令,你可以发现Ping报告的响应时间是不同的。具体的Ping命令后还可跟一些参数,这些参数在键入Ping后回车会得到详细说明。

例如当访问站点www.ccidnet.com时,就可以利用Ping命令来测试目前连接该网站的速度情况。假设运行的系统为Windows 9x,单击“开始”键,选择“运行”命令,接着在运行对话框中输入Ping和用户要测试的网址,即为Ping www.ccidnet.com,该程序就会向指定的Web网址的主服务器发送一个32字节的消息,而后将服务器的响应时间记录下来。Ping命令将会向用户显示4次测试的结果,响应时间低于300毫秒都被认为是正常的,而时间超过400毫秒时,则认为网络速度较慢。出现“请求暂停”(Request time out)信息,则意味着网址没有在1秒内响应,这表明服务器没有对Ping做出响应或者网址反应极慢。当出现4个“请求暂停”信息,则表示网址拒绝Ping请求。

由于过多的Ping命令测试本身容易产生瓶颈,因此许多Web管理员将服务器设定为不接受此类测试。如果网址很忙或者出于其它原因运行速度很慢,如硬件动力不足,数据信道比较狭窄,可过一段时间再试一次,以确定网址是不是确有故障。如果多次测试都存在问题,通常的原因是用户的主机和该网址站点没有联接上,用户应该及时与因特网服务商或网络管理员联系。

Winipcfg命令

Winipcfg命令的作用,是用于显示用户所在主机内部IP协议的配置信息。Winipcfg程序采用Windows窗口的形式来显示IP协议的具体配置信息。如果Winipcfg命令后面不跟任何参数直接运行,程序不但可在窗口中显示网络适配器的物理地址、主机的IP地址、子网掩码以及默认网关等,而且还可以查看主机的相关信息如主机名、DNS服务器、节点类型等。

当试图快速了解某一台主机IP协议的具体配置情况时,Winipcfg命令是可用的。具体操作步骤如是,在“运行”对话框中,直接输入Winipcfg命令,回车后出现一个视窗界面。在该界面中,可了解到主机所在计算机所用网卡的类型、网卡的物理地址、主机的IP地址、子网掩码、路由器等。如果用户想更加详细地了解该主机的其他IP协议配置信息,如DNS服务器、DHCP服务器的信息,可以直接单击该界面中的“详细信息”按钮。

Tracert命令

Tracert命令的作用,是判定数据包到达目的主机所经过的路径、显示数据包经过的中继节点清单及到达时间。该命令的使用格式是在DOS命令提示符下,或者直接在运行对话框中键入如下命令:“Tracert 主机IP地址或主机名”。执行结果为返回数据包到达目的主机前所经历的中继站清单,并显示到达每个中继站的时间。尽管该功能同Ping命令有点类似,但它所看到的信息要比Ping命令详细得多,它将主机送出的请求包所到达的全部站点、所走的全部路由都显示出来,并且显示出该路由的IP、通过该IP的时延。Tracert命令后还可跟多个参数,键入Tracert后回车会得到详细的说明。

如果用户想了解自己的计算机与目标主机之间详细的传输路径信息,可以使用Tracert命令进行检测。具体操作步骤如下:在“运行”对话框中,直接输入“Tracert www.ccidnet.com”命令,单击回车键,可看到一个界面。也可以在MS-DOS方式下,输入“Tracert www.ccidnet.com”命令,也能得同样的结果界面。由此方式,可以详细地显示出连接到目标网站的路径信息,例如中途经过多少次信息中转,每经过一个中转时花费了多长时间等,通过讯息,可以方便地查出用户主机与目标网站之间的线路到底在什么地方出了故障。

netstat命令

netstat命令可以使用户了解到自己的主机是怎样与Internet相连接的,这有助于用户了解网络的整体使用情况。它可以显示当前正在活动的网络连接的详细信息,如网络连接、路由表和网络接口等信息,也可以让用户得知目前总共有哪些网络连接正在运行。

可以使用“netstat/?”命令来查看一下该命令的使用格式以及详细的参数说明,该命令的使用格式是,在DOS命令提示符下或者直接在运行对话框中键入如下命令:“netstat[参数]”,利用该程序提供的参数功能,用户可以了解该命令的其他功能信息,如显示以太网的统计信息、显示所有协议的使用状态等。这些协议包括TCP协议、UDP协议以及IP协议等,另外还可以选择特定的协议并查看其具体使用信息,还能显示所有主机的端口号以及当前主机的详细路由信息。

例如,如果用户想要了解某城市信息网络中心节点的出口地址、网关地址及主机地址等信息,便可以使用netstat命令进行查询。具体操作方法如下:在“运行”对话框中,直接输入netstat命令,单击回车键;也可以在MS-DOS方式下,输入netstat命令。从弹出界面中可以了解到用户所在的主机采用的协议类型、当前主机与远端相连主机的IP地址以及它们之间的连接状态等信息。

以上是几种常用的命令工具,高效实用,比起许多硬件检测工具还省事,而且各种系统都自带,是网管员的贴身助手!