【TCP/IP】13. 邮件传输协议

13. 邮件传输协议

13.1 概述

电子邮件系统通过多个组件和协议协作,实现邮件的发送与接收,核心是 “用户代理 - 邮件服务器 - 协议” 的协同工作。

  1. 系统组成与工作流程
    • 三个关键组件:
      • 用户代理(UA):用户与邮件系统的接口(如 Foxmail、Outlook),功能包括撰写(编辑邮件)、显示(展示收到的邮件)、处理(发送、接收、管理邮件)。
      • 邮件服务器:核心构件,负责发送、接收、存储邮件,并向发件人反馈传输状态(如成功、失败)。ISP 均提供邮件服务器,默认监听端口:SMTP(25)、POP3(110)、IMAP(143)。
      • 协议:SMTP(发送邮件)、POP3/IMAP(接收邮件)。
    • 工作流程:
      1. 用户通过 UA 撰写邮件,利用 SMTP 发送到客户端邮件服务器,服务器将邮件存入缓冲队列;
      2. 客户端邮件服务器通过 DNS 解析目标邮箱的域名(如yourserver.com),找到服务器端邮件服务器,通过 SMTP 传送邮件;
      3. 服务器端邮件服务器接收邮件后,存储在收件人的信箱(服务器上的存储空间);
      4. 收件人通过 UA,使用 POP3 或 IMAP 从服务器端邮件服务器获取邮件。

13.2 电子邮件地址

电子邮件地址是邮件传输的唯一标识,格式与结构严格定义。

  1. 格式
    • 形式:收信人邮箱名@邮箱所在主机的域名,例如me@mail.njust.edu.cn
    • 组成:
      • @前:邮箱标识(注册用户名,在主机内唯一);
      • @后:主机域名(在因特网上唯一,如mail.njust.edu.cn表示中国教育网南京理工大学的邮件服务器)。
  2. 唯一性
    • 因域名全网唯一且邮箱名在主机内唯一,故每个电子邮件地址在因特网上唯一。
  3. 使用方式
    • 发送时,邮件服务器先解析域名找到目标服务器;
    • 邮件到达目标服务器后,再根据邮箱名将邮件存入对应信箱。

13.3 电子邮件信息格式

电子邮件由 “信封” 和 “内容” 组成,内容又分为首部和信体,格式由 RFC 822 规范。

  1. 整体结构
    • 信封:由邮件系统自动生成,包含发送方、接收方服务器信息(用户无需填写);
    • 内容:
      • 首部:多行 “关键字:信息” 结构,描述邮件属性(如发送方、接收方、日期等);
      • 信体:用户撰写的邮件正文,无格式限制。
  2. 首部关键字(核心)
    • 基础关键字:
      • From:发信人邮箱地址(自动填入);
      • To:收信人邮箱地址(可多个);
      • Date:发送日期(自动填入);
      • Subject:邮件主题(便于查找)。
    • 扩展关键字:
      • Reply-To:回复地址(若与 From 不同);
      • Cc(抄送)/Bcc(暗抄送):抄送地址(Bcc 收件人不可见);
      • Message-ID:本邮件的唯一标识;
      • In-Reply-To:回复的目标邮件的 Message-ID;
      • References:来回回复中所有前置邮件的 Message-ID;
      • Sender:负责发送邮件的代理邮箱(区别于 From,From 是邮件作者)。
    • 自定义关键字:以X-为前缀(如X-Priority表示优先级);
    • 重发字段:以Resent-为前缀(如Resent-DateResent-To),保留原邮件头并添加重发信息。

13.4 简单邮件传输协议(SMTP)

SMTP 是邮件发送的核心协议,定义了邮件从客户端服务器到服务器端服务器的传输规则。

  1. 核心目标:可靠、高效地传送邮件。
  2. 命令与响应
    • 命令:4 个字母组成(可带参数),用于触发服务器操作,如:
      • HELO <主机名>:初始化会话(不支持认证);
      • EHLO <主机名>:扩展 HELO(支持用户认证);
      • MAIL FROM: <发件人地址>:指定发件人;
      • RCPT TO: <收件人地址>:指定收件人(可多个);
      • DATA:开始传输邮件内容(以<CR><LF>.<CR><LF>结束);
      • QUIT:终止连接。
    • 响应:3 位数字代码 + 文字说明,表示命令执行结果,如:
      • 220:服务就绪;
      • 250:操作成功;
      • 354:准备接收邮件内容;
      • 550:邮箱不存在。
  3. 通信过程(三阶段)
    • 阶段 1:连接建立
      1. 客户端服务器(SMTP 客户)发现缓冲队列有邮件,通过 TCP 连接目标服务器(SMTP 服务器,端口 25);
      2. 服务器返回220 Service ready
      3. 客户端发送EHLO/HELO+ 主机名,服务器返回250 OK表示就绪。
    • 阶段 2:邮件传送
      1. 客户端发送MAIL FROM: <发件人>,服务器返回250 OK
      2. 客户端发送RCPT TO: <收件人>(多个收件人需多次发送),服务器返回250 OK(或550表示收件人不存在);
      3. 客户端发送DATA,服务器返回354 End data with <CR><LF>.<CR><LF>
      4. 客户端发送邮件内容(首部 + 信体),最后以<CR><LF>.<CR><LF>结束;
      5. 服务器返回250 OK表示接收成功。
    • 阶段 3:连接释放
      1. 客户端发送QUIT
      2. 服务器返回221 BYE
      3. 双方通过四次握手释放 TCP 连接。

13.5 邮件获取协议

用户通过 POP3 或 IMAP 从服务器端邮件服务器获取邮件,两者功能不同但均基于客户 - 服务器模型。

13.5.1 邮局协议版本 3(POP3)

