应用层——电子邮件(SMTP、POP3、IMAP)

这篇具有很好参考价值的文章主要介绍了应用层——电子邮件(SMTP、POP3、IMAP)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

1. 电子邮件系统及组成结构

1.1 电子邮件 

1.2 电子邮件系统的组件 

2. SMTP(邮件发送协议)

2.1 SMTP的特征 

2.2 SMTP的基本操作 

2.3 SMTP协议的基本流程

2.4 SMTP交互与应答

2.5 SMTP与HTTP的对比 

3. 邮件报文格式与MIME

3.1 电子邮件格式 

3.2 多用途网际邮件扩充-MIME

4. 邮件访问协议

4.1 POP3

4.2 IMAP 

4.3 基于Web的电子邮件 


1. 电子邮件系统及组成结构

1.1 电子邮件 

电子邮件自因特网诞生以来已经成为最为流行的应用程序,时至今日,仍然是最为重要和实用的互联网应用之一

与普通邮件一样,电子邮件是一种异步通信方式,不像电话等通信方式必须通信双方同时在场,发送方可以在任意时间发送邮件,接收方也可以在任意时间接收邮件

pop3/smtp/imap,计算机网络,网络,服务器,运维

电子邮件较普通邮件更为快速而且易于分发,价格便宜。现代电子邮件具有许多强大的特性,包括具有附件、超链接、HTML格式文本和图片的报文 

1.2 电子邮件系统的组件 

一个电子邮件系统的组成构件

pop3/smtp/imap,计算机网络,网络,服务器,运维

主要有三个组成部分:

  • 用户代理(user agents,UA)
  • 邮件服务器(mail servers)
  • 简单邮件传输协议(Simple Mail Transfer Protocol,SMTP)

电子邮箱的工作方式和寄快递类似

  1. 首先找一个跑腿小哥(相当于用户代理)帮你去寄东西,你要先把发件人收件人信息填好(邮箱地址)
  2. 跑腿小哥将你的东西拿到寄件处(邮件服务器)准备邮寄
  3. 寄件处帮你把物品寄出去,通过物流(相当于传输协议)运往目的地
  4. 物品到达收件人的寄件处(对方的邮件服务器)
  5. 收件人也叫了一个跑腿小哥(对方的用户代理)将东西取回来

用户代理:用户和电子邮件系统的接口

用户代理简单来说就是一个程序,如QQ邮箱、Outlook等。通常具有撰写、显示和处理邮件的功能

邮件服务器:用于发送和接受邮件,先发信人报告邮件传送的情况 ,一个邮件服务器可能有多个代理

是电子邮件体系结构的核心。它采用C/S结构, 但它必须要能够同时充当服务器和客户端

邮件服务器有两个功能:

  • 邮箱:存储发给该用户的Email 
  • 消息队列(message queue):存储等待发送的Email

简单邮件传输协议:用于完成邮件在邮件服务器之间的传输

SMTP是因特网电子邮件中主要的应用层协议,邮件服务器之间传递消息所使用的协议

pop3/smtp/imap,计算机网络,网络,服务器,运维

一个典型的邮件发送的例子是:

  • 发送方通过用户代理将邮件传输到A用户的邮件服务器
  • 由A的邮件服务器传输到B的邮件服务器
  • 然后该邮件被分发到接受方的邮箱中

通常,如果发送方的服务器不能完成邮件的传输,那么邮件就在发送方的邮件服务器的消息队列中排队,一段时间后(一般是30分钟)再尝试发送

2. SMTP(邮件发送协议)

2.1 SMTP的特征 

SMTP协议定义在[RFC 5321]中,用于从发送方的邮件服务器发送报文到接受发的邮件服务器,它最典型的特征有:

  • 使用TCP进行email消息的可靠传输
  • 端口25
  • 传输过程的三个阶段——握手、消息传输、关闭
  • Email消息只能包含7位ASCII码
  • 使用命令/响应交互模式
    命令(command): ASCII文本
    响应(response): 状态代码和语句

2.2 SMTP的基本操作 

举一个例子来描述SMTP的基本操作,假设左边的用户是Alice,右边的用户是Bob:

