命令后,消息指针保持不变.
所有情况下,服务器返回当前消息的内容.
用户用QUIT命令关闭一个对话,服务器返回一个消息---OK.
正常的对话过程如下表示:
用户服务器
等待连接
打开连接-->
<--服务器进入就绪状态,等待命令
HELO命令和账号.密码-->
<--发送#13消息,等待命令
读取#13消息-->
<--=537charactersinthatmessage
等待命令
RETR命令-->
<--(发送数据)
等待命令
ACKS消息-->
<--=0数据传输完毕
WaitforCommand
QUIT-->
<-- OK
关闭连接--><--关闭连接
等待连接(回到初始状态)
参数
下面的参数有确定的含义:
user–用户账号
passWord–账号密码
mailbox–邮箱名(或文件夹名)
默认邮箱
TOPS-20系统
MAIL.TXT.1-fromloginDirectory
UNIX系统
/usr/spool/mail/user
和
/usr/user/Mail/inbox/*
"user"是由HELO命令提供的参数.
文件结束标志
文件结束标志是由一个回车符(CR)和换行符(LF)表示的.在文件中用"CRLF"表示.
这个标志在在命令和回答中都会用到.
消息长度
对READ命令和确认命令(ACKS,ACKD,NACK)的回答是下一个要传递的消息的长度,
包括所有消息字符.CRLF被认为是两个字符.长度为零的消息意味着消息不存在或为
空.请求传递一个零长度的消息意味着关闭连接.这是在因特网标准RFC822和NVT-
ASCII中定义的.
邮件数
对HELO和FOLD命令的回答是被选邮箱中邮件的数目的统计.READ命令需要一个
参数来指定要阅读的邮件.所有的数都用十进制来表示,并且从一开始.这意味着邮箱中
第一条邮件用"1"来表示.
这篇文档中的所有数字都用十进制来表示.
转义引用
一些情况下,参数中需要用非凡的字符,二这是语法所不答应的.例如:密码中的一
个空格.为了做到这一点,我们需要用转义会话.不幸的是,我们不得不采用让人讨厌的
字符.在本协议中,我们用反斜杠"".参数中的一个空格字符需要用两个字符来表示"
空格".这种转义引用只用在命令参数中,回答RETR命令的邮件数据不需要这种方法.
回答串
第一个字符必须时非凡指定的(如" ","-","=","#").紧跟的选项串可以是任意
值.
命令和回答的定义
命令和回答总汇
命令回答
---------------
HELOuserpassword OK
FOLDmailbox-Error
READ[n]#xxx
RETR=yyy
ACKS
ACKD
NACK
QUIT
命令解释
HELOuserpassword
HELO命令用来认证用户.它的信息被服务器用来确定用户对邮箱的使用权.
该命令的要害字是HELO,后面是用户的账号和密码,然后是CRLF.
可能的应答:
"#nnn"nnn是默认邮箱的邮件数.
"-errorreport"错误报告并断开连接.
FOLDmailbox
该命令选择一个邮箱或一个文件夹.服务器必须判定用户是否有权限访问
该邮箱或文件夹.假如邮箱为空或不存在,消息数为0.该命令的要害字时"FOLD",
后面跟mailbox参数,然后是CRLF.
可能的应答:
"#nnn"nnn是邮箱中邮件总数.
READ[nnn]
READ命令开始传递数据.假如READ命令中未给参数,意味着读取当前邮件.
一个READ命令首先设置邮件指针为参数值,然后服务器返回邮件长度.假如没有邮件可读,
返回的邮件长度等于零.假如邮件已经被ACKD命令删除,也返回零长度.跟在READ命令后的
是RETR命令,READ命令,FOLD命令或QUIT命令.不要企图用RETR命令来操作一个零长度的
邮件.该命令的要害字是"READ".接在后面的是邮件数参数和CRLF.
可能的应答:
推荐阅读
- 远程用户拨号认证系统 RADIUS记帐协议
- RADIUS计费对于支持隧道协议的修正
- PKCS #5: 基于口令的密码系统规范 版本2.0
- 4 OSI IS-IS 域内路由协议
- 边界网关协议 BGP-4的路由刷新功能
- IOTP Internet开放贸易协议HTTP 补充
- 实时传输协议管理信息库
- HTTP 超文本传输协议状态管理的应用
- 网络文件系统协议
- 约定房产归属的离婚协议有效吗