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

2023-10-30

目录

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 电子邮件 

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

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

9a12410c9626890cbcb9b373ca20fdb2.png

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

1.2 电子邮件系统的组件 

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

fb569ca2ac194a5184e43dc8acad019c.png

主要有三个组成部分:

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

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

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

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

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

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

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

邮件服务器有两个功能:

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

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

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

145ed093f04b4a73b10b328327bdf78c.png

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

  • 发送方通过用户代理将邮件传输到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:

5719ecc9bdc1471d952e46e4fdb4a958.png

  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连接

c71b7e2454dead9e6c79acef11733b8f.png

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

76dc4cd76d7121264c5e6a01e74d699f.png

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

2.4 SMTP交互与应答

SMTP交互与应答整体过程 

5e828cd628871493519ba675a7cf721c.png

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

应用层——电子邮件(SMTP、POP3、IMAP) 的相关文章

  • Linux 软件安装以及管理

    本篇主要记录常用的软件安装和管理方式 主要是 yum rpm dnf apt pip 大致都是一样的 主要是部分软件提供了解决依赖的功能 内容不包括源码安装 源码安装情况相对比较复杂 后续有时间再补充 约定 案例所用模板软件均为 pytho
  • 这些专利知识你知道吗?

    专利作为一种重要的知识产权保护形式 专利不仅成为了企业核心竞争力的重要组成部分 也成为了国家创新发展的重要支撑 专利是指国家专利主管机关授予发明创造申请人的一种专有权 这种专有权具有独占性 排他性和法律强制性 能够为持有者带来经济利益和竞争
  • 如何解读服务器的配置和架构?

    在当今数字化时代 服务器作为企业或组织的重要基础设施 其配置和架构对于保障业务的稳定运行至关重要 如何解读服务器的配置和架构 成为了一个备受关注的话题 本文将围绕服务器配置和架构的解读进行深入探讨 帮助读者更好地理解服务器的性能 扩展性和安
  • 使用Hypothesis生成测试数据

    Hypothesis是Python的一个高级测试库 它允许编写 测试用例 时参数化 然后生成使测试失败的简单易懂的测试数据 可以用更少的工作在代码中发现更多的bug 安装 pip install hypothesis 如何设计 测试数据 通
  • 【CTF必看】从零开始的CTF学习路线(超详细),让你从小白进阶成大神!

    最近很多朋友在后台私信我 问应该怎么入门CTF 个人认为入门CTF之前大家应该先了解到底 什么是CTF 而你 学CTF的目的又到底是什么 其次便是最好具备相应的编程能力 若是完全不具备这些能力极有可能直接被劝退 毕竟比赛的时候动不动写个脚本
  • Jenkins流水线怎么做?

    问CHAT Jenkins流水线怎么做 CHAT回复 Jenkins流水线是一种创建 测试和部署应用程序的方法 以下是为Jenkins创建流水线的步骤 1 安装Jenkins 首先你需要在你的服务器上安装Jenkins 这个过程可能会根据你
  • 如何利用CHAT做简单的总结体会?

    问CHAT 在测试过程中使用appium python自动化的优点和体会 CHAT回复 使用 Appium 配合 Python 进行自动化测试主要有以下几点优点 1 跨平台性 Appium 支持 iOS 和 Android 平台的应用自动化
  • 5个步骤,教你瞬间明白线程和线程安全

    记得今年3月份刚来杭州面试的时候 有一家公司的技术总监问了我这样一个问题 你来说说有哪些线程安全的类 我心里一想 这我早都背好了 稀里哗啦说了一大堆 他又接着问 那你再来说说什么是线程安全 然后我就GG了 说真的 我们整天说线程安全 但是对
  • SRC漏洞挖掘经验+技巧篇

    一 漏洞挖掘的前期 信息收集 虽然是前期 但是却是我认为最重要的一部分 很多人挖洞的时候说不知道如何入手 其实挖洞就是信息收集 常规owasp top 10 逻辑漏洞 重要的可能就是思路猥琐一点 这些漏洞的测试方法本身不是特别复杂 一般混迹
  • 前端必备的 web 安全知识手记

    前言 安全这种东西就是不发生则已 一发生则惊人 作为前端 平时对这方面的知识没啥研究 最近了解了下 特此沉淀 文章内容包括以下几个典型的 web 安全知识点 XSS CSRF 点击劫持 SQL 注入和上传问题等 下文以小王代指攻击者 话不多
  • WEB前端常见受攻击方式及解决办法总结

    一个网址建立后 如果不注意安全问题 就很容易被人攻击 下面讨论一下集中漏洞情况和放置攻击的方法 一 SQL注入 所谓的SQL注入 就是通过把SQL命令插入到web表单提交或输入域名或页面请求的查询字符串 最终达到欺骗服务器执行恶意的SQL命
  • Linux终端常见用法总结

    熟悉Linux终端的基础用法和常见技巧可以极大提高运维及开发人员的工作效率 笔者结合自身学习实践 总结以下终端用法供同行交流学习 常 见 用 法 1 快捷键 1 1 Alt 在光标位置插入上一次执行命令的最后一个参数 1 2 Ctrl R
  • Jenkins 插件下载速度慢、安装失败了!我教你怎么解决!

    Jenkins部署完毕 如果不安装插件的话 那它就是一个光杆司令 啥事也做不了 所以首先要登陆管理员账号然后点击系统管理再点击右边的插件管理安装CI CD必要插件 但是问题来了 jenkins下载插件速度非常慢 而且经常提示下载插件失败 真
  • 通俗易懂,十分钟读懂DES,详解DES加密算法原理,DES攻击手段以及3DES原理

    文章目录 1 什么是DES 2 DES的基本概念 3 DES的加密流程 4 DES算法步骤详解 4 1 初始置换 Initial Permutation IP置换 4 2 加密轮次 4 3 F轮函数 4 3 1 拓展R到48位 4 3 2
  • socket网络编程几大模型?看看CHAT是如何回复的?

    CHAT回复 网络编程中常见的有以下几种模型 1 阻塞I O模型 Blocking I O 传统的同步I O模型 一次只处理一个请求 2 非阻塞I O模型 Non blocking I O 应用程序轮询调用socket相关函数检查请求 不需
  • Kubernetes (十三) 存储——持久卷-动静态分配

    一 简介 二 NFS持久化存储步骤 静态分配 1 集群外主机用上次nfsdata共享目录中创建用来测试的pv 1 3 目录 用来对三个静态pv 2 创建pv的应用文件 vim pv yaml apiVersion v1 kind Persi
  • 国外拨号VPS指南:开启你的全球网络之旅

    在当今数字化时代 互联网已经成为了我们生活的一部分 而要在全球范围内畅通无阻地访问互联网 拥有一个可靠的国外拨号VPS是非常重要的 无论您是为了工作 学习还是娱乐 国外拨号VPS都可以为您提供更广泛的网络体验 本文将为您提供国外拨号VPS的
  • ssh:connect to host github.com port 22: Connection timed out

    解决流程 1 将github的端口由22改为443 ssh T p 443 git ssh github com 2 接着输入yes进行确认 The authenticity of host ssh github com 443 192 1
  • 短信系统搭建主要因素|网页短信平台开发源码

    短信系统搭建主要因素 网页短信平台开发源码 随着移动互联网的快速发展 短信系统已成为企业和个人进行信息传递的重要工具 建立一个高效可靠的短信系统对于企业来说非常重要 下面我们将介绍一些影响短信系统搭建的主要因素 1 平台选择 在搭建短信系统
  • 网工内推 | 上市公司同程、科达,五险一金,年终奖,最高12k*15薪

    01 同程旅行 招聘岗位 网络工程师 职责描述 1 负责职场 门店网络规划 建设 维护 2 负责网络安全及访问控制 上网行为管理和VPN设备的日常运维 3 负责内部相关网络自动化和系统化建设 4 优化与提升网络运行质量 制定应急预案 人员培

