今天我们又来讲讲邮件协议,如果您曾经设置过电子邮件帐户,则可能会询问您要使用哪种电子邮件协议(POP或IMAP),对于POP,我们在这篇文章上有讲解《pop3协议解析及代码实现》。当我们所做的选择那种电子件协议,将对您发送,接收和以其他方式使用电子邮件的体验有一定影响。

POP(邮局协议)曾经是电子邮件协议中最流行的类型,但如今,IMAP是大多数人的首选。在下面详细了解IMAP是什么,以及Wireshark抓包分析IMAP协议。

什么是IMAP?

IMAP代表Internet消息访问协议。这是一个应用程序层协议,用于接收来自邮件服务器的电子邮件。它是最常用的协议。

IMAP协议还遵循客户端/服务器模型。一方面,我们有一个IMAP客户端,它是在计算机上运行的进程。另一方面,我们有一个IMAP服务器,它也是在另一台计算机上运行的进程。两台计算机都通过网络连接。


IMAP协议在TCP / IP 传输层上,这意味着它隐式使用了该协议的可靠性。一旦在IMAP客户端和IMAP服务器之间建立了TCP连接,默认情况下,IMAP服务器将侦听端口143,但是此端口号也可以更改。

默认情况下,IMAP使用两个端口:

  • 端口143:这是未加密的IMAP端口。
  • 端口993:当IMAP客户端希望通过IMAP安全连接时,将使用此端口。

为什么我们应该使用IMAP?

  • 与POP不同,IMAP允许您访问,组织,阅读和分类电子邮件,而无需先下载它们。
  • IMAP非常快速和高效。服务器还会保留您发送的所有消息的记录,从而使您可以从任何地方访问已发送的消息。
  • IMAP不会将邮件从服务器移动到您的计算机,而是将计算机上的电子邮件与服务器上的电子邮件同步。

通过示例了解IMAP协议

IMAP使用传输控制协议(TCP)进行通信,以确保数据的传递并按顺序接收。IMAP在众所周知的端口(即端口号143)上侦听来自IMAP客户端的传入连接请求。IMAP协议将所有设备与主服务器同步。

假设我们有上图所示的三种设备:笔记本,智能机和平板电脑。如果所有这些设备都在访问同一邮箱,则它将与所有设备同步。

在这里,同步意味着当一台设备打开邮件时,它将在所有其他设备上标记为已打开,如果我们删除该邮件,那么该邮件也将从所有其他设备上删除。因此,我们在所有设备之间进行了同步。

在IMAP中,我们可以看到所有文件夹,例如垃圾邮件,收件箱,已发送邮件等。我们还可以创建自己的文件夹,称为自定义文件夹,该文件夹将在所有其他设备上可见。

IMAP协议常见指令讲解

下面我们来讲解IMAP协议命令的快速列表,以及常见指令。

Any State

  • capability


capability指令主要是获得服务器功能 。

  • noop

noop指令主要是 用于检查新邮件并防止连接超时 。

Non-Authenticated State

  • authenticate

authenticate指令主要做SASL认证 。

  • login

登录可以使用引号将空格和特殊字符引起来。然后必须用\来转义“

Authenticated State

  • append:将邮件添加到特定邮箱

  • create:创建新邮箱

  • delete:删除邮箱

  • examine:在只读模式下选择

  • list:邮箱名称列表

  • lsub:用户已订阅的邮箱列表

  • select:这样邮箱中的邮件就可以
    被读/写

  • status:获取邮箱状态

  • subscribe:到新邮箱

Selected State

  • check:用来在邮箱设置一个检查点,类似NOOP

  • close:从当前删除消息选定的邮箱已删除旗帜

  • copy:将邮件从当前复制到另一个邮箱

  • fetch:获取邮件的相关数据

  • search:返回消息列表,搜索标准已详细说明并使用了密钥用于不同的消息部分

  • store:设置/取消设置消息标志

  • uid:使用UID号而不是消息序列号

IMAP协议解析代码实现

int main(int argc, char* argv[])
{char errbuf[1024];pcap_t *desc = 0;char *filename = argv[1];if (argc != 2){printf("usage: ./dissect_imap [pcap file]\n");return -1;}return 0;
}

编译运行:

总结

使用IMAP有几个优点。

  • IMAP允许您从任意位置通过任意数量的不同设备访问电子邮件。
  • IMAP仅在您单击时下载一条消息。因此,您无需等待所有新消息从服务器下载就可以阅读它们。
  • 附件不会随IMAP自动下载。因此,您可以更快地检查邮件,并更好地控制打开哪些附件。

参考:https://tools.ietf.org/html/rfc3501

欢迎关注微信公众号【程序猿编码】,需要IMAP源码和报文的添加本人微信号(17865354792)