pop3/smtp/imap,计算机网络,网络,服务器,运维

  1. Alice首先通过她的用户代理写了一封邮件,并且在邮件中填上Bob的邮件地址
  2. 然后这封邮件被用户代理发送到Alice的邮件服务器上,这一过程中这封邮件需要在服务器中排队
  3. Alice邮件服务器上的SMTP客户端在报文队列中发现有邮件要发送,与Bob的邮件服务器建立一条TCP连接
  4. 经过一些SMTP握手后,SMTP客户端通过该TCP连接发送邮件
  5. 邮件被传送到Bob的邮件服务器上
  6. Bob随时可以来读取邮件

值得注意的是:

SMTP一般不使用中间邮件服务器发送邮件,也就是说即使邮件的发送者和接收者相距再远,中间所隔的网络再复杂,SMTP也总是倾向于建立起一条直连发送方和接受方的TCP连接

2.3 SMTP协议的基本流程

SMTP将一个报文从发送邮件服务器传送到接收邮件服务器的过程:

1️⃣ 客户SMTP(运行在发送邮件服务器主机上)在25号端口,建立一个到服务器SMTP(运行在接受邮件服务器主机上)的TCP连接

pop3/smtp/imap,计算机网络,网络,服务器,运维

2️⃣ SMTP的客户和服务器在传输信息前要向对方“打招呼并先介绍自己”,在SMTP的握手阶段,SMTP客户指示发送方的邮件地址和接受发的邮件地址SMTP的客户和服务器彼此介绍后,客户发送报文

pop3/smtp/imap,计算机网络,网络,服务器,运维

3️⃣ 如果SMTP客户还有别的邮件要发送到这台服务器,就继续发送,否则关闭TCP连接

2.4 SMTP交互与应答

SMTP交互与应答整体过程 

pop3/smtp/imap,计算机网络,网络,服务器,运维

💠 首先,当TCP连接建立后,最开始由接受方邮件服务器进行交互,发送一条服务就绪应答给客户邮件服务器,应答代码为220

pop3/smtp/imap,计算机网络,网络,服务器,运维

💠 SMTP客户收到该应答后,以HELO(HELLO的缩写)进行应答,同时带上自己的域名

pop3/smtp/imap,计算机网络,网络,服务器,运维

💠 SMTP服务器若认为身份有效,则发回应答代码:250

pop3/smtp/imap,计算机网络,网络,服务器,运维

💠 SMTP客户收到该应答后,使用命令 MAIL FROM 来告诉服务器该邮件来自何方,用MAIL FROM指明发件人邮箱地址

pop3/smtp/imap,计算机网络,网络,服务器,运维

💠 服务器认为命令合理,则发回应答代码:250

pop3/smtp/imap,计算机网络,网络,服务器,运维

💠 SMTP客户收到该应答后,使用命令 RCPT TO 告诉服务器邮件去往何地,也就是收件人邮箱

pop3/smtp/imap,计算机网络,网络,服务器,运维

💠 服务器中若有该收件人邮箱(确认是否存在代理),则发回应答代码250

pop3/smtp/imap,计算机网络,网络,服务器,运维

💠 SMTP客户收到该应答后,使用 DATA 命令来告诉服务器自己准备发送邮件内容了

pop3/smtp/imap,计算机网络,网络,服务器,运维

 💠 SMTP服务器准备对该邮件进行接受,发回应代码:354

pop3/smtp/imap,计算机网络,网络,服务器,运维

💠 SMTP客户收到该应答,发送邮件

pop3/smtp/imap,计算机网络,网络,服务器,运维

💠 最后发送结束符CRLF.CRLF来结束邮件的发送

pop3/smtp/imap,计算机网络,网络,服务器,运维

💠 服务器成功收到邮件,应答:250

pop3/smtp/imap,计算机网络,网络,服务器,运维

💠 SMTP客户收到该应答后,使用命令 QUIT 向服务器请求断开连接

pop3/smtp/imap,计算机网络,网络,服务器,运维

💠服务器发回应答代码 221表示接受请求并主动断开连接

pop3/smtp/imap,计算机网络,网络,服务器,运维

下面给出一个SMTP客户(以C代表)和一个SMTP服务器(以S代表)之间交换报文文本的例子

