smtp和pop3邮件协议

SMTP称为简单Mail传输协议(Simple Mail Transfer Protocol),是一组用于由源地址到目的地址传送邮件的协议,用以控制信件的中转方式。目标是向用户提供高效、可靠的邮件传输。SMTP协议属于TCP/IP协议族,它帮助每台计算机在发送或中转信件时找到下一个目的地。通过SMTP协议所指定的服务器,可以把电子邮件寄到收信人的服务器上[1]。SMTP工作在两种情况下:一是电子邮件从客户机传输到服务器;二是从某一个服务器传输到另一个服务器。SMTP提供了一种邮件传输机制,当收件方和发件方都在同一个网络上时,可以把邮件直接传给对方。当对方不在同一个网络上时,需要通过一个或几个中间服务器转发。SMTP首先由发件方提出申请,要求与接收方SMTP简历双向的通信渠道。收件方可以是最终收件人,也可以是中间转发的服务器。收件方服务器确认可以建立连接后,双方就可以开始通信。SMTP是个请求/响应协议,它监听25号端口,用于接收用户的Mail请求,并与远端Mail服务器建立SMTP连接[1]。本文使用的SMTP协议工作在第一种情况下。

SMTP协议的基本流程如下:首先,建立连接;其次,客户端发送命令,以标识发件人自己的身份,然后发送邮件命令,服务器端做出响应,表明是否准备接收;再次,客户端发送邮件,以标识该电子邮件的计划接收人,服务器端则表示是否愿意为收件人接收邮件,如果写上成功,则发送邮件;最后,结束此次发送,退出连接[2]

在SMTP协议中,最重要的内容是SMTP命令和响应状态,这是SMTP运行的基础。SMTP命令都已回车换行作为结束标识,下面对他们做详细描述[3]

HELLO:参数<domain>,识别发送方到接收SMTP的一个HELLO命令。

MAILFROM:参数为<reverse-path>,表示发送者地址。此命令告诉接收方一个新邮件发送的开始,并对所有的状态和缓冲区进行初始化。此命令开始一个邮件传输处理,最终完成将邮件数据传送到一个或多个邮箱中。

RCPTTO:参数为<forward-path>,表示各个邮件接收者的地址。

DATA:无参数,接收SMTP将把其后的行为看作邮件数据去处理,以“回车换行.回车换行”标识数据的结尾。

REST:无参数,表示重置会话,当前传输被取消。

NOOP:无参数,表示无操作,服务器应响应OK。

QUIT:无参数,表示要求接收SMTP返回一个OK应答并关闭传输。

VRFY:参数<string>,表示验证指定的邮箱是否存在。

EXPN:参数<string>,表示验证给定的邮箱列表是否存在。

HELP:无参数,查询服务器支持什么命令。

SMTP客户端向SMTP服务器发送命令之后,SMTP服务器就会返回一个应答码。应答码的每一个数字都有特定含义,第一位数字为2时表示命令成功,为5时表示失败,3时表示没有完成。下面详细描述应答码的含义。

501:表示参数格式错误;

502:表示命令不可实现;

503:表示错误的命令序列;

504:表示命令参数不可实现;

211:表示系统状态或系统帮助响应;

214:表示帮助信息;

220:表示服务就绪;

221:表示服务关闭;

421:表示服务未就绪,关闭传输信道;

250:表示要求的邮件操作完成;

251:表示用户非本地;

450:表示要求的邮件操作未完成,邮箱不可用;

550:表示要求的邮件操作未完成,邮箱不可用;

451:表示放弃要求的操作;

551:表示用户非本地;

452:表示系统存储不足,要求的操作未执行;

552:表示过量的存储分配,要求的操作未执行;

553:表示邮箱名不可用,要求的操作未执行;

354:表示开始邮件输入,以“.”结束;

554:表示操作失败[4]


POP3(Post Office Protocol 3)是适用于客户-服务器结构的脱机模型的电子邮件协议。它规定了怎样将个人计算机连接到Internet邮件服务器和下载电子邮件的电子协议,允许用户从服务器上把邮件存储到本地主机上,同时删除保存在邮件服务器上的邮件[5]。POP3服务器是遵循POP3协议的接收邮件服务器,用来接收电子邮件。

在POP3协议中有三种状态:认可状态,处理状态和更新状态。

当客户机与服务器建立联系时,一旦客户机提供了自己身份并成功确认,即由认可状态转入处理状态,在完成相应的操作后客户机发出QUIT命令,则进入更新状态,更新之后重返认可状态。大多数现有的POP3客户机与服务器执行采用ASCII明文发送用户名和口令,在认可状态等待客户连接的情况下,客户发出连接,并由命令user/pass对在网络上发送明文用户名和口令给服务器进行身份验证,一旦确认成功,边转入处理状态。

POP3命令由命令和参数组成。所有命令以一个回车换行CRLF结束。命令和参数由可打印的ASCII字符组成,他们之间由空格隔开。命令一般是三到四个字母,每个参数却可达四十个字符长。POP3响应是有一个状态码和一个可能跟有附加信息的命令组成。所有响应也是有回车换行CRLF结束的。有两种状态码,状态码“+OK”表示成功,状态码“-ERR”表示失败。

下面对POP3命令进行详细介绍。

USER:参数username,在认可状态下有效,表示用户名;

PASS:参数password,在认可状态下有效,表示用户密码,与命令USER一起使用,如果操作成功,就导致状态转换;

APOP:参数为Name和Digest,在认可状态下有效,其中Digest是MD5消息摘要;

STAT:无参数,在处理状态下有效,它请求服务器返回关于邮箱的统计资料;

UIDL:参数为[Msg#],在处理状态下有效,它返回邮件的惟一标识符;

LIST:参数为[Msg#],在处理状态下有效,他返回邮件数量和每个邮件的大小;

RETR:参数为[Msg#],在处理状态下有效,它返回由参数标识的邮件的全部文本;

DELE:参数为[Msg#],在处理状态下有效,它表示服务器将有参数标识的邮件标记为删除。执行QUIT命令后,邮件将删除;

RSET:无参数,在处理状态下有效,服务器取消所有标记为删除的邮件,用于撤销DELE参数;

TOP:参数为[Msg#],在处理状态下有效,服务器将返回由参数标识的邮件前n行内容,n必须是正整数;

NOOP:无参数,在处理状态下有效,服务器返回一个肯定的响应;

QUIT:无参数,在更新状态下有效,退出。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值