`

SMTP基本命令

阅读更多
 SMTP的基本命令 2006-09-06 09:05:19

 

分类:

 

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

 

------------------------------------------------------------------------------------------------------

1.SMTP是工作在两种情况下:一是电子邮件从客户机传输到服务器;二是从某一个服务器传输到另一个 

  服务器 
2.SMTP是个请求/响应协议,命令和响应都是基于ASCII文本,并以CR和LF符结束。响应包括一个表示返  
  回状态的三位数字代码 
3.SMTP在TCP协议25号端口监听连接请求 
4.连接和发送过程: 
a.建立TCP连接 
b.客户端发送HELO命令以标识发件人自己的身份,然后客户端发送MAIL命令 
  服务器端正希望以OK作为响应,表明准备接收 
c.客户端发送RCPT命令,以标识该电子邮件的计划接收人,可以有多个RCPT行  
  服务器端则表示是否愿意为收件人接受邮件 
d.协商结束,发送邮件,用命令DATA发送 
e. 以.表示结束输入内容一起发送出去 
f.结束此次发送,用QUIT命令退出。 


5.另外两个命令: 
VRFY---用于验证给定的用户邮箱是否存在,以及接收关于该用户的详细信息。 
EXPN---用于扩充邮件列表。 

6.邮件路由过程: 
  SMTP服务器基于‘域名服务DNS中计划收件人的域名来路由电子邮件。SMTP服务器基于DNS中的MX记录 
来路由电子邮件,MX记录注册了域名和相关的SMTP中继主机,属于该域的电子邮件都应向该主机发送。 

若SMTP服务器mail.abc.com收到一封信要发到shuser@sh.abc.com: 

a.Sendmail请求DNS给出主机sh.abc.com的CNAME记录,如有,假若CNAME到shmail.abc.com,则再次 
请求shmail.abc.com的CNAME记录,直到没有为止 
b.假定被CNAME到shmail.abc.com,然后sendmail请求@abc.com域的DNS给出shmail.abc.com的MX记录, 
   shmail    MX   5   shmail.abc.com 
                  10   shmail2.abc.com 
c. Sendmail最后请求DNS给出shmail.abc.com的A记录,即IP地址,若返回值为1.2.3.4 
d. Sendmail与1.2.3.4连接,传送这封给shuser@sh.abc.com的信到1.2.3.4这台服务器的SMTP后台程序 

7.SMTP基本命令集: 

命令       描述 
------------------------------ 
HELO      向服务器标识用户身份 
          发送者能欺骗,说谎,但一般情况下服务器都能检测到。 

MAIL      初始化邮件传输 
          mail form : 
RCPT      标识单个的邮件接收人;常在MAIL命令后面 
          可有多个rcpt to: 
DATA      在单个或多个RCPT命令后,表示所有的邮件接收人已标识,并初始化数据传输,以.结束。 
VRFY      用于验证指定的用户/邮箱是否存在;由于安全方面的原因,服务器常禁止此命令 
EXPN      验证给定的邮箱列表是否存在,扩充邮箱列表,也常被禁用 
HELP      查询服务器支持什么命令 
NOOP      无操作,服务器应响应OK 
QUIT      结束会话 
RSET      重置会话,当前传输被取消 
-------------------------------- 

8. MAIL form 命令中指定的地址是称作 envelope form 地址,不需要和发送者自己的地址是一致的。 
   RCPT TO 与之等同,指明的接收者地址称为envelope to地址,而与实际的to:行是什么无关。 
9.为什么没有RCPT CC和RCPT BCC:? 
   所有的接收者协商都通过RCPT TO命令来实现,如果是BCC,则协商发送后在对方接收时被删掉信封接收者 
10.邮件被分为信封部分,信头部分和信体部分 
   envelope form , envelope to 与message form :, message to:完全不相干。 
   evnelope是由服务器主机间SMTP后台提供的,而message form /to是由用户提供的。有无冒号也是区别。 

11. 怎样由信封部分检查是否一封信是否是伪造的? 
a. received行的关联性。 
   现在的SMTP邮件传输系统,在信封部分除了两端的内部主机处理的之个,考虑两个公司防火墙之间 
   的部分,若两台防火墙机器分别为A和B,但接收者检查信封received:行时发现经过了C.则是伪造的。 
b. received:行中的主机和IP地址对是否对应如: 
   Receibed: form  galangal.org (turmeric.com [104.128.23.115] by mail .bieberdorf.edu.... 
c. 被人手动添加在最后面的received行: 
    Received: form  galangal.org ([104.128.23.115]) by mail .bieberdorf.edu (8.8.5) 
    Received: form  lemongrass.org by galangal.org (8.7.3) 
    Received: form  graprao.com by lemongrass.org (8.6.4) 

分享到:
评论

相关推荐

    C#邮件 功能实现教学 PPT

    6.1.2 SMTP基本命令 6.1.3 POP3基本命令 6.2 邮件收发相关的类 6.2.1 NetworkCredential类 6.2.2 MailAddress类 6.2.3 MailMessage类 6.2.4 Attachment 类 6.2.5 SmtpClient 类 6.3 收件收发举例 6.3.1 同步方式...

    电子邮件的基础知识 smtp协议

    基本命令 1、HELO HELO hostname 从客户端打开问候信息,使用SMTP服务器识别客户机的身份。但客户机 可随意修改这个hostname。存在安全问题,如果真要知道客户机的身份,可使用反向域名 解析系统,根据客户机的IP...

    Smtpclass1

    又一个支持SMTP的邮件发送类,这个支持用户登录 使你可以通过SMTP接口来自由的发送邮件. 它几乎支持了所有的基本命令,包括Helo,Ehlo,Mail,Rcpt,Data等. 也支持了Auth命令.(基本认证)

    cmd操作命令和linux命令大全收集

    CMD命令:开始->运行->键入cmd或command(在命令行里可以看到系统版本、文件系统版本) 命令大全 1. gpedit.msc-----组策略 2. sndrec32-------录音机 3. Nslookup-------IP地址侦测器 ,是一个 监测网络中 DNS...

    smtp-ubuntu18:Ubuntu的SMTP服务器设置

    当前在Ubuntu 18.04(LTS)x64上工作执行以下命令: sh setup.sh <your> <your> 这将使用Postfix在您的域上设置带有加密邮件的基本SMTP服务器。 注意:不要忘记添加到您的DNS管理服务器: A Record - @ - <vps> A ...

    curl命令详解(生成方法)

    curl命令详解 Curl是一款非常实用的数据传输工具,它支持多种协议,例如HTTP、FTP、SMTP等,可以通过命令行或脚本等方式使用。如果你需要访问指定的URL地址,只需要使用基本语法curl [options] [URL]即可。Curl还...

    计算机网络实验实验报告1.doc

    "计算机网络与通信实验报告(一) " "学 号 "姓 名 "班 级 "报告日期 " " " " " " "实验内容 " 网络常用命令的使用及DNS层次查询、SMTP协议分析 " "实验目的 "一. " " "1、掌握网络常用命令的使用; " " "利用网络...

    计算机网络实验实验报告.doc

    "计算机网络与通信实验报告(一) " "学 号 "姓 名 "班 级 "报告日期 " " " " " " "实验内容 " 网络常用命令的使用及DNS层次查询、SMTP协议分析 " "实验目的 "一. " " "1、掌握网络常用命令的使用; " " "利用网络...

    php网上留言管理系统的设计(源代码+LW)1.zip

    用户基本信息以及留言内容的录入 选择留言信息正常显示或仅管理员可见 选择管理员回复是否另外发送email给自己 发布功能: 显示留言者IP 显示滚动的系统公告 显示留言以及回复信息 屏蔽只有管理员可见的留言信息 ...

    imapcmdtun:从本地套接字到远程命令的隧道 imap 连接

    将 IMAP 和 SMTP 连接从本地套接字直接隧道和身份验证到远程预身份验证命令。 允许将需要套接字访问的 IMAP 和 SMTP 客户端(例如 Thunderbird)与无法通过直接连接到 IMAP 和 SMTP 套接字或使用邮件客户端不支持...

    intelligent-smtp-responder:这是一个基于电子邮件的智能代理服务器

    智能 smtp 应答器 ... 此代码松散地基于[Mailinator] ( ),因为它不支持所有 SMTP 命令,而是使用 ip 陷阱和超时来阻止垃圾邮件发送者和其他脚本或机器人,继续。 它还构成了 [TeamWork.io] ( ) 和 Web 服务使

    139邮箱pc客户端v2.6.1官方版.zip

    139邮箱pc客户端基本简介 139Mail 是一款专业的电子邮件客户端软件,用于收发和管理电子邮件。支持多个邮箱帐号管理;支持POP3、IMAP、SMTP等收发协议;支持139、QQ、163、263、sina、outlook、gmail等绝大多数的...

    Linux管理员指南

    SMTP 220 15.1 SMTP的基本原理 220 15.1.1 SMTP的基本实现过程 220 15.1.2 安全性 222 15.1.3 SMTP和POP的比较 223 15.1.4 推荐参考书 223 15.2 获得并安装Sendmail软件 224 15.2.1 下载...

    flask-mongo-app:这是使用Flask和MongoDB的基本Web应用程序的模板。 它使用Flask-Login进行身份验证,使用Flask-Pymongo进行数据库连接,使用Flask-Bcrypt进行密码哈希处理,并使用Flask-Talisman进行安全保护。 前端使用Bootstrap和Font Awesome。 该应用程序具有通过电子邮件进行用户验证,基本笔记记录以及用户之间的消息传递的功能

    使用Python Flask和MongoDB的基本Web应用程序的模板 这是使用Flask和MongoDB的基本Web... 使用终端命令运行应用程序: python run.py 现场例子 该应用程序已在进行了演示。 它本质上与存储库中的代码相同,但也使用Font

    pm-wicket-archetype:使用Wicket + Guice + Hibernate创建Web应用程序的模板

    打开您的终端并运行以下命令: mvn archetype:generate -DarchetypeGroupId=com.premiumminds -DarchetypeArtifactId=pm-wicket-archetype 接下来,将要求您填写以下属性: groupId应用程序工件的组标识 ...

    西工大计算机网络实验一题目及实验报告

    西工大计算机网络实验一题目及实验报告 基本网络命令 Windows 2003 Server 安装web服务、DNS服务和SMTP服务 Windows 2003 Server IIS配置 Windows 2003 Server DNS服务器配置 Windows 2003 Server邮件服务器配置

    postfix 权威指南

    序 前言 第一章 简介 Postfix的起源与...基于命令的过滤 基于守护进程的过滤 其他考虑事项 第十五章 外部数据库 MySQL LDAP 附录一 配置参数 附录二 Postfix支持工具 附录三 Postfix的编译与安装 附录四 问题集 索引

    Delphi网络通信协议分析与应用实现pdf清晰

    1.2 TCP/IP基本概念 1.2.1 IP地址 1.2.2 地址解析 1.2.3 域名系统 1.2.4 数据包的封装和分用 1.2.5 端口号 1.3 网络编程接口(Winsock API) 1.4 Winsock常用函数介绍 1.4.1 基本Socket函数 1.4.2 数据库函数...

    网络协议大全

    ARP协议 PPP(Point-to-Point Protocol点...SMTP协议原始命令码和工作原理 多协议标志交换(MPLS)基本原理 POP3 邮局协议-版本3 CIP 传输协议 802.1x协议解析 X.25 协议 XKMS协议介绍及其工作原理 技术简述

    Email_My_PC:远程监控电脑,也许一切只需要一封邮件

    Email_My_PC 通过邮件远程监控你的电脑下载截图使用指南引言本软件基本的使用流程是用户在软件中配置好自己的邮箱后即可通过给该邮箱发命令的方式来监视,控制计算机。具体操作如下:开启POP3 / SMTP服务用于接收...

Global site tag (gtag.js) - Google Analytics