S: 220 hamburger.edu                                          (服务就绪应答)
C: HELO crepes.fr                                                (客户收到应答,打招呼并给出自己的域名)
S: 250 Hello crepes.fr, pleased to meet you         (域名有效,问好)
C: MAIL FROM: <alice@crepes.fr>                      (给出发件人邮箱地址)
S: 250 alice@crepes.fr ... Sender ok                    (发件人合理,给出应答)
C: RCPT TO: <bob@hamburger.edu>                  (给出收件人邮箱地址)
S: 250 bob@hamburger.edu ... Recipient ok        (收件人合理,给出应答)
C: DATA                                                                 (客户即将发送数据)
S: 354 Enter mail, end with “.” on a line by itself   (服务器准备接受)
C: Do you like ketchup?                                         (邮件内容)
C: How about pickles?                                           (...)
C: .                                                                         (邮件结束)
S: 250 Message accepted for delivery                   (服务器成功收到邮件)
C: QUIT                                                                  (客户即将断开连接)
S: 221 hamburger.edu closing connection             (服务器断开连接)

2.5 SMTP与HTTP的对比 

SMTP HTTP
连接方式 持续连接 持续连接
获取信息方式 推式(PUSH) 拉式(PULL)
交互模式 命令/响应 命令/响应
命令和状态码 ASCII码 ASCII码
对象的封装 多个对象在由多个
部分构成的消息中发送
每个对象封装在独
立的响应消息中

3. 邮件报文格式与MIME

3.1 电子邮件格式 

一个电子邮件分为信封内容两大部分,邮件内容又分为首部主体两部分

  • [RFC 5322]规定了邮件的首部格式,用户要按照格式填写首部内容
  • 主体部分由用户自由撰写(邮件正文)
  • 信封无需用户填写,邮件系统自动从用户填写的首部中提取所需信息并写在信封上

一个典型的邮件内容首部如下

From: alice@crepes.fr
To: bob@hamburger.edu
Subject: Searching for the meaning of life. 

邮件内容的首部包含一些首部行,格式为 [关键字 :值],有些关键字是必须的,有些是可选的。最重要的是To:和Subject:

  • To是必需的关键字,后面填入一个或多个收件人的邮件地址,电子邮件地址的规定格式为:收件人邮箱名@邮箱所在主机的域名,如abc@mail.com,其中收件人邮箱名即用户名,abc在mail.com这个邮件服务器上必须是唯一的
  • Subject是可选关键字,是邮件的主题,反应了邮件的主要内容
  • From也是必需的关键字,但它由邮件系统自动填入

pop3/smtp/imap,计算机网络,网络,服务器,运维

首部和报文主体之间由空行进行分隔,报文主体以ASCII格式表示 

3.2 多用途网际邮件扩充-MIME

MIME-多用途网际邮件扩充(Multipurpose Internet Mail Extensions)定义在[RFC 2045, 2056],用于解决SMTP只能传输7位ASCII码的问题

SMTP只能传输一定长度的ASCII码邮件,对于其他国家的文字、二进制文件和可执行文件都无法传送,MIME就是对SMTP的一种扩展,它并没有改变SMTP或取而代之,相反它继续使用SMTP的格式,但增加了邮件的主体结构,并定义了传送非ASCII码的编码规则

MIME通过在邮件首部增加额外的行以声明MIME的内容类型

pop3/smtp/imap,计算机网络,网络,服务器,运维

MIME主要包括以下三部分内容

  • 5个新的邮件首部字段——MIME版本、内容描述、内容标识、传送编码和内容类型
  • 定义了许多邮件内容的格式,对多媒体电子邮件的表示方法进行了标准化
  • 定义了传输编码,可对任何内容格式进行转换,而不会被邮件系统改变

MIME是工作在SMTP之上的,对于非ASCII码的内容,先通过MIME以一定编码规则转化成ASCII码,再交由SMTP传送,在接受端的MIME中被还原

pop3/smtp/imap,计算机网络,网络,服务器,运维

实际上,MIME不仅仅用于SMTP,也用于后来的同样面向ASCII字符的HTTP

4. 邮件访问协议

