0

0

POP3协议命令原始码及工作原理_PHP

php中文网

php中文网

发布时间:2016-06-01 12:37:23

|

1274人浏览过

|

来源于php中文网

原创

POP3

有道智云AI开放平台
有道智云AI开放平台

有道智云AI开放平台

下载
http://www.linuxforum.net Jephe Wu (2001-04-21 18:17:49)
一 简介:

1. POP适用于C/S结构的脱机模型的电子邮件协议,目前已发展到第三版,称POP3。脱机模型即不能在线
   操作,不像IMAP4(netscape支持IMAP4)

2. 当客户机与服务器连接并查询新电子邮件时,被该客户机指定的所有将被下载的邮件都将被程序下载到
   客户机,下载后,电子邮件客户机就可以删除或修改任意邮件,而无需与电子邮件服务器进一步交互。

3. POP3客户向POP3服务器发送命令并等待响应,POP3命令采用命令行形式,用ASCII码表示。
   服务器响应是由一个单独的命令行组成,或多个命令行组成,响应第一行以ASCII文本+OK或-ERR指出相应
   的操作状态是成功还是失败

4. 在POP3协议中有三种状态,认可状态,处理状态,和更新状态。
   当客户机与服务器建立联系时,一旦客户机提供了自己身份并成功确认,即由认可状态转入处理状态,
   在完成相应的操作后客户机发出quit命令,则进入更新状态,更新之后最后重返认可状态。如下图

 等待连接        身份确认         quit命令
   ——  |认可|————— |处理|——————|更新|
           |__________________________________|
                  重返认可状态

5. 认可状态的命令语句
   一般情况下,大多数现有的POP3客户与服务器执行采用ASCII明文发送用户名和口令,在认可状态等
待客户连接的情况下,客户发出连接,并由命令user/pass对在网络上发送明文用户名和口令给服务器
进行身份确认。一旦确认成功,便转入处理状态。
    为了避免发送明文口令的问题,有一种新的认证方法,命令为APOP,使用APOP,口令在传输之前被加密。
当第一次与服务器连接时,POP3服务器向客户机发送一个ASCII码问候,这个问候由一串字符组成对每个客
户机是唯一的,与当时的时间有关,然后,客户机把它的纯文本口令附加到从服务器接收到的字符串之后,
然后计算出结果字符串的MD5单出函数消息摘要,客户机把用户名与MD5消息摘要作为APOP命令的参数一起发送
出去。
    目前,大多数windows上的邮件客户软件不支持APOP命令,qpopper支持。

6. POP3命令码如下:
 命令          参数       状态     描述
