选择分类: 系统FAQ 邮件安全 邮件发展 邮件协议 邮件流程 DNS解析 反垃圾邮件技术 业界应用 技术点滴  
 

 

  系统FAQ
  邮件安全
  邮件发展
  邮件协议
  邮件流程
  DNS解析
  反垃圾邮件技术
  业界应用
  技术点滴
 
  知识库 - SMTP协议简介

  SMTP协议简介

     SMTP (Simple Mail Transfer Protocol)协议是为了保证电子邮件的可靠和高效传送。TCP/IP 协议的应用层中包含有SMTP协议,但事实上它与传输系统和机制无关,仅要求一个可靠的数据流通道。它可以工作在TCP上,也可以工作在NCP,NITS 等协议上。在TCP上,它使用端口25进行传输。SMTP的一个重要特点是可以在可交互的通信系统中转发邮件。

  SMTP的模型

  SMTP提供了一种邮件传输的机制,当收件方和发件方都在一个网络上时,可以把邮件直传给对方;当双方不在同一个网络上时,需要通过一个或几个中间服务器转发。SMTP首先由发件方提出申请,要求与接收方SMTP建立双向的通信渠道,收件方可以是最终收件人也可以是中间转发的服务器。收件方服务器确认可以建立连接后,双发就可以开始通信。

   发件方SMTP向收件方发处mail命令,告知发件方的身份;如果收件方接受,就会回答OK。发件方再发出RCPT命令,告知收件人的身份,收件方SMTP确认是否接收或转发,如果同意就回答OK;接下来就可以进行数据传输了。通信过程中,发件方SMTP与收件方SMTP 采用对话式的交互方式,发件方提出要求,收件方进行确认,确认后才进行下一步的动作。整个过程由发件方控制,有时需要确认几回才能够完成。

   SMTP协议共包含10个SMTP命令:

   HELLO<domain><CRLF>识别发送方到接收SMTP的一个HELLO命令

   MAILFROM:<reverse-path><CRLF><reverse-path>为发送者的地址。此命令告诉接收方一个新邮件发送的开始,并对所有的状态和缓冲区进行初始化。此命令开始一个邮件传输处理,最终完成将邮件数据传送到一个或多个邮箱中

   RCPTTO:<forward-path><CRLF><forward-path>标识各个邮件接收者的地址

   DATA<CRLF>

   接收SMTP将把其后的行为看作邮件数据去处理,以<CRLF>.<CRLF>标识数据的结尾

   REST<CRLF>退出/复位当前的邮件传输

   NOOP<CRLF>要求接收SMTP仅做OK应答。(用于测试)

   QUIT<CRLF>要求接收SMTP返回一个OK应答并关闭传输

   VRFY<string><CRLF>验证指定的邮箱是否存在,由于安全因素,服务器多禁止此命令

   EXPN<string><CRLF>验证给定的邮箱列表是否存在,扩充邮箱列表,也常禁止使用

   HELP<CRLF>查询服务器支持什么命令

   注:<CRLF>为回车、换行,ASCII码分别为13、10(十进制)

   SMTP协议的每一个命令都会返回一个应答码,应答码的每一个数字都是有特定含义的,如第一位数字为2时表示命令成功;为5表失败;3表没有完成。一些较复杂的邮件程序利用该特点,首先检查应答码的首数字,并根据其值来决定下一步的动作。

  SMTP的应答码列表如下:

   501参数格式错误

   502命令不可实现

   503错误的命令序列

   504命令参数不可实现

   211系统状态或系统帮助响应

   214帮助信息

   220<domain>服务就绪

   221<domain>服务关闭

   421<domain>服务未就绪,关闭传输信道

   250要求的邮件操作完成

   251用户非本地,将转发向<forward-path>

   450要求的邮件操作未完成,邮箱不可用

   550要求的邮件操作未完成,邮箱不可用

   451放弃要求的操作;处理过程中出错

   551用户非本地,请尝试<forward-path>

   452系统存储不足,要求的操作未执行

   552过量的存储分配,要求的操作未执行

   553邮箱名不可用,要求的操作未执行

   354开始邮件输入,以"."结束