pop3协议auth指令总结

在使用Pop3协议时用到auth指令,现总结如下:

AUTH机制[初始响应]

机制:标识SASL认证机制的字符串

初始响应:可选的初始客户端响应,如在[RFC4422]的第3节中定义。如果存在, 这个回应必须编码为Base64(在第4节中指定)[RFC4648]),或者仅由单个字符 “=”组成,其中代表一个空初始响应。

限制:

AUTH命令成功完成后,不再需要 AUTH命令在同一会话中被发出。在一个成功的AUTH命令完成后,服务器必须拒绝接下来所有带有-ERR回复的AUTH命令。

AUTH命令只能在授权状态期间给出。

讨论:

AUTH命令启动客户端和服务器之间的SASL认证交换。客户端识别SASL机制与AUTH命令的第一个参数一起使用。如果服务器支持被请求认证机制,它执行SASL交换来验证用户。可选地,它还协商安全层后续的协议交互。如果请求的身份验证机制不受支持,即服务器用-ERR回复拒绝AUTH命令。

认证协议交换由一系列的服务器挑战和特定于选择SASL机制的客户端响应。

服务器质询作为由字符“+”组成的行发送,后跟单个空格和字符串编码

使用Base64,如[RFC4648]的第4节所述。这个行不得包含除BASE64编码的挑战以外的任何文本。

客户端响应由包含编码为Base64的字符串的行组成。如果客户希望取消

认证交换,它发出一行只有一个“*”的数据。如果服务器收到这样的响应,它必须通过发送一个-ERR回复拒绝这样的AUTH命令。

AUTH命令的可选初始响应参数是用于在使用认证机制时保存整个过程

来支持初始的客户端响应。如果初始响应参数被省略并且选择的机制需要

一个初始的客户端响应,服务器务必继续告知这是一个空的挑战,如[RFC4422]的第3部分所定义的。在POP3中,一个空的服务器挑战被定义为一行只有一个“+”,后跟一个空格。它不能包含任何内容的其他数据。

为了初始的客户端响应的目的,单个命令的长度限制为255个8位字节,在[RFC2449]的第4节中定义,并且仍然适用。如果指定了初始响应会导致AUTH命令超过这个长度,即客户端不得使用初始响应参数(并且必须在来自服务器的空挑战之后继续发送其初始响应,如[RFC4422]的第3部分)。

如果客户需要发送一个零长度的初始响应,它必须以单个等号(“=”)传送响应。这个表示响应存在,但不包含数据。

如果客户端使用AUTH命令的初始响应参数与不支持初始化的SASL机制客户端发送,服务器必须使用-ERR回复拒绝AUTH命令。

如果服务器不能Base64解码客户端响应,它必须用-ERR回复拒绝AUTH命令。如果客户不能Base64解码任何服务器的挑战,它必须使用“*”响应取消认证。特别注意的是,服务器和客户端必须拒绝(而不是忽略)任何不在Base64编码表明确允许的字符,并且必须拒绝任何除了字符串结尾之外再任何地方包含填充字符(‘=‘)的Base64字符序列(例如,“= AAA”和“AAA = BBB”是不允许的)。

除了初始的客户端响应,这些BASE64字符串可能是任意长度,根据使用的身份验证机制。客户端和服务器必须能够处理他们支持的认证机制产生的最大的编码挑战和响应。这个要求是独立于客户端或服务器的任何行长限制可能在其协议实施的其他部分。

如果服务器无法验证客户端,它必须用-ERR回复拒绝AUTH命令。如果客户成功完成交换,服务器发出一个+ OK回复。此外,成功后,POP3会话将进入TRANSACTION状态。

SASL交换机制生成的授权标识是一个简单的用户名,并应该使用StringPrep算法(参见[RFC3454]))的SASLprep配置文件(请参阅[RFC4013])去准备这些名称进行匹配。如果准备好授权身份失败或空字符串的结果(除非它是作为空字符串传输的),服务器必须不通过该认证。