POP3 是简单的邮件读取协议,适用于 “下载后离线处理” 场景。

  1. 核心功能:从服务器下载邮件到本地,支持基本的邮件管理(如删除)。
  2. 命令与响应
    • 命令:3-4 个字母,如:
      • USER <用户名>/PASS <口令>:身份认证;
      • STAT:获取邮箱内邮件总数和总大小;
      • LIST [序号]:列出邮件序号及大小(无序号则列所有);
      • RETR <序号>:下载指定邮件;
      • DELE <序号>:标记指定邮件为删除(断开连接后生效);
      • QUIT:终止连接并执行删除标记。
    • 响应+OK(成功)或-ERR(失败)+ 说明信息。
  3. 工作模式
    • 删除模式:邮件下载到本地后,服务器不再保存;
    • 保持模式:邮件下载后仍保留在服务器上。
  4. 操作阶段
    • 鉴别状态:客户端发送USER/PASS完成认证;
    • 处理状态:客户端执行STAT/LIST/RETR/DELE等操作;
    • 更新状态:客户端发送QUIT,服务器删除标记为DELE的邮件,释放连接。

13.5.2 因特网报文存取协议(IMAP4)

IMAP4 功能更强大,支持 “在线管理服务器端邮件”,适用于多设备同步场景。

  1. 工作模式

    • 离线模式:下载邮件后离线处理(类似 POP3);
    • 在线模式:直接在服务器上操作邮件(如阅读、删除、移动);
    • 断连模式:临时断开连接,重连后恢复之前的操作状态。
  2. 与 POP3 的异同

    • 相同点:均为客户 - 服务器模型,邮件先存储在服务器,需认证后访问。

    • 不同点:

      特性POP3IMAP4
      邮件存储下载后通常删除服务器副本默认保留服务器副本
      操作位置本地(脱机协议)服务器(联机协议)
      功能仅支持下载、删除支持创建文件夹、移动邮件、部分下载等

13.6 通用因特网邮件扩充(MIME)

MIME 是 SMTP 的补充协议,解决 SMTP 的局限(如仅支持 7 位 ASCII、无法传输二进制文件等)。

  1. SMTP 的局限

    • 仅支持 7 位 ASCII 码,无法传输非英文文字、二进制文件(如图片、可执行程序);
    • 对邮件长度有限制;
    • 部分实现不兼容 RFC 821 标准。
  2. MIME 的核心作用:在不改变 SMTP 的前提下,扩展邮件格式,支持非 ASCII 数据传输。

  3. MIME 的组成

      1. 5 个新首部字段:
      • MIME-Version: 1.0:标识 MIME 版本(必需);
      • Content-Description:邮件内容说明(如 “图片附件”);
      • Content-Id:邮件唯一标识符;
      • Content-Transfer-Encoding:内容传输编码方式(如 base64);
      • Content-Type:内容类型(如text/plainimage/gif)。
      1. 内容类型:定义邮件主体的格式,由 “类型 / 子类型” 组成,标准类型包括:
      • text:文本(如text/plain纯文本、text/html网页);
      • image:图像(如image/gifimage/jpeg);
      • audio:音频(如audio/basic);
      • video:视频(如video/mpeg);
      • application:应用程序数据(如application/pdfapplication/msword);
      • message:邮件相关(如message/rfc822表示嵌套邮件);
      • multipart:多部分内容(如multipart/mixed带附件的邮件)。
      • 自定义类型:以x-为前缀(如application/x-exe)。
      1. 内容传输编码:将非 ASCII 数据转换为 SMTP 可传输的格式,主要包括:
      • 7bit:7 位 ASCII 码(短行,每行≤1000 字符,默认);
      • quoted-printable:适用于含少量非 ASCII 的文本(如汉字),非 ASCII 字符用=十六进制值表示(如 “=E4=BD=A0” 表示 “你”);
      • base64:适用于二进制文件(如图片、程序),将 24 位数据分为 4 个 6 位组,映射为 64 个可打印字符(A-Z、a-z、0-9、+、/),不足补 0 并加=(如 3 字节→4 字符,2 字节→3 字符 + 1=,1 字节→2 字符 + 2=)。
  4. multipart 子类型(重要扩展)

    • 允许邮件包含多个独立部分(如文本 + 附件),通过boundary关键字定义分隔符,格式示例:

      Content-Type: multipart/mixed; boundary=qwertyuiop  
      --qwertyuiop  
      Content-Type: text/plain  
      正文内容...  
      --qwertyuiop  
      Content-Type: image/gif  
      Content-Transfer-Encoding: base64  
      [图片的base64编码]  
      --qwertyuiop--  
      
    • 常见子类型:

      • mixed:按顺序包含多个独立部分(如正文 + 附件);
      • alternative:同一内容的多种格式(如纯文本 + HTML);
      • parallel:需同时显示的部分(如视频 + 音频);
      • digest:包含多个邮件(如邮件列表)。

本章要点

  • 电子邮件系统由用户代理、邮件服务器和协议(SMTP、POP3/IMAP)组成,流程为 “发送→中转→接收”;
  • 电子邮件地址格式为邮箱名@域名,全网唯一,用于定位收件人信箱;
  • 邮件内容含首部(关键字定义属性)和信体(正文),首部格式由 RFC 822 规范;
  • SMTP 负责发送邮件,通过 “连接建立→邮件传送→连接释放” 三阶段完成,依赖命令 - 响应机制;
  • POP3(离线下载)和 IMAP4(在线管理)用于接收邮件,IMAP 功能更丰富;
  • MIME 扩展 SMTP,支持非 ASCII 数据(如二进制、多语言),通过新首部、内容类型和编码实现,核心是 multipart 子类型支持附件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值