SMTP完成的是发送方的用户代理→发送方邮件服务器,发送方邮件服务器到接受方邮件服务器之间的传送,接受方用户从自己的邮件服务器中将邮件取回本地则使用邮件访问协议

pop3/smtp/imap,计算机网络,网络,服务器,运维

4.1 POP3

邮局协议(Post Office Protocol, POP)是一个非常简单但功能有限的邮件读取协议,由[RFC 1939]定义,现在使用的是它的第三个版本POP3

当用户代理(客户)打开一个到邮件服务器端口110上的TCP连接后,POP3就开始工作了,分为三个阶段

  1. 特许( authorization ):用户代理以明文形式发送用户名和口令以鉴别用户(我理解为输入用户名和密码进行登录)
  2. 事务处理( transaction ):用户从邮件服务器取回报文
  3. 更新( update ):出现在客户发出quit命令之后,目的是结束POP3会话并删除一删除标记的邮件

pop3/smtp/imap,计算机网络,网络,服务器,运维

POP3的主要特征

  • 采用"PULL"拉式进行通信,拉取用户邮箱中的邮件
  • 使用C/S结构,在传输层使用TCP,端口号为110
  • POP3是无状态的
  • 有两种工作方式 —— “下载并保留” 和 “下载并删除”

下载并删除:用户如果换了客户端软件,无法重读该邮件

下载并保留:不同客户端都可以保留消息的拷贝 

但正是由于POP3的简单性,使得它无法完成更多功能,如不允许用户在邮件服务器上管理自己的邮件(例如创建文件夹,对邮件进行分类管理等)

4.2 IMAP 

因特网报文存取协议(Internet Message Access Protocol, IMAP),由[RFC 3501]定义,主要解决了POP3无法为用户提供在远程服务器管理邮件服务的问题

IMAP与POP3有许多相似的地方,例如它们都使用TCP连接,都使用客户-服务器结构,但IMAP比POP3复杂得多,因此功能也更强大,它为用户提供了创建文件夹、在不同文件夹之间移动邮件以及在远程文件夹中查询邮件等联机命令,为此IMAP服务器维护了会话用户的状态信息

IMAP的另一特性是允许用户代理只获取报文的某些部分,例如可以指读取一个报文首部,或多部分MIME报文的一部分,这尤其适用于低带宽的情况

IMAP的主要特点有

  • 所有消息统一保存在一个地方:服务器
  • 允许用户利用文件夹组织消息
  • 支持跨会话(Session)的用户状态:文件夹名字,文件夹与消息ID之间的映射 

4.3 基于Web的电子邮件 

随着万维网的流行,目前出现了许多基于万维网的电子邮件,如Hotmail、Gmail等

使用这种电子邮件相较于前面所说的有两种改变

  • 用户代理由邮件客户端程序变成了普通的浏览器
  • 用户和本地邮箱服务器之间的通信通过HTTP进行

发送方的用户代理(浏览器)将邮件传送到发送方的邮件服务器时,使用的是HTTP而非SMTP;接受发从接受发的邮件服务器将邮件读取到本地也使用HTTP而非POP3或IMAP,但在邮箱服务器与邮箱服务器之间进行的传送,总是使用SMTP

pop3/smtp/imap,计算机网络,网络,服务器,运维

最终,我们所得到的电子邮件传送过程可表示为

pop3/smtp/imap,计算机网络,网络,服务器,运维文章来源地址https://www.toymoban.com/news/detail-714156.html