如果安全层在SASL交换期间协商,则它对紧跟在CRLF后的八位字节上的客户端生效,该CRLF结束了客户端的最后一次响应。对于服务器,它将成功答复CRLF后立即生效。

当安全层生效时,服务器必须丢弃任何以前从客户端那里获得的消息,不包括从SASL谈判本身获得的。同样,客户端必须丢弃从服务器获得的任何消息,如可用的POP3服务扩展列表。

当传输层安全性(TLS)(见[RFC4346])和SASL安全层是有效的时候,在发送数据时TLS编码必须应用于SASL编码之后。(根据到[RFC2595],STLS在任何情况下都只能在AUTH之前发布。)

请注意,POP3不允许指示成功结果的消息用来发送其他数据(见第3.6节)

[RFC4422])。

由该协议的SASL配置文件指定的服务名称是“pop”。

如果AUTH命令失败,客户端可能会尝试另一个命令认证机制或通过提供不同的凭证发出另一个AUTH命令(或通过使用其他POP3之一认证机制)。同样,服务器必须表现出来

就好像客户端没有发出AUTH命令一样。

确保互操作性,此扩展的客户端和服务器实现必须实现在TLS [RFC2595]上运行的PLAIN SASL机制[RFC4616]。

服务器实现必须实现一个配置,这个机制不会通告或允许任何明文密码机制,除非STLS命令已用于协商TLS会话(参见[RFC2595])。如RFC 4616所述,这个配置应该是默认配置。在TLS会话上使用明文密码机制之前,根据RFC 2595第2.4节要求客户端实现必须验证TLS服务器证书。客户端和服务器实现应该实现不会发送明文密码的附加SASL机制,例如GSSAPI

[RFC4752]机制。

目前市场中邮件加密产品,大多需要重新注册一个邮箱,或者重新部署一套邮件系统,导致原来的邮箱不能用,也就是说需要改变用户习惯,对于大型公司来说邮件系统升级比较困难。

选择对于用户透明的邮件加密产品是个不错的选择,比如天御云安推出的隐密邮在确保邮件内容加密的同时,部署对于用户也是透明的,可以说非常人性化。

网址:https://mail.tyyunan.com/

原文地址:https://blog.51cto.com/14208524/2374364

时间: 2024-10-12 09:44:51

pop3协议auth指令总结的相关文章

PHP+socket+SMTP、POP3协议发送、接收邮件

1.实现SMTP协议的类dsmtp.cls.php: <?php          // 通过socket实现SMTP协议的功能// version: 1.1// author : DCC// create : 2014-01-17 23:38:24// modify : 2014-01-18 16:59:04// more   : http://www.thinkful.cn/archives/389.html          class Dmail_smtp{               

Smtp协议与Pop3协议的简单实现

前言 本文主要介绍smtp与pop3协议的原理,后面会附上对其的简单封装与实现. smtp协议对应的RFC文档为:RFC821 smtp协议 SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式.SMTP协议属于TCP/IP协议族,它帮助每台计算机在发送或中转信件时找到下一个目的地.通过SMTP协议所指定的服务器,就可以把E-mail寄到收信人的服务器上了,整个过程只要几分钟.SMTP服务

Java Mail---SMTP、POP3协议-DOS下手动收发邮件演示过程

转载请注明出处: http://blog.csdn.net/qq_26525215 本文源自[大学之旅_谙忆的博客] E-Mail协议简介: 邮件服务器,按照提供的服务类型,可以分为发送邮件的服务器我接收邮件的服务器. 发送邮件的服务器使用发送协议,现在常用的是SMTP协议.所以,通常发邮件的服务器也称为SMTP服务器. 接收邮件的服务器使用接收协议,现在常用的是POP3协议或IMAP协议,所以通常也被称为POP3或IMAP服务器. 目前经常见到的服务器为SMTP和POP3服务器.如大家在注册了

