邮件访问协议!IMAP协议解析

今天我们又来讲讲邮件协议,如果您曾经设置过电子邮件帐户,则可能会询问您要使用哪种电子邮件协议(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)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值