到了这里,关于应用层——电子邮件(SMTP、POP3、IMAP)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于 ESP32 通过 SMTP 服务器 来发送电子邮件信息

    电子邮件在全球范围内被用作数字通信的重要组成部分。电子邮件主要用于官方通信目的,因为它最方便、成本效益高、保存记录、覆盖全球且环保。电子邮件是一种非常快捷的通信方式,只是您需要稳定的互联网连接。 在这个项目中,我们将使用ESP32开发板发送电子邮件(

    2024年02月07日
    浏览(86)
  • 常见应用层协议端口号及简介【HTTP80、FTP20(数据连接)21(控制连接)、POP3 110、DNS 53、TFTP文件传输协议 69】、http无状态、http的压缩传输

    目录 一、常见应用层协议 我们先看一下其常用协议的端口号: HTTP(hypertext transfer protocol)超文本传输协议(80) HTTPS(secure hypertext transfer protocol)安全文本传输协议(443) FTP(file transfer protocol)文件传输协议(21) TELNET(terminal NETwork)远程登录(端口号23) SMTP简单邮件

    2023年04月08日
    浏览(52)
  • 电子邮件营销模板怎么写?如何做营销邮件?怎么设计EDM邮件模板?

    推荐的电子邮件营销模板有哪些?   电子邮件营销模板是现代营销策略中的重要组成部分。通过精心设计的邮件模板,您可以有效地吸引客户,传达信息,并提高销售率。在本文中,我们将介绍如何撰写出色的电子邮件营销模板,让您的营销活动更具吸引力。 电子邮件营销

    2024年02月11日
    浏览(53)
  • 电子邮件服务器

    目录 一、相关知识 二、邮件服务器种类 三、邮件传输协议 四、DNS中的MX记录 五、电子邮件系统工作原理 六、配置文件相关参数 七、邮件服务器配置案例 7.1设置用户别名邮箱 7.2空壳邮件服务器 一、相关知识 1、电子邮箱系统三个组成部分 MUA(telnet):邮件用户代理。主要用

    2024年02月10日
    浏览(69)
  • 垃圾邮件、欺骗和网络钓鱼,如何防止电子邮件安全意识的威胁

    网络安全意识月已过半,本周我们的重点是电子邮件安全意识。 在我们最近为此活动撰写的一篇博客中,我们介绍了电子邮件系统面临的一些最严重的危险——包括垃圾邮件、欺骗和网络钓鱼——以及用户如何主动在他们的电子邮件中发现这些攻击并采取措施避免它们。  零

    2024年02月02日
    浏览(61)
  • GitHub帐户管理更改电子邮件

    登录到您的 GitHub 帐户: 前往 GitHub 网站并使用您的凭据登录。 访问个人设置: 单击右上角的您的头像,然后选择“Settings”(设置)。 选择电子邮件选项卡: 在左侧边栏中选择“Emails”(电子邮件)选项卡。 添加新电子邮件地址: 在“Primary email address”(主电子邮件地址

    2024年02月03日
    浏览(57)
  • 使用Python实现发送Email电子邮件【第19篇—python发邮件】

    导入必要的模块 : 导入 smtplib 用于处理 SMTP 功能的模块,以及从 email 模块导入构建电子邮件消息所需的各个组件。 定义 send_email 函数 : 创建一个名为 send_email 的函数,该函数接受 SMTP 服务器详细信息、发件人和收件人信息、主题、内容和附件等参数。 格式化发件人地址

    2024年02月03日
    浏览(71)
  • 计算机网络笔记:电子邮件概述

    电子邮件概述 :电子邮件把邮件发送到收件人使用的邮件服务器,并放在其中的收件人邮箱中,收件人可以在自己方便时上网到自己使用的邮件服务器进行读取。 电子邮件最重要的两个草案标准 :简单邮件传送协议SMTP和互联网文本报文格式。 通用互联网邮件扩充MIME :MI

    2024年02月11日
    浏览(47)
  • [计算机网络] 实验 5 电子邮件

    实验目的 1、实验目的 理解电子邮件系统基本结构 理解客户端和服务器端,以及服务器之间的通信 分析理解 SMTP,POP3 协议 客户端绑定邮箱 点击邮箱账户 开启POP/SMTP, 这里会给一个叫做 授权码 的东西,需要好好保存,我是直接丢班群里的 点击如何设置 下载 Foxmail 登录 QQ邮箱完

    2024年02月06日
    浏览(67)
  • 【信息安全原理】——电子邮件安全(学习笔记)

    📖 前言:电子邮件(Email)是因特网上被广泛使用的一种网络应用,即使在互联网高度发达的今天,人们有了大量的诸如微信、QQ等社交软件来交换信息,但它仍然是个人和商务活动中一种重要的信息交换工具。本章介绍电子邮件安全,主要包括电子邮件安全问题分析、安全

    2024年02月02日
    浏览(58)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包