SMTP协议及POP3协议-邮件发送和接收原理(转)

本文转自https://blog.csdn.net/qq_15646957/article/details/52544099 感谢作者 一. 邮件开发涉及到的一些基本概念 1.1.邮件服务器和电子邮箱 要在Internet上提供电子邮件功能,必须有专门的电子邮件服务器.例如现在Internet很多提供邮件服务的厂商:sina.sohu.163等等他们都有自己的邮件服务器. 这些邮件服务器类似于现实生活中的邮局,它主要负责接收用户投递过来的邮件,并把邮件投递到邮件接收者的电子邮箱中. 电子邮箱(E

POP3协议分析邮箱自动激活用户

使用POP3协议分析邮箱自动激活用户 2015-03-28 Lover雪儿 前几天,我们实现了,用户PHP模拟邮件激活注册用户, 地址:http://www.cnblogs.com/lihaiyan/p/4359927.html ,但是有的时候,往往是需要注册用户自己手动的向服务器的邮箱进行发送一封邮件,然后服务器通过分析邮箱的发件人,从而匹配自动的激活用户账号. 上class.pop3.php 邮件发送人分析php源代码: 1 <?php 2 3 //用户往[email protected]邮

C#基础--基于POP3协议的邮件接收和基于STMP的邮件发送

最近在用outlook同步邮件.对邮件协议有一点兴趣.于是就去收集了一些资料,学习了一下如何通过.net来实现邮件的收发.    一:SMTP协议  1.什么是SMTP协议:       SMTP目前已是事实上的在Internet传输E-Mail的标准,是一个相对简单的基于文本的协议.在其之上指定了一条消息的一个或多个接收者(在大多数情况下被确定是存在的),然后消息文本就传输了.可以很简单地通过Telnet程序来测试一个SMTP服务器,SMTP使用TCP端口25.要为一个给定的域名决定一个SMT

【Python3】POP3协议收邮件

初学Python3,做一个email的例子,虽然知道做的很渣渣,还是分享一下吧 POP3协议 POP3全称Post Official Protocol3,即邮局协议的第三个版本,它规定了怎样将个人计算机连接到Internet的邮件服务器和下载电子邮件的电子协议,它是因特网电子协议的第一个离线标准,POP3允许用户从服务器上将邮件存储到本地主机(个人计算机),同时删除保存在邮件服务器上的邮件,而POP3服务器则是遵循POP3协议的邮件服务器,用来接收电子邮件. Python3支持POP3的模块是p

Yosemite上手动增加基于POP3协议的QQ邮箱账记

不知道是升级到Yosimite还是qq邮箱账户的问题,反正是创建邮箱账号时系统自动创建一个所谓的互联网账号.通过这种方式创建的账号少了一个以往的手动选择账号类型的步骤. 说起来,其实这也是一种进步,可惜的是不知道为什么,通过这种方式建立的邮箱账号在接收邮件时速度超慢,不知各位看官的体验是怎样的,反正老猿是非常的不爽拉. 老猿心中一动,突然想到,还不如使用老的POP3协议接收呢,预先下载到本地,再点击阅读的速度一定会比使用那该死的IMAP快不少. 于是乎,老猿便开始了疼苦的手动配置之旅,原因非它,

Pop3协议详解

POP3全称为Post Office Protocol version3,即邮局协议第3版.它被用户代理用来邮件服务器取得邮件.POP3采用的也是C/S通信 模型 用户从邮件服务器上接收邮件的典型通信过程如下. 1) 用户运行用户代理(如Foxmail, Outlook Express). 2) 用户代理(以下简称客户端)与邮件服务器(以下简称服务器端)的110端口建立TCP连 接. 3) 客户端向服务器端发出各种命令,来请求各种服务(如查询邮箱信息,下载某封邮件等). 4) 服务端解析用户的命