欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

邮件协议SMTP/POP3/IMAP

程序员文章站 2022-07-08 11:28:37
...

一、SMTP协议

邮件协议SMTP/POP3/IMAP
1、SMTP协议简介
SMTP称为简单邮件传输协议(Simple Mail Transfer Protocal),目标是向用户提供高效、可靠的邮件传输。它的一个重要特点是它能够在传送中接力传送邮件,即邮件可以通过不同网络上的主机接力式传送。通常它工作在两种情况下:一是邮件从客户机传输到服务器;二是从某一个服务器传输到另一个服务器。SMTP是一个请求/响应协议,它监听25号端口,用于接收用户的Mail请求,并与远端Mail服务器建立SMTP连接。

2、SMTP协议工作机制
SMTP通常有两种工作模式:发送SMTP和接收SMTP。
具体工作方式为:发送SMTP在接收到用户的邮件请求后,判断此邮件是否为本地邮件,若是直接投送到用户的邮箱,否则向DNS查询远端邮件服务器的MX记录,并建立与远端接收SMTP之间的一个双向传送通道,此后SMTP命令由发送SMTP发出,由接收SMTP接收,而应答则反方向传送。一旦传送通道建立,SMTP发送者发送MAIL命令指明邮件发送者。如果SMTP接收者可以接收邮件则返回OK应答。SMTP发送者再发出RCPT命令确认邮件是否接收到。如果SMTP接收者接收,则返回OK应答;如果不能接收到,则发出拒绝接收应答(但不中止整个邮件操作),双方将如此反复多次。当接收者收到全部邮件后会接收到特别的序列,入伏哦接收者成功处理了邮件,则返回OK应答。

3、SMTP服务器查找
SMTP服务器是基于域名服务DNS中计划收件人的域名来路由电子邮件。一般根据登陆邮箱的后缀域名通过DNS协议查找MX记录。

查找邮箱后缀域名的MX记录所指向的域名地址
根据指向域名地址通过dns查找域名地址指向的服务器ip
tcp连接服务器ip:25(默认端口)(用来登陆或者发送)

4、SMTP基础协议实例

【c->s】telnet smtp.163.com 25【tcp连接】
【s->c】220 163.com Anti-spam GT for Coremail System (163com[20141201])【欢迎信息】
【c->s】helo 163.com【helo命令】
【s->c】250 OK
【c->s】auth login【请求登陆】
【s->c】334 dXNlcm5dhbWU6【要求用户名】
【c->s】Z3dfdsaffEDF=【输入base64用户名】
【s->c】334 UGFzc3ddvcmQ6【要求密码】
【c->s】fdasDSDFFFfDS=【输入base64密码】
【s->c】235 Authentication successful【登陆成功】
【c->s】mail from:aaa@qq.com【发件地址】
【c->s】rcpt to:aaa@qq.com【收件地址】
【c->s】DATA【data命令,要求发送内容】
【s->c】354 End data with .【提示信息,以.作为结束符号】
【c->s】from:aaa@qq.com【要显示的发件地址】
【c->s】to:aaa@qq.com【要显示的收件地址】
【c->s】hello world【内容】
【c->s】.【结束】
【s->c】250 Mail OK queued as smtp13,EcCowABHIv39riFXqUpKBA--.47592S3 1461825582【返回发送状态,我的测试不幸进入垃圾邮件】
【c->s】QUIT【退出命令】
【s->c】221 Bye

5、SMTP常用的命令
SMTP命令不区分大小写,但参数区分大小写。常用命令如下:

HELO ——向服务器标识用户身份发送者能欺骗、说谎,但一般情况下服务器都能检测到
RCPT TO: ——用来标志邮件接收者的地址,常用在MAIL FROM后,可以有多个RCPT TO
DATA ——将之后的数据作为数据发送,以.标志数据的结尾
REST ——重置会话,当前传输被取消
NOOP ——要求服务器返回OK应答,一般用作测试
QUIT ——结束会话
VRFY ——验证指定的邮箱是否存在,由于安全方面的原因,服务器大多禁止此命令
EXPN ——验证给定的邮箱列表是否存在,由于安全方面的原因,服务器大多禁止此命令
HELP ——查询服务器支持什么命令

6、SMTP常用的响应

211——系统状态或系统帮助响应
214——帮助信息
220——服务器就绪
221——服务关闭
250——要求的邮件操作完成
251——用户非本地,将转发向<forward-path>

354——开始邮件输入,以“.”结束

421——服务器未就绪,关闭传输信道
450——要求的邮件操作未完成,邮箱不可用
451——放弃要求的操作,处理过程中出错
452——系统存储不足,要求的操作未执行

