邮件传输协议

文章目录

      • 邮件传输过程
        • 邮件的传输流程
        • Webmail
        • 使用邮件客户端收发邮件
        • 邮件服务器各组件关系图
      • SMTP协议
        • SMTP命令
        • SMTP应答码
        • SMTP传输流程图
        • 电子邮件的信息格式
        • MIME
        • 邮件报文示例
      • POP3协议
        • POP3命令
        • POP3连接
        • POP3客户和服务器会话例

邮件传输过程

邮件的传输流程

邮件传输协议_第1张图片

  • 通常,一封电子邮件的发送需要经过用户代理、客户端邮件服务器服务端邮件服务器等三个程序的参与,并使用邮件传输协议(SMTP,POP3或IMAP)来发送和获取邮件
    邮件传输协议_第2张图片
Webmail
  • 电子邮件从A发送到客户服务器是使用HTTP协议。两个邮件服务器之间的传送使用SMTP。邮件从服务端邮件服务器传送到B是使用HTTP协议。
    邮件传输协议_第3张图片
使用邮件客户端收发邮件

电子邮件从A发送到客户服务器是使用SMTP协议。连个邮件服务器之间的传送使用SMTP。B从服务端邮件服务器获取邮件使用POP3或IMAP协议。常见的邮件客户端有Foxmail,Outlook,Express等。
邮件传输协议_第4张图片
邮件传输协议_第5张图片

邮件服务器各组件关系图
  • MUA(MailUserAgent):用户代理,提供邮件编辑,查看功能;
  • MTA(MailTransferAgent):邮件传输代理,负责传送和接收邮件-
  • MDA(MailDiliveryAgent):邮件投递代理,负责将MTA接收到的
  • 邮件传递到用户邮箱或转递其他MTA,兼具有过滤功能。
    邮件传输协议_第6张图片

SMTP协议

  • SMTP使用客户/服务器方式,负责发送邮件的SMTP进程是SMTP客户,而负责接收邮件的SMTP进程是SMTP服务器,当两个进程建立了TCP连接后,电子邮件就能通过该标准准确无误地传输。
  • SMTP协议是基于文本的协议,通过SMTP发送地电子邮件都是普通文本格式的,不支持声音、图像等非文本信息,但可以通过MIME标准将此类信息进行编码后再通过SMTP传输
  • SMTP规定了14条命令和21种应答信息。每条命令用4个字母组成,而每一种应答信息一般只有一行信息,由一个3位数字的代码开始
SMTP命令

SMTP简捷,命令很少,常用的只有以下的8条命令,这些命令由客户端发送请求给服务端

命令 描述
HELO 用于启动邮件传输过程
MAIL FROM 用于标识发言人,为收信者回复时可用的电子邮件地址
RCPT TO 用于标识单个接收人,在MAIL命令后面可以有多个RCPT命令
DATA
QUIT 用于终止客户端与服务器之间的连接
RSET 用于中止当前的邮件事务并使两端复位
VRFY 用于验证指定的用户/邮箱是否存在,即验证接收方地址是否正确
NOOP 空操作命令
SMTP应答码

每一条SMTP命令都会返回一条SMTP响应,有服务端返回给客户端

代码 描述
211 系统状态或系统帮助响应
214 帮助信息
220 服务准备就绪
221 关闭连接
250 请求操作就绪
251 非本地用户,转发到
354 开始邮件输入,以.结束
421 服务不可用
450 操作未执行:邮箱忙
451 操作中止:本地错误
452 操作未执行:存储空间不足
500 命令不可识别或语法错
501 参数语法错
502 命令不支持
503 命令顺序错
504 命令参数不支持
550 操作未执行:邮箱不可用
551 非本地用户,请尝试
552 操作中止:存储空间不足
553 操作未执行:邮箱名不正确
554 传输失败
SMTP传输流程图

邮件传输协议_第7张图片

