POP3

<script type="text/javascript"> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
   
POP3协议命令原始码及工作原理
一 简介:
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 t
ry again.
由于非正常操作引起POP3程序内部机制锁住该次会话。
11. Foxmail与OE(outlook express)的处理机制的不同。
a. 假定服务器上有三封邮件等待客户机接收。用foxmail与OE的不同之处在于
foxmail每收一封标记删除一封,而OE则等全部接收完后再全部标记为删除最后执行qui
t命令。
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
--
 
### POP3 协议的工作原理 POP3(Post Office Protocol Version 3)是一种用于接收电子邮件的协议,它允许用户通过邮件客户端从远程邮件服务器上下载并读取邮件。该协议的核心工作流程基于请求-响应模式,在此过程中,客户端向服务器发送命令以获取所需的操作结果。 具体来说,当用户启动支持 POP3 的邮件客户端时,客户端会尝试连接到指定的邮件服务器上的端口(通常是110)。一旦建立连接成功,双方将按照一系列预定义的标准指令集进行交互[^1]。这些标准指令包括但不限于 `USER` 和 `PASS` 命令来验证身份;以及诸如 `LIST`, `RETR`, 或者 `DELE` 来列举、检索或者删除特定消息等内容[^2]。 以下是简化版的 Python 脚本展示如何利用 poplib 库模拟简单的 POP3 客户端行为: ```python import getpass, poplib def fetch_email(pop_server_address, user_name): password = getpass.getpass(prompt='Enter your email account\'s password:') try: server_connection = poplib.POP3_SSL(pop_server_address) # Identify yourself to the POP3 server. server_response = server_connection.user(user_name) # Send your password and authenticate. server_response = server_connection.pass_(password) # Get info on all emails (optional). num_messages = len(server_connection.list()[1]) print(f'Total number of messages: {num_messages}') for i in range(num_messages): raw_message = b"\n".join(server_connection.retr(i+1)[1]).decode('utf8') print(raw_message) server_connection.quit() except Exception as e: print(str(e)) fetch_email("pop.example.com", "your_username@example.com") ``` 这段脚本展示了怎样创建一个基础的 POP3 连接,并打印出邮箱里的每封信件的内容。注意实际应用中还需要处理更多异常情况和安全性考量。 关于配置方面,通常需要设置以下几个参数: - **Server Address**: 提供服务的邮件服务器地址。 - **Port Number**: 默认情况下 SSL 加密下的端口号为995,而非加密状态下则使用的是110。 - **Authentication Credentials**: 用户名与密码组合用来登录对应的账户。 最后值得注意的一点是尽管 POP3 易于理解和操作,但对于那些希望保持在线同步状态或是频繁更新文件夹结构的需求群体而言可能并不理想,因为它的设计理念偏向一次性转移数据至本地存储环境之后即断开关联。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值