在telnet下smtp应用实例详解
时间:2009-07-14 来源:loris33
SMTP 命令简介
什么是 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 结束会话
SMTP常用指令 1、MAIL FROM: <发件人地址> ;向接收者标识发件人地址。 2、RCPT TO: <收件人地址> ;标识收件人地址。 3、DATA ;请求发送消息数据,每行以结尾,以一个只有“.”号的行结束。 4、QUIT ;关闭连接。
. SMTP的基本命令 SMTP定义了14个命令,它们是:
其中使得SMTP工作的基本的命令有7个,分别为:HELO﹑MAIL﹑RCPT﹑DATA﹑REST﹑NOOP和QUIT.下面分别介绍如下。
HELO--发件方问候收件方,后面是发件人的服务器地址或标识。收件方回答OK时标识自己的身份。问候和确认过程表明两台机器可以进行通信,同时状态参量被复位,缓冲区被清空。
MAIL--这个命令用来开始传送邮件,它的后面跟随发件方邮件地址(返回邮件地址)。它也用来当邮件无法送达时,发送失败通知。为保证邮件的成功发送,发件方的地址应是被对方或中间转发方同意接受的。这个命令会清空有关的缓冲区,为新的邮件做准备。
RCPT --这个命令告诉收件方收件人的邮箱。当有多个收件人时,需要多次使用该命令,每次只能指明一个人。如果接收方服务器不同意转发这个地址的邮件,它必须报550错误代码通知发件方。如果服务器同意转发,它要更改邮件发送路径,把最开始的目的地(该服务器)换成下一个服务器。
DATA--收件方把该命令之后的数据作为发送的数据。数据被加入数据缓冲区中,以单独一行是"."的行结束数据。结束行对于接收方同时意味立即开始缓冲区内的数据传送,传送结束后清空缓冲区。如果传送接受,接收方回复OK。
REST--这个命令用来通知收件方复位,所有已存入缓冲区的收件人数据,发件人数据和待传送的数据都必须清除,接收放必须回答OK.
NOOP--这个命令不影响任何参数,只是要求接收放回答OK, 不会影响缓冲区的数据。
QUIT--SMTP要求接收放必须回答OK,然后中断传输;在收到这个命令并回答OK前,收件方不得中断连接,即使传输出现错误。发件方在发出这个命令并收到OK答复前,也不得中断连接。
下面是SMTP答复中用到的代码和含义:
最后,让我们看一个RFC821中给出的例子。这封信是Smith在主机Alpha.ARPA 发给主机Beta.ARPA上的 Jones,Green和 Brown.并且假定两台主机在同一个网络上。
邮件最后被对方接受。
连接 快速邮(Ksemail) 邮件系统 使用 SMTP 命令发送邮件 例如:安装 快速邮(Ksemail) 邮件系统 的邮件服务器IP是172.16.10.254 (蓝色字体内容由客户端输入,红色字体内容是服务返回的)
操作实例——以下实例均通过测试 (Windows7+dos & Redhat EL 5 +sendmail )
HTTP常用指令
对于HTTP服务器一般只需发送一个GET命令即可,格式如下:
GET <路径> HTTP/1.0
其中路径为服务器上的有效路径或带有完整路径的文件名,命令发出后服务器会返回一组数据并断开与你的连接。这组数据一般分为报头和文件数据两个部分,报头一般以“HTTP/1.x 200 OK”开头表示成功,如其中的“200”为“404”则表示文件未找到,如是其它的数字均表示不成功。报头以结束,接下来就是你所需要的文件数据了。
以下是IE5.0向服务器发出请求的实例:
以下是一个HTTP服务返回的数据实例:
NNTP常用指令
1、ARTICLE [<文章编号或消息ID号>] ;返回指定的文章,以只有“.”号的行结束。 2、LIST ;返回一份新闻组列表。 3、GROUP <新闻组名> ;选定一个新闻组。 4、LAST ;把当前文章指针移向上一篇文章。 5、NEWGROUP ;返回在指定时间之后创建的新闻组。 6、NEWNEWS <新闻组名> ;返回在指定时间之后创建的文章。(为年月日,为时分秒) 7、POST ;请求张贴新文章。返回“340”表示可以发送,接下来就可以发送文章内容了,每行以结尾,以只有一个“.”号的行结束。如果服务器返回“400”表示不许张贴。
FTP常用指令
1、USER <用户名> ;注:表示回车换行。 指定登录的用户名,在连接到FTP服务器后会收到一个以200开头的响应,这表示服务器已准备好,你可以用这个命令开始登录了,命令发出后会收到以230开头的响应表示用户已登录,或以331开头的响应表示需要密码。
2、PASS <密码> 当服务器响应331需要密码时,就用这个指令把密码发送到服务器。命令发出后会收到230响应表示已经登录请继续,或530响应表示无法登录。
3、PORT h1,h2,h3,h4,p1,p2 为数据连接指定一个IP地址和本地端口,h1—h4是Internet主机的IP地址,p1是本地端口的高位字节,p2是本地端口的低位字节。
4、APPE <文件名> 让服务器准备接收一个文件并把这些数据附加到指定的文件中,如果指定的文件不存在就创建它。服务器会响应:125->数据连接已打开,传输启动;150->准备打开数据连接;226->关闭数据连接,操作已成功;250->已完成;421->服务不可用;425->无法打开数据连接;450、532、550、553->无法执行。
5、CWD <路径> 改变当前目录为指定的目录(像DOS的CD命令)。服务器响应:250->已完成;421或550->无法执行。
6、DELE <文件名> 删除服务器上的指定文件。服务器响应:250->已完成;421、450、550->无法执行。
7、LIST [<路径>] 列出指定路径上的文件名(像DOS的DIR命令)。服务器响应同APPE。
8、MKD <路径> 在服务器上创建一个目录。服务器响应:257->已创建;421、550->无法执行。
9、PWD ;返回当前目录名称。
10、QUIT ;注销用户,终止连接。
11、RETR <文件名> ;下载文件,服务器响应同APPE。
12、RMD <路径> ;删除一个目录,服务器响应同DELE。
13、RNFR <文件名> 更名一个文件的前一半进程,文件名是服务器上的一个有效文件名。服务器响应:350->等待进一步的信息;421、450、550->无法执行。
14、RNTO <文件名> 更名一个文件的后一半进程,文件名为新的文件名。服务器响应:250->已完成;421、532、553->无法执行。
15、STOR <文件名> ;让服务器接收来自数据连接的文件,响应同APPE。
什么是 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 结束会话
SMTP常用指令 1、MAIL FROM: <发件人地址> ;向接收者标识发件人地址。 2、RCPT TO: <收件人地址> ;标识收件人地址。 3、DATA ;请求发送消息数据,每行以结尾,以一个只有“.”号的行结束。 4、QUIT ;关闭连接。
. SMTP的基本命令 SMTP定义了14个命令,它们是:
HELO MAIL FROM: RCPT TO: DATA RSET SEND FROM: SOML FROM: SAML FROM: VRFY EXPN HELP [ ] NOOP QUIT TURN |
其中使得SMTP工作的基本的命令有7个,分别为:HELO﹑MAIL﹑RCPT﹑DATA﹑REST﹑NOOP和QUIT.下面分别介绍如下。
HELO--发件方问候收件方,后面是发件人的服务器地址或标识。收件方回答OK时标识自己的身份。问候和确认过程表明两台机器可以进行通信,同时状态参量被复位,缓冲区被清空。
MAIL--这个命令用来开始传送邮件,它的后面跟随发件方邮件地址(返回邮件地址)。它也用来当邮件无法送达时,发送失败通知。为保证邮件的成功发送,发件方的地址应是被对方或中间转发方同意接受的。这个命令会清空有关的缓冲区,为新的邮件做准备。
RCPT --这个命令告诉收件方收件人的邮箱。当有多个收件人时,需要多次使用该命令,每次只能指明一个人。如果接收方服务器不同意转发这个地址的邮件,它必须报550错误代码通知发件方。如果服务器同意转发,它要更改邮件发送路径,把最开始的目的地(该服务器)换成下一个服务器。
DATA--收件方把该命令之后的数据作为发送的数据。数据被加入数据缓冲区中,以单独一行是"."的行结束数据。结束行对于接收方同时意味立即开始缓冲区内的数据传送,传送结束后清空缓冲区。如果传送接受,接收方回复OK。
REST--这个命令用来通知收件方复位,所有已存入缓冲区的收件人数据,发件人数据和待传送的数据都必须清除,接收放必须回答OK.
NOOP--这个命令不影响任何参数,只是要求接收放回答OK, 不会影响缓冲区的数据。
QUIT--SMTP要求接收放必须回答OK,然后中断传输;在收到这个命令并回答OK前,收件方不得中断连接,即使传输出现错误。发件方在发出这个命令并收到OK答复前,也不得中断连接。
下面是SMTP答复中用到的代码和含义:
500 Syntax error, command unrecognized [This may include errors such as command line too long] 501 Syntax error in parameters or arguments 502 Command not implemented 503 Bad sequence of commands 504 Command parameter not implemented 211 System status, or system help reply 214 Help message [Information on how to use the receiver or the meaning of a particular non-standard command; this reply is useful only to the human user] 220 Service ready 221 Service closing transmission channel 421 Service not available, closing transmission channel [This may be a reply to any command if the service knows it must shut down] 250 Requested mail action okay, completed 251 User not local; will forward to 450 Requested mail action not taken: mailbox unavailable [E.g., mailbox busy] 550 Requested action not taken: mailbox unavailable [E.g., mailbox not found, no access] 451 Requested action aborted: error in processing 551 User not local; please try 452 Requested action not taken: insufficient system storage 552 Requested mail action aborted: exceeded storage allocation 553 Requested action not taken: mailbox name not allowed [E.g., mailbox syntax incorrect] 354 Start mail input; end with . 554 Transaction failed |
最后,让我们看一个RFC821中给出的例子。这封信是Smith在主机Alpha.ARPA 发给主机Beta.ARPA上的 Jones,Green和 Brown.并且假定两台主机在同一个网络上。
S: MAIL FROM: R: 250 OK S: RCPT TO: R: 250 OK S: RCPT TO: R: 550 No such user here S: RCPT TO: R: 250 OK S: DATA R: 354 Start mail input; end with . S: Blah blah blah... S: ...etc. etc. etc. S: . R: 250 OK |
邮件最后被对方接受。
连接 快速邮(Ksemail) 邮件系统 使用 SMTP 命令发送邮件 例如:安装 快速邮(Ksemail) 邮件系统 的邮件服务器IP是172.16.10.254 (蓝色字体内容由客户端输入,红色字体内容是服务返回的)
250-ksemail.com
250-PIPELINING
250-AUTH=LOGIN PLAIN
250-AUTH LOGIN PLAIN
250-SIZE 20480000
250 8BITMIME
auth login ------------------------------------------------- 进行用户身份认证
334 VXNlagffdfcmdf5hbWU6
Ysdf29zdGFAsdfYW1hedfsadfGl0Lm5ldA== ----------------------------------- BASE64 加密后的用户名
334 UaGFzac3asdfdvcmQ6
aMdTk4adfMadfadfjIxNA== ----------------------------------------------- BASE64 加密后的密码
235 auth successfully -------------------------------------- 身份认证成功
(535 auth failure ------------------------------------------ 身份认证失败)
发到本系统中域名下的账户可跳过身份认证。
mail from: <[email protected]> ------------------------------ mail from 地址[email protected]
250 ok ----------------------------------------------------- 命令执行成功
rcpt to: <[email protected]> -------------------------------- 递送给地址[email protected]
250 ok ----------------------------------------------------- 命令执行成功
data ------------------------------------------------------- 数据传输初始化
354 go ahead ----------------------------------------------- 开始传输数据
From:[email protected]
To:[email protected]
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 Ok,close Connection closed by foreign host .------------------------- 断开连接 |
操作实例——以下实例均通过测试 (Windows7+dos & Redhat EL 5 +sendmail )
telnet 222.92.2.222 25 220 KILL Mail Shield Gateway helo 501 Syntax: HELO hostname helo mail.kubota.com.cn 250 ksgm.kubota.com.cn auth login 334 VXNlcm5hbWU6 mail from:<[email protected]> 250 2.1.0 Ok |
|
HTTP常用指令
对于HTTP服务器一般只需发送一个GET命令即可,格式如下:
GET <路径> HTTP/1.0
其中路径为服务器上的有效路径或带有完整路径的文件名,命令发出后服务器会返回一组数据并断开与你的连接。这组数据一般分为报头和文件数据两个部分,报头一般以“HTTP/1.x 200 OK”开头表示成功,如其中的“200”为“404”则表示文件未找到,如是其它的数字均表示不成功。报头以结束,接下来就是你所需要的文件数据了。
以下是IE5.0向服务器发出请求的实例:
GET / HTTP/1.1 Accept: */* Accept-Language: zh-cn Accept-Encoding: gzip, deflate If-Modified-Since: Mon, 07 Aug 2000 04:02:46 GMT If-None-Match: "0b7e757240c01:1bce" User-Agent: Mozilla/4.0 (compatible; MSIE 5.0; Windows 98; DigExt) Host: dong Connection: Keep-Alive |
以下是一个HTTP服务返回的数据实例:
HTTP/1.1 200 OK Server: Microsoft-IIS/4.0 Content-Location:http://202.103.202.203/Default.htm Date: Sat, 26 Aug 2000 02:15:07 GMT Content-Type: text/html Accept-Ranges: bytes Last-Modified: Mon, 07 Aug 2000 04:02:46 GMT ETag: "0b7e757240c01:1c5a" Content-Length: 628 |
NNTP常用指令
1、ARTICLE [<文章编号或消息ID号>] ;返回指定的文章,以只有“.”号的行结束。 2、LIST ;返回一份新闻组列表。 3、GROUP <新闻组名> ;选定一个新闻组。 4、LAST ;把当前文章指针移向上一篇文章。 5、NEWGROUP ;返回在指定时间之后创建的新闻组。 6、NEWNEWS <新闻组名> ;返回在指定时间之后创建的文章。(为年月日,为时分秒) 7、POST ;请求张贴新文章。返回“340”表示可以发送,接下来就可以发送文章内容了,每行以结尾,以只有一个“.”号的行结束。如果服务器返回“400”表示不许张贴。
|
FTP常用指令
1、USER <用户名> ;注:表示回车换行。 指定登录的用户名,在连接到FTP服务器后会收到一个以200开头的响应,这表示服务器已准备好,你可以用这个命令开始登录了,命令发出后会收到以230开头的响应表示用户已登录,或以331开头的响应表示需要密码。
2、PASS <密码> 当服务器响应331需要密码时,就用这个指令把密码发送到服务器。命令发出后会收到230响应表示已经登录请继续,或530响应表示无法登录。
3、PORT h1,h2,h3,h4,p1,p2 为数据连接指定一个IP地址和本地端口,h1—h4是Internet主机的IP地址,p1是本地端口的高位字节,p2是本地端口的低位字节。
4、APPE <文件名> 让服务器准备接收一个文件并把这些数据附加到指定的文件中,如果指定的文件不存在就创建它。服务器会响应:125->数据连接已打开,传输启动;150->准备打开数据连接;226->关闭数据连接,操作已成功;250->已完成;421->服务不可用;425->无法打开数据连接;450、532、550、553->无法执行。
5、CWD <路径> 改变当前目录为指定的目录(像DOS的CD命令)。服务器响应:250->已完成;421或550->无法执行。
6、DELE <文件名> 删除服务器上的指定文件。服务器响应:250->已完成;421、450、550->无法执行。
7、LIST [<路径>] 列出指定路径上的文件名(像DOS的DIR命令)。服务器响应同APPE。
8、MKD <路径> 在服务器上创建一个目录。服务器响应:257->已创建;421、550->无法执行。
9、PWD ;返回当前目录名称。
10、QUIT ;注销用户,终止连接。
11、RETR <文件名> ;下载文件,服务器响应同APPE。
12、RMD <路径> ;删除一个目录,服务器响应同DELE。
13、RNFR <文件名> 更名一个文件的前一半进程,文件名是服务器上的一个有效文件名。服务器响应:350->等待进一步的信息;421、450、550->无法执行。
14、RNTO <文件名> 更名一个文件的后一半进程,文件名为新的文件名。服务器响应:250->已完成;421、532、553->无法执行。
15、STOR <文件名> ;让服务器接收来自数据连接的文件,响应同APPE。
|
相关阅读 更多 +
排行榜 更多 +