【SMTP】【POP】电子邮件相关协议分析

news/2024/10/30 17:20:43/

一、 实验环境

  1. 通过普通路由器连接英特网的计算机一台;
  2. 通过VMWare安装的Linux虚拟机一台;
  3. 抓包工具:Wireshark;
  4. 邮件处理软件:Foxmail。

二、 实验原理

SMTP工作原理

SMTP提供了一种邮件传输的机制,当收件方和发件方都在一个网络上时,可以把邮件直传给对方;当双方不在同一个网络上时,需要通过一个或几个中间服务器转发。SMTP首先由发件方提出申请,要求与接收方SMTP建立双向的通信渠道,收件方可以是最终收件人也可以是中间转发的服务器。收件方服务器确认可以建立连接后,双发就可以开始通信。

SMTP协议的工作过程:

  1. SMTP的连接建立阶段

当SMTP需要身份验证时,此过程可能还包括AUTH等命令

  • SMTP客户与目的主机的SMTP服务器建立TCP连接,在TCP连接建立后,SMTP服务器要发出“220(服务就绪)”。

  • SMTP客户向SMTP服务器发送HELO命令,附上发送方的主机名。

  • SMTP服务器若有能力接收邮件,则回答:“250OK”,表示已准备好接收。

  1. 邮件的传送过程
  • SMTP连接建立后,就准备开始邮件的传送。邮件的传送从MAIL命令开始。MAIL 命令后面有发信人的地址。

  • SMTP服务器回答“2500K"。否则返回-个错误代码,指出原因。

  • 下面跟着一个或多个RCPT命令,它取决于将同一个邮件发给一一个或多个收信人。

  • 邮件服务器每收到一个RCPT命令,都会返回相应的信息。如“250 0K”或“550 Nosuch user here”。

  • 接着是SMTP客户向SMTP服务器发送DATA命令,此命令表示要开始传送邮件的内容了。

  • 若SMTP服务器能够接收邮件,则返回信息“354”,否则,返回信息“421”或“500”。

  • SMTP 客户发送邮件的内容,发送完毕后,再发送\r\n. \r\n表示邮件内容结束。

  • SMTP服务器返回信息“250OK",表示邮件收到。

  1. SMTP的连接释放过程
  • 邮件发送完毕后,SMTP客户应发送QUIT命令。

  • SMTP服务器返回信息“221”(服务关闭)。

SMTP定义了14个命令,本次实验主要用到的命令有:

  • HELO–发件方问候收件方,后面是发件人的服务器地址或标识。收件方回答OK时标识自己的身份。问候和确认过程表明两台机器可以进行通信,同时状态参量被复位,缓冲区被清空。

  • MAIL–这个命令用来开始传送邮件,它的后面跟随发件方邮件地址(返回邮件地址)。它也用来当邮件无法送达时,发送失败通知。

  • RCPT–这个命令告诉收件方收件人的邮箱。

  • DATA–收件方把该命令之后的数据作为发送的数据。数据被加入数据缓冲区中,以单独一行是"."的行结束数据。

  • QUIT–SMTP要求接收方必须回答OK,然后中断传输;在收到这个命令并回答OK前,收件方不得中断连接,即使传输出现错误。发件方在发出这个命令并收到OK答复前,也不得中断连接。

POP3工作原理

POP3全称为Post Office Protocol version3,即邮局协议第3版。它被用户代理用来邮件服务器取得邮件,采用的也是C/S通信模型。

用户从邮件服务器上接收邮件的典型通信过程如下。

  1. 用户运行用户代理(如Foxmail, Outlook Express)。
  2. 用户代理(以下简称客户端)与邮件服务器(以下简称服务器端)的110端口建立TCP连接。
  3. 客户端向服务器端发出各种命令,来请求各种服务(如查询邮箱信息,下载某封邮件等)。
  4. 服务端解析用户的命令,做出相应动作并返回给客户端一个响应。
  5. 3和4交替进行,直到接收完所有邮件转到步骤6,或两者的连接被意外中断而直接退出。
  6. 用户代理解析从服务器端获得的邮件,以适当地形式(如可读)的形式呈现给用户。