随机推荐

  • C++异常详细介绍

    目录 前言 一 C 异常概念 二 异常的抛出和匹配规则 三 异常的重新抛出 四 异常安全问题 五 异常规范说明 六 自定义异常体系 七 C 标准库的异常体系 八 异常优缺点 前言 在C语言中处理错误的方式和缺陷有 返回错误码 缺陷 1 错误
  • 硬件系统工程师宝典(22)-----电容、电感的特性,你都知道吗?

    各位同学大家好 欢迎继续做客电子工程学习圈 今天我们继续来讲这本书 硬件系统工程师宝典 上篇我们说到做电阻选型时要考虑阻值 功率 精度和封装大小 上下拉电阻除了给引脚一个稳定的电平 可以提高电压准位 增加输出功率以及满足阻抗匹配的要求 今天
  • buuctf(入门) Have Fun

    首先我们打开题目链接 我们看到一只猫 什么也没有 直接F12查看原代码 发现中间绿色代码的意思大概是定义一个数cat赋予它值cat值cat使用get函数请求的 如果数cat dog的话 则输出syc cat cat cat 所以我们只需要在
  • 867. 转置矩阵

    class Solution public vector
  • 安装postgresql以及乱码问题

    一 进入官网 按照自己的电脑型号选择合适的安装包 点下载那个图标的时候没有反应就多点几次 就可以弹出下载窗口了 二 打开下载好的安装包进行安装 可能出现乱码问题 一般出现这个问题大部分是因为你的系统用户名有中文字符 你需要把它改掉才行 之前
  • 区块链数据结构概述(MT、MPT)

    区块链数据结构概述 MT MPT Ethereum Foundation Blog MT Hash List Merkle Tree Merkle Tree的主要特点 Merkle Tree的相关操作 MPT Merkle Patricia
  • 请教Ado.Net按文本读取CSV/Txt文件时,如何禁止将内容转换成数字

    例如现有文件内容如下 文件内容开始 Column1 Column200001234 00005678 文件内容结束 读得的结果是 lt 1234 5678 gt 即它 智能 地认为我里面的内容为数字 而我希望它把内容当文本来处理 期望的结果
  • 重构总结

    之前就听说 重构 改善既有代码的设计 这本书很经典 一直没有机会拜读 书中讲的都是很实用的重构小技术 很多人肯定都用过 看完之后还需要在工作中多多使用 下面总结了一下这本书的知识点 方便日后查看
  • linux进程间信号量通信IPC(sem)

    一 信号量 信号量是一种用于提供不同进程间或一个从给定进程的不同线程间同步手段的原语 1 1 Posix信号量的选择 1 单个进程的各个线程共享 可以使用基于内存的信号量 2 彼此无亲缘关系的不同进程需使用信号量时 通常使用有名信号量 1
  • STM32无线网络监控传感器数据

    介绍 在此项目中 我们将首先创建一个无线传感器节点 传感器节点由四个基本组件组成 例如传感单元 处理单元 收发器单元和电源单元 传感单元可以由任何传感器组成 我正在使用BME280气压传感器 处理单元是STM32F103C微控制器 收发器单
  • Python之格式化字符串小练

    格式化字符串 a 3 b 5 print str a str b str a b 对于字符串的拼接显示 称为格式化字符串 有两种方案 的方式 print s s s a b a b s表示字符串 d表示整数类型 f表示浮点型的整数 info
  • python列表的三种遍历方法(for循环,索引,下标)

    列表是python中使用频率非常高的数据类型 用方括号 定义 接下来介绍遍历列表常用的三种方法 1 直接遍历 list1 1 24 34 44 533 5 219 for item in list1 直接遍历 print item 2 按索
  • Linux内核之ICMPv6详解

    要知道什么是ICMPv6协议 我们首先要知道什么是ICMP ICMP是一种面向无连接的协议 负责传递可能需要注意的差错和控制报文 差错指示通信网络是否存在错误 如目的主机无法到达 IP路由器无法正常传输数据包等 注意 路由器缓冲区溢出导致的
  • 执行git status命令时出现了“fatal: detected dubious ownership in repository“

    这个错误提示表示发现了版本库中存在可疑的所有权问题 即指定的目录 E take Class Rust MyRust 的所有者与当前用户不匹配 为了解决这个问题 Git提供了一个添加目录异常规则的方法 你可以按照下面的步骤进行操作 1 打开命
  • 前端基础知识之SVG&Canvas之间的区别与简单应用

    tip canvas 常用API fillRect x y width height 实心矩形 strokeRect x y width height 空心矩形 fillText Hello world 200 200 实心文字 strok
  • 8. R语言绘图系统介绍、高级绘图与低级绘图、【绘图参数】、绘图函数包

    b站课程视频链接 https www bilibili com video BV19x411X7C6 p 1 腾讯课堂 最新 但是要花钱 我花99 元买了 感觉讲的没问题 就是知识点结构有点乱 有点废话 https ke qq com co
  • HTML 个人简历源码

  • 使用HAL库开发STM32:系统时间基础及进阶使用

    文章目录 目的 基础使用 进阶使用 总结 目的 HAL库默认提供了系统时间 系统时间默认情况下由SysTick定时器计数产生 系统时间一方面用于HAL库自身调用 另一方面用户也可以使用 为开发带来便利 本文提到的相关使用主要应用于未使用OS
  • 5G赋能智慧城市白皮书 附下载地址

    随着经济社会的快速发展和加速转型 传统城市管理模式的局限性日益显现 随着全球城市化 进程的加快 为了应对人口 资源 环境等对城市发展的挑战 全球各国都以 智慧城市 建 设作为全新的城市发展理念和实践路径 而传统智慧城市建设中 由于细分智慧应
  • 应用层——电子邮件(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与H