邮件协议讲解(SMTP、POP3、IMAP)

邮件收发基本概念

常见邮件协议

发邮件:SMTP(加密版本SMTPS)

收邮件:IMAP(加密版本IMAPS)、POP3(加密版本POP3S)

邮件协议端口号

SMTP:   TCP 25

IMAP:    TCP 143

POP3:   TCP 110

SMTPS: TCP 465

IMAPS:  TCP 993

POP3S: TCP 995

IMAP和POP3收邮件的区别

IMAP功能要比POP3的功能更加丰富

IMAP用户在读取邮件时,直接对服务器上的邮件进行操作,不需要把所有邮件下载到本地在进行各项操作(需要与服务器定时同步)

POP3客户端软件会将所有未阅读的邮件下载到计算机,并且在邮件服务器上会删除该邮件

邮件收发过程(用户通过邮件客户端进行邮件的收发)

1、用户通过邮件客户端软件将邮件通过SMTP协议发送到发送方的SMTP服务器

2、发送方的SMTP服务器收到用户发来的邮件后,将其存放在邮件缓存列表中(等待时间取决于邮件服务器的性能和要传输的邮件数量),然后发送给接收方的SMTP服务器

3、接收方SMTP服务器收到该邮件后,把邮件放入收件人的用户邮箱中,等待收件人读取

4、收件人通过邮件客户端使用POP3/IMAP协议接收邮件(邮件客户端通过POP3/IMAP协议去通知POP3/IMAP服务器,有POP3/IMAP服务器去用户邮箱中将邮件读取出来,然后发给邮件客户端软件)

目前我们也会通过浏览器来进行邮件的收发,具体过程如下

HTTP/HTTPS协议如何传输邮件?

HTTP/HTTPS本身不适用于发送和接收邮件,但可以通过使用HTTP访问邮件网站,通过API接口来发送和接收邮件


SMTP协议报文

报文类型

客户端请求

HELLO/ELHO        作用都是与服务器确认,通知其客户端使用的机器名称(区别就是ELHO带身份验证,效果更加安全)  服务器对HELLO会直接返回250,对ELHO会返回身份验证

AUTH                   客户端使用AUTH与服务器进行登录验证

MAIL FROM          发件人信息(填写与认证信息不同 往往会被定义为垃圾或恶意邮件)

RCPT TO               邮件收信人地址

SUBJECT               邮件基本信息(邮件标题—不填写往往容易被定为垃圾邮件)

DATA                    告知服务器要传输邮件的正文内容信息

QUIT                    断开连接

SMTP应答返回码

334                请求认证输入

250                响应客户端发来的请求

235                认证通过

221                服务关闭传输通道

220                服务就绪

354                表示开始传送邮件的正文内容信息(往往与data指令结合—当收到SMTP报文携带 .标志时表示结束正文内容信息的传送)

500                指令错误

550                命令无法执行

IMF协议

IMF是一种用于描述电子邮件消息格式的标准,它描述了邮件的各个组成部分(如发件人、收件人、主题、正文等),通常以ASCII编码的文本形式表示(即:IMF定义了文本信息的标准;后面通过MIME多用途互联网邮件扩展类型定义了非ASCII编码文件的形式)

IMF协议和DATA报文之间的关系

SMTP用来发送邮件,IMF定义了邮件的信息格式,DATA携带邮件真正的正文内容

在SMTP协议中,DATA报文用于发送邮件的实际内容,并且DATA报文中携带的二进制数据必须遵循IMF消息的格式要求,以便SMTP服务器能够正确解析和存储邮件

当SMTP客户端与SMTP服务器建立连接后,客户端会发送DATA报文,在DATA发送结束后会发送IMF消息,使得对端能够对DATA报文进行解析

用户通过客户端将邮件发送到SMTP服务器的过程以及相关报文

建立TCP连接

协商认证方式(是否认证、通过什么认证)

进行身份认证                                                                                       

客户端进行邮件基本信息和邮件内容的发送


POP3协议报文

报文类型

客户端发送的命令

User       声明用户名

       Pass       声明密码

       Quit       终止会话(断开与服务器的连接)

       STAT      要求服务器提供信箱大小信息

       LIST        要求服务器返回一个信箱中特定邮件的大小信息(或者没有删除标记的所有邮件的大小信息)

       RETR      用编号取出相应的邮件消息

       TOP        提取前几行

       Dele       标记指定的邮件为删除邮件

       REST       标记为删除的邮件取消标记

       UIDL       取出邮件的唯一标识符

服务器响应

       +OK(针对客户端发送的命令携带不同的内容信息)

       -ERR

用户通过客户端读取邮件的过程以及相关报文

进行TCP连接

进行身份认证

获取邮件相应的信息

猜你喜欢

转载自blog.csdn.net/m0_49864110/article/details/134819771