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要求发件方必须提供接收方的服务器及邮箱。邮件的命令和答复有严格的语法定义,并且回复具有相应的数字代码。所有的命令由ASCII码组成。命令代码是大小写无关的,如MAIL和 mail ﹑mAIL是等效的。
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
邮件最后被对方接受。

电子邮件的工作原理
电子邮件与普通邮件有类似的地方,发信者注明收件人的姓名与地址(即邮件地址),发送方服务器把邮件传到收件方服务器,收件方服务器再把邮件发到收件人的邮箱中
更进一步的解释涉及到以下几个概念:
MUA -- Mail User Agent, 邮件用户代理,帮助用户读写邮件;
MTA -- Mail Transport Agent, 邮件传输代理,负责把邮件由一个服务器传到另一个服务器或邮件投递代理;
MDA -- Mail Delivery Agent, 邮件投递代理,把邮件放到用户的邮箱里。

电子邮件工作原理简介(个人整理)相关推荐

  1. Google搜索引擎工作原理简介

    实在是写不出来高质量的原创文章,今天再次转载一篇网络上看到的文章吧,叫Google搜索引擎工作原理简介,其中比较详细的介绍和分析了google搜索引擎相关工作机制,下面是原文内容: 这篇文章是基于Go ...

  2. 电子邮件工作原理_美丽HTML电子邮件原理

    电子邮件工作原理 As web designers, we're used to designing for the particular constraints and capabilities o ...

  3. javascript原理_JavaScript程序包管理器工作原理简介

    javascript原理 by Shubheksha 通过Shubheksha JavaScript程序包管理器工作原理简介 (An introduction to how JavaScript pa ...

  4. Nginx 反向代理工作原理简介与配置详解

    Nginx 反向代理工作原理简介与配置详解 测试环境 CentOS 6.8-x86_64 nginx-1.10.0 下载地址:http://nginx.org/en/download.html 安装 ...

  5. 电容降压工作原理简介

    电容降压工作原理简介 分类: 基础电路2009-04-16 16:42466人阅读评论(0)收藏举报 工作 电容降压的工作原理并不复杂.他的工作原理是利用电容在一定的交流信号频率下产生的容抗来限制最大 ...

  6. 电子邮件服务器的工作原理,电子邮件工作原理 电子邮件有什么特点呢

    电子邮件是交流信息的一种通信方式,可以用来传输文件和图片,还是非常方便的.很多人对电子邮件的工作原理感到好奇,电子邮件工作原理是怎样的?电子邮件有什么特点呢? 电子邮件工作原理 电子邮件工作原理 电子 ...

  7. 什么叫机械硬盘_机械硬盘的工作原理是什么?硬盘的工作原理简介

    机械硬盘的工作原理是什么?硬盘的工作原理简介 每个硬盘都有一块电路板,电路板主要负责与电脑进行通讯,并控制管理整个硬盘的工作,电路板可以说是硬盘的控制部门.由于个别硬盘电路设计不良,或芯片的质量不好, ...

  8. Appium工作原理简介

    Appium工作原理 一.Appium简介 Appium是一个开源.跨平台的自动化测试工具,用于测试原生和轻量移动应用,支持 iOS, Android 和 FirefoxOS 平台.Appium驱动苹 ...

  9. Hibernate的发展和特点以及Hibernate的工作原理简介

    1.Hibernate的发展和特点: (1).Hibernate介绍:Hibernate是封装了JDBC的一种开放源代码的对象/关系映射(ORM Object-Relatiion Mapping)框架 ...

  10. 传感器工作原理_荧光氧气传感器工作原理简介

    冷发光是一种电子激发的物质在激发时发出的紫外线(UV).可见光(Vis)和红外线(IR)光.而光的吸收和发射之间的过程通常用一个能量级图来说明,即雅布朗斯基图.下面工采网小编通过光学原理给大家说说荧光 ...

最新文章

  1. 学python要多少钱-培训python大概要多少钱?
  2. Jira 6.0.5的详细安装及汉化授权
  3. HDU 1180 诡异的楼梯(超级经典的bfs之一,需多回顾)
  4. JAVA复习5(集合——集合的遍历 Iteratorforeach、Enumeration——HashMap、HashTable、LinkedHashMap——map的遍历)
  5. 一个古怪的VISTA网络问题解决的坎坷经历
  6. 【转】3.4SharePoint服务器端对象模型 之 访问文件和文件夹(Part 4)
  7. php查询变量类型,php判断变量类型常用方法
  8. 用python做简单的地理聚类分析案例_用Python做一个简单的翻译工具
  9. 【java学习之路】(java SE篇)(练习)关于常用类的心血来潮小练习
  10. ctf杂项各类编码汇总
  11. hive之经典sql面试题
  12. php怎么写书店系统,基于PHP技术的新华在线购书店系统
  13. 使用esxcli命令升级VMware ESXi补丁
  14. sagemath_同余运算总结
  15. magicbook linux系统换w7,荣耀 MagicBook U盘装系统win7教程
  16. python程序turtle雪人_用turtle画一个雪人
  17. 微信小程序云开发初步上手
  18. 最简单的存储过程写法及调用
  19. MySQL安装 忘记密码
  20. 据说程序员写完代码是这个样子,99%的人都中枪了

热门文章

  1. Bus hound USTS
  2. 软件工程专业的论文答辩_软件工程专业本科毕业答辩?
  3. 工业4.0智能电批扭力输出异常问题
  4. cad编辑节点快捷键是什么_CAD所有快捷键
  5. Oracle 定时任务详解(dbms_job)
  6. lisp 多段线转面域_CAD自定义线型,lisp多段线绘制方向 | 伙计百科
  7. 如何基于Debian部署UBNT Unifi控制器?
  8. 计算机usb接口失灵,如何解决电脑USB接口失灵的问题
  9. thinkphp 中英文网站详解
  10. Spring 中常用注解原理剖析