------------------------------------------
USER          username    认可     此命令与下面的pass命令若成功,将导致状态转换
PASS          password    认可     
APOP          Name,Digest 认可     Digest是MD5消息摘要
------------------------------------------
STAT          None        处理     请求服务器发回关于邮箱的统计资料,如邮件总数和总字节数
UIDL          [Msg#]      处理     返回邮件的唯一标识符,POP3会话的每个标识符都将是唯一的
LIST          [Msg#]      处理     返回邮件数量和每个邮件的大小
RETR          [Msg#]      处理     返回由参数标识的邮件的全部文本
DELE          [Msg#]      处理     服务器将由参数标识的邮件标记为删除,由quit命令执行
RSET          None        处理     服务器将重置所有标记为删除的邮件,用于撤消DELE命令
TOP           [Msg#]      处理     服务器将返回由参数标识的邮件前n行内容,n必须是正整数
NOOP          None        处理     服务器返回一个肯定的响应
------------------------------------------
QUIT          None        更新     

a.客户机希望结束这次会话
b.如果服务器处于‘处理’状态,那么将进入‘更新’状态以删除任何标记为删除的邮件
c.导致由处理状态到更新状态,又重返认可状态的转变
d.如果这个命令发出时服务器处于‘认可’状态,则结束会话,不进行‘更新’状态。

7. POP3协议在TCP/110端口上等待客户连接请求。

8. 若密码为明文,我如何监听?
下面的命令在服务器运行后在屏幕上显示POP3连接及命令发送的过程:
#sniffit -a -A. -p 110 -b -s 192.169.11.12 
   note: 192.168.11.12是客户机IP地址
         你需要事先安装sniffit这个端口监听程序

9. 考虑这种情况,若客户在收取邮件时,假定为15封信等待接收,但由于线路问题,收到第10封时断线了,
   为什么下次收时仍然从第一封开始,也即为什么前10封没有被从服务器上删除掉?
   
任何邮件的删除都必须在quit命令发出后对已标记为删除的邮件执行删除操作,由于中途断线,仍处于
处理状态,没有机会执行quit命令以进行状态转换。

10. pop3 session is locked by another session, please wait 10 minutes then try again.

由于非正常操作引起POP3程序内部机制锁住该次会话。

11. Foxmail与OE(outlook express)的处理机制的不同。
 
a. 假定服务器上有三封邮件等待客户机接收。用foxmail与OE的不同之处在于
   foxmail每收一封标记删除一封,而OE则等全部接收完后再全部标记为删除最后执行quit命令。

       Foxmail           OE
  -------------------------------
       retr 1            retr 1
       dele 1            retr 2
       retr 2            retr 3
       dele 2            dele 1
       retr 3            dele 2
       dele 3            dele 3
       quit              quit
b. Foxmail的远程邮件管理是非常优秀的管理工具,假定服务器上有三封信,对第一封,我们不想接收
   想从服务器直接删除;对第二封,想接收但不删除,对第三封,这一次不想接收,分别标记后
   最后foxmail发出的命令是

    dele 1
    retr 2
    quit

c. 若没有foxmail,正好有几封很大的信堵住了,我不想接收,想直接删除它,或者想查看这两封是谁发的?

    直接在windows的DOS窗口下用命令行操作,如:
  # telnet my.isp.net  110
   user 'username'
   pass 'password'
   list
   dele 3
   dele 5
   quit


Jephe Wu


相关文章

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
php源码安装教程大全
php源码安装教程大全

本专题整合了php源码安装教程,阅读专题下面的文章了解更多详细内容。

7

2025.12.31

php网站源码教程大全
php网站源码教程大全

本专题整合了php网站源码相关教程,阅读专题下面的文章了解更多详细内容。

4

2025.12.31

视频文件格式
视频文件格式

本专题整合了视频文件格式相关内容,阅读专题下面的文章了解更多详细内容。

7

2025.12.31

不受国内限制的浏览器大全
不受国内限制的浏览器大全

想找真正自由、无限制的上网体验?本合集精选2025年最开放、隐私强、访问无阻的浏览器App,涵盖Tor、Brave、Via、X浏览器、Mullvad等高自由度工具。支持自定义搜索引擎、广告拦截、隐身模式及全球网站无障碍访问,部分更具备防追踪、去谷歌化、双内核切换等高级功能。无论日常浏览、隐私保护还是突破地域限制,总有一款适合你!

7

2025.12.31

出现404解决方法大全
出现404解决方法大全

本专题整合了404错误解决方法大全,阅读专题下面的文章了解更多详细内容。

42

2025.12.31

html5怎么播放视频
html5怎么播放视频

想让网页流畅播放视频?本合集详解HTML5视频播放核心方法!涵盖<video>标签基础用法、多格式兼容(MP4/WebM/OGV)、自定义播放控件、响应式适配及常见浏览器兼容问题解决方案。无需插件,纯前端实现高清视频嵌入,助你快速打造现代化网页视频体验。

4

2025.12.31

关闭win10系统自动更新教程大全
关闭win10系统自动更新教程大全

本专题整合了关闭win10系统自动更新教程大全,阅读专题下面的文章了解更多详细内容。

3

2025.12.31

阻止电脑自动安装软件教程
阻止电脑自动安装软件教程

本专题整合了阻止电脑自动安装软件教程,阅读专题下面的文章了解更多详细教程。

3

2025.12.31

html5怎么使用
html5怎么使用

想快速上手HTML5开发?本合集为你整理最实用的HTML5使用指南!涵盖HTML5基础语法、主流框架(如Bootstrap、Vue、React)集成方法,以及无需安装、直接在线编辑运行的平台推荐(如CodePen、JSFiddle)。无论你是新手还是进阶开发者,都能轻松掌握HTML5网页制作、响应式布局与交互功能开发,零配置开启高效前端编程之旅!

2

2025.12.31

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 6.3万人学习

Django 教程
Django 教程

共28课时 | 2.6万人学习

React 教程
React 教程

共58课时 | 3.1万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号