501——参数格式错误
502——命令不可实现
503——错误的命令序列
504——命令参数不可实现
550——要求的邮件操作未完成,邮箱不可用
551——用户非本地,请尝试<forward-path>
552——过量的存储分配,要求的操作未执行
553——邮箱名不可用,要求的操作未执行
554——操作失败

二、POP3协议

1、POP3协议简介
POP3称为邮局协议版本3(Post Office Protocol-Version 3),是TCP/IP协议族中的一员,由RFC1939 定义,主要用于支持使用客户端远程管理在服务器上的电子邮件。POP3 使用 TCP 作为传输协议,端口号是110。
POP3协议相对简单,POP3服务器响应一般为:“+OK”表示成功,“-ERR”表示失败。

2、POP3基础协议实例

【c->s】telnet pop.163.com 110【tcp连接】
【s->c】+OK Welcome to coremail Mail Pop3 Server (163coms[726cd8【欢迎信息】
【c->s】user aaa@qq.com【登陆】
【s->c】+OK core mail
【c->s】pass password【密码】
【s->c】+OK 1025 message(s) [125726173 byte(s)]
【c->s】list【列出邮件】
【s->c】1023 15552【邮件id 邮件大小】
【s->c】1024 24905
【s->c】1025 5288
【s->c】.【列出邮件结束】
【c->s】tetr 1025【收取一封邮件内容】
【s->c】邮件内容
【c->s】quit【退出】
【s->c】+OK core mail

3、POP3常用的命令
USER——[username] 处理用户名
PASS——[password] 处理用户密码
APOP——[Name,Digest] 认可Digest是MD5消息摘要
STAT——处理请求服务器发回关于邮箱的统计资料,如邮件总数和总字节数
UIDL[邮件id]——处理返回邮件的唯一标识符,POP3会话的每个标识符都将是唯一的
LIST [邮件id]——处理返回邮件数量和每个邮件的大小
RETR [邮件id]——处理返回由参数标识的邮件的全部文本
DELE [邮件id]——处理服务器将由参数标识的邮件标记为删除,最后由【quit】命令执行
RSET——处理服务器将重置所有标记为删除的邮件,用于撤消DELE命令
TOP [邮件id n]——处理服务器将返回由参数标识的邮件前n行内容,n必须是正整数
NOOP——处理服务器返回一个肯定的响应
QUIT——终止会话

4、pop3协议的不足
POP作为Internet上邮件的第一个离线协议标准,允许用户从服务器上把邮件下载到本地主机上,同时删除保存在邮件服务器上的邮件【现在的邮件服务商都可以设置是否同时删除】,从而使用户不必长时间地与邮件服务器连接,很大程度上减少了服务器和网络的整体开销。

但POP3有其天生的缺陷,即当用户接收电子邮件时,所有的信件都从服务器上清除并下载到客户机。在整个收信过程中,用户无法知道邮件的具体信息,只有照单全收入硬盘后,才能慢慢浏览和删除。这使用户几乎没有对邮件接收的控制决定权。一旦碰上邮箱被轰炸,或有比较大的邮件,用户不能通过分析邮件的内容及发信人地址来决定是否下载或删除,从而造成系统资源的浪费。而IMAP协议不但可以克服POP3的缺陷,而且还提供了更强大的功能。

三、IMAP协议

1、IMAP协议简介
IMAP:是Internet Mail Access Protocol交互式邮件存取协议的简称。IMAP协议运行在TCP/IP协议之上,使用的端口是143。它与POP3协议的主要区别是用户可以不用把所有的邮件全部下载,可以通过客户端直接对服务器上的邮件进行操作。

与POP3协议类似,IMAP(Internet消息访问协议)也是提供面向用户的邮件收取服务。常用的版本是IMAP4。IMAP4改进了POP3的不足,用户可以通过浏览信件头来决定是否收取、删除和检索邮件的特定部分,还可以在服务器上创建或更改文件夹或邮箱,它除了支持POP3协议的脱机操作模式外,还支持联机操作和断连接操作。它为用户提供了有选择的从邮件服务器接收邮件的功能、基于服务器的信息处理功能和共享信箱功能。

IMAP4的脱机模式不同于POP3,它不会自动删除在邮件服务器上已取出的邮件,其联机模式和断连接模式也是将邮件服务器作为“远程文件服务器”进行访问,更加灵活方便。

其实说个简单的,就是如果你不对客户端做一个特殊设置的话,默认情况下,你使用POP3协议下载邮件,会把服务器上的所有邮件下载到客户端,而服务器上将不再存储。而IMAP在默认情况下,下载但是不删除邮件服务器上的文件。

相关标签: 邮件协议