邮件访问协议!IMAP协议解析相关推荐

  1. 【计算机网络】应用层 : 电子邮件 ( SMTP 协议 | MIME 协议 | POP3 协议 | IMAP 协议 | 基于万维网的电子邮件 )

    文章目录 一.电子邮件信息格式★ 二.电子邮件系统 组成 结构 ★ 三.SMTP 协议 ( 简单邮件传送协议 ) ★ 四.SMTP 协议 连接建立流程 五.SMTP 协议 邮件发送 流程 六.SMTP ...

  2. 邮件服务器imap有推送吗,为什么我的邮件服务器支持imap协议还收不到邮件内容...

    满意答案 qk2523 2017.04.05 采纳率:48%    等级:7 已帮助:163人 支持imap协议和能不能收到邮件没有什么关系. 1.使用Web方式可以正常接收邮件,但使用Outlook ...

  3. 【iMessage苹果家庭推源码】软件安装使用IMAP协议接收邮件

    推荐内容IMESSGAE相关 作者推荐内容 iMessage苹果推软件 *** 点击即可查看作者要求内容信息 作者推荐内容 1.家庭推内容 *** 点击即可查看作者要求内容信息 作者推荐内容 2.相册 ...

  4. telnet中使用IMAP协议查看收件箱

    问题 使用命令telnet进去查看收件箱. 步骤 # 使用telnet登录邮件服务器,这里使用的imap协议,不是pop3协议 telnet mail.xxx.com 143 Trying 100.2 ...

  5. 关于邮箱的 POP 协议、imap 协议、imap 协议简单讲解

    [三种邮箱协议说明] 以 263 邮箱为例 POP3 接收邮件协议(邮局协议),端口:110 SLL 加密类型端口:995.较为常见的客户端 如 outlook.foxmail 都可以使用,使用客户端 ...

  6. IMAP 称作交互邮件访问协议

    Internet Message Access Protocol(缩写为IMAP,以前称作交互邮件访问协议)是一个应用层协议,用来从本地邮件客户端(如MicrosoftOutlook. Outlook ...

  7. Python实现IMAP协议接收并解析邮件内容

    Python实现IMAP协议接收并解析邮件内容 **前言:**昨天接到这个任务,然后搜索了很多资料和博客去看,这些资料链接我会放在本文后面 一.开通IMAP服务 我以网页邮箱(163邮箱为例) 1.登 ...

  8. IMAP(Internet Message Access Protocol, 交互邮件访问协议)简介

    1.简介 Internet Mail Access Protocol(缩写为IMAP,以前称作交互邮件访问协议(interactive mail access protocol))IMAP是斯坦福大学 ...

  9. IMAP协议定时监听接收邮件(QQ邮箱、网易邮箱都可)

    前面已介绍过SMTP协议发论文:qq邮箱,网易邮箱,smtp邮箱发邮件 本文将继续介绍如何用IMAP协议收邮件. IMAP协议:即Internet Message Access Protocol(互联 ...

最新文章

  1. python urllib.request 爬虫 数据处理-python之爬虫(三) Urllib库的基本使用
  2. Ubuntu16.04怎样安装Python3.6
  3. spring boot 整合RESTFUL服务
  4. 如何删除 AWS 资源以及关闭账户(来自亚马逊官方提供文档,记录一下方便查看)
  5. Nginx+Tomcat负载均衡访问网页出现报错HTTP Status 400 – 错误的请求
  6. RT-Thread Pin设备驱动API应用介绍
  7. Spring中的后置处理器BeanPostProcessor讲解
  8. C#面向对象17 23种设计模式
  9. C++编译器默默编写并调用哪些函数
  10. 基于Java、Jsp实现购物车的功能
  11. termux如何下载metasploit(msf)
  12. Word 内容被锁定的两种解决方法
  13. 小米4充不了电处理办法(图文)小米4不能充电的维修教程
  14. 开车的26条教训!开车的人一定看看!
  15. MySql数据库入门
  16. 使得法国文化公司的根深蒂固
  17. 题目:606.根据二叉树创建字符串
  18. 220多款H5的手机端小游戏源码下载 - html+javascript 开发网页小游戏开源源码大合集
  19. 数字信号处理实验matlab版答案刘舒帆,数字信号处理实验(MATLAB版) 刘舒帆,费诺,陆辉 西安电子科技大学出版社 9787560620060...
  20. Knowledge Graph表示学习--TransE系列

热门文章

  1. 实战:搭建高效率生鲜B2B平台八大模块及技术要求
  2. Unity音频可视化
  3. 面积计算9860SD计算器程序(好用就用,不用就删-----歪XX)
  4. 初入python世界——python基础语法
  5. SDM、ESR、LBF、AAM
  6. Ramps 1.4升级Marlin2.0.x改12864显示屏并添加打印机箱体温度显示
  7. 直播美颜sdk免费版有吗?为什么美颜sdk没有免费版?
  8. 万里汇WorldFirst个人和企业帐户注册教程(送$25+1%提现费)
  9. HTML表格翻页效果-洋葱先生-杨少通
  10. 外包 | LBP/HOG/CNN 实现对 CK/jaffe/fer2013 人脸表情数据集分类