其中2、3和4用POP3协议通信。

POP3协议中有三种状态,认证状态处理状态,和更新状态。命令的执行可以改变协议的状态,而对于具体的某命令,它只能在具体的某状态下使用。客户机与服务器刚与服务器建立连接时,它的状态为认证状态;一旦客户机提供了自己身份并被成功地确认,即由认可状态转入处理状态; 在完成相应的操作后客户机发出QUIT命令,则进入更新状态,更新之后又重返认可状态;当然在认可状态下执行QUIT命令,可释放连接。状态间的转移如图所示。
在这里插入图片描述

四、 实验步骤

DNS服务器和邮件服务器的安装与配置
参考博客:CentOS 7下通过PostFix+dovecot+blind搭建邮件服务器

五、 报文分析

SMTP报文分析

在这里插入图片描述

POP3报文分析

在这里插入图片描述


http://www.ppmy.cn/news/396744.html

相关文章

c++11 标准模板(STL)(std::ios_base)成员类型与常量

流打开模式类型 std::ios_base::openmode typedef /*implementation defined*/ openmode; static constexpr openmode app /*implementation defined*/ static constexpr openmode binary /*implementation defined*/ static constexpr openmode in /*implementation defi…

1007

背景 Background 平面上有N个圆柱形的大钉子&#xff0c;半径都为R,所有钉子组成一个凸多边形。 现在你要用一条绳子把这些钉子围起来&#xff0c;绳子直径忽略不计。 描述 Description 求出绳子的长度 输入格式 Input Format 第1行两个数&#xff1a;整数N(1<N<100…

Python版day16

104. 二叉树的最大深度 给定一个二叉树&#xff0c;找出其最大深度。 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。 说明: 叶子节点是指没有子节点的节点。 # Definition for a binary tree node. # class TreeNode: # def __init__(self, val0, leftNone, r…

一键式 RLHF 训练 DeepSpeed Chat(二):实践篇

一键式 RLHF 训练 DeepSpeed Chat&#xff08;二&#xff09;&#xff1a;实践篇 之前给大家分享了一键式 RLHF 训练 DeepSpeed Chat&#xff08;一&#xff09;&#xff1a;理论篇&#xff0c;本文给大家分享如何使用DeepSpeed Chat进行RLHF训练。 DeepSpeed Chat 的 RLHF 训…

Servlet相关介绍

一、什么是servlet Java Servlet 是运行在Web服务器或应用服务器上的程序&#xff0c;使用Servlet可以收集来自网页表单的用户输入&#xff0c;呈现来自数据库或者其它源的记录&#xff0c;还可以动态创建网页。 web服务器只能处理静态的资源&#xff0c;不能处理动态的页面&am…

Could not resolve ‘cn.archive.ubuntu.com‘ ubuntu

add nameserver field in /etc/resolv.confnameserver 8.8.8.8

【华为OD机试】 阿里巴巴找黄金宝箱(Ⅲ)【2023 B卷|100分】

【华为OD机试】-真题 !!点这里!! 【华为OD机试】真题考点分类 !!点这里 !! 题目描述 一贫如洗的樵夫阿里巴巴在去砍柴的路上,无意中发现了强盗集团的藏宝地, 藏宝地有编号从0-N的箱子,每个箱子上面贴有一个数字。 阿里巴巴念出一个咒语数字,查看宝箱是否存在两个不同…

解释什么是 Resizable BAR、如何实现它,并介绍它将如何影响性能。

什么是可调整大小的栏&#xff1f;如何为我的系统启用它&#xff1f; intel A770显卡运行时要求开启Resizable BAR&#xff0c;否则性能据说会损失40%。 其实我测试了下&#xff0c;没有启用之前鲁大师跑分44万&#xff0c;启用后也高不到哪里去&#xff0c;就是个48万。 但是…