电子邮件的信息格式
  • 每一封电子邮件的结构格式为:
    报文头(Header)
    分隔邮件头与邮件体的空行
    报文体(Body)

  • 报文头是一些控制信息,它是由一系列的头字段组成,每个头字段的结构格式是:
    字段名(field-name): 字段体(field-body)

  • 包括收方和发方的地址,发送时间等,常用的头字段有:
    Date域:记录邮件发送日期(本地主机的日期和时间);
    Subject域:邮件主题;
    From域:发信人邮件地址;
    To域:收信人邮件地址;

    报文体是用户邮件内容,由用户自由撰写。但SMTP只支持传输7位ASCII码的英文字符,有很大局限性,后来邮件系统就扩展了MIME

MIME
  • MIME扩展了基本的面向文本的Internet邮件系统,在不改动现有邮件协议的情况下,实现了用标准的文本格式邮件传输非文本(二进制)数据的功能。MIME的原理是将二进制数据转化为文本格式,然后再进行传输
  • 邮件传输协议_第8张图片
  • MIME扩包括三部分内容:新增了5个首部字段名,这些字段提供了邮件的主题信息;新增了许多邮件内容,对多媒体的表示方法进行标准化;定义了编码方法,可对任何内容进行准换。
邮件报文示例

在这里插入图片描述

Date  :Wed,18Dec201312:32:22+0800
Subject   :hello
Message-ID:
From :"[email protected]"
To :[email protected]
MIME-Version:1.0
Content-Type:text/plain;charset=utf-8
Content-Transfer-Encoding:base64CnRoaXMgaXMgYSB0ZXN0IG1haWwuCgoK5Y+R6Ieq5oiR55qE5bCP57Gz5omL5py6.

POP3协议

  • POP是一种邮件接收协议,其作用是:当用户计算机与支持POP协议的电子邮件服务器连接时,把存储在该服务器的电子邮箱中的邮件准确无误地下载到用户的计算机中。POP3属于离线式协议,即不能对邮件进行在线操作,必须下载到本地才能进行处理。POP协议已发展到第三版,称作POP3。POP3与SMTP一样都是请求响应协议,命令与响应也都是用NVTASCII格式的文本表示。
  • POP3响应由一个状态码和其后的附加信息组成,只有两种状态码:“+OK”(正确)和“-ERR”(失败)

邮件传输协议_第9张图片

POP3命令
命令及格式 描述
USERusername 指定用户名
PASSpassword 指定密码
STAT 询问邮箱状态(如邮件总数和总字节数等)
LIST[Msg#] 列出邮件索引(邮件数量和每个邮件大小)RETR[Msg#]取回指定的邮件
DELE[Msg#] 删除指定的邮件
NOOP 空操作
RSET 重置所有标记为删除的邮件,用于撤销DELE命令
QUIT 提交修改并断开连接
POP3连接

在POP3中,客户端与服务器连接时有三种处理状态

  1. 身份验证状态
  2. 事务处理状态
  3. 更新状态
  • 当客户端连接到服务器的110端口,并建立起TCP连接后,即进入身份验证状态,需要使用USER和PASS命令将用户名和密码提供给服务器。
  • 通过身份验证之后,即转入事务处理状态,这时客户端可以发送POP3命令进行相应操作,服务器会接收命令并做出响应。
  • 操作完成之后,客户端发出QUIT命令,则进入更新状态,服务器确认用户的操作,更新邮件存储区,同时关闭客户端与服务器之间的连接
POP3客户和服务器会话例
S:<在TCP端口110等待连接>
C:<打开TCP连接> -telnet<服务器域名>110
S:+OK oarpop3serverready
C:USER  your_useridS:+OK your_useridiswelcomehere
C:PASS your_passwordS:+OKyour_userid’s maildrophas2messages (320octets)
S:.
C:STAT
S:+OK <邮件数量><总大小>
C:RETR  2
S:+OK 200octets
S:报文2的内容
S:.
C:DELE  2
S:+OK message2deleted
.......

你可能感兴趣的:(协议,SMTP,POP3)