本文中讲解的 Microsoft Exchange Server Internet 协议
- 服务器端协议
- 客户端协议
疑难解答技巧
- 介绍和示例
- 协议命令和响应概述
- 协议记录
何处可以找到其它信息
- RFC 索引
本文中讲解的 Microsoft Exchange Server Internet 协议
Microsoft® Exchange Server 从第一次发布时起,就支持 Internet 协议。随着产品的发展,Microsoft 在现有协议组中添加了一些新的协议,以及更多的功能。本文档介绍了 Exchange Server Internet 协议,并提供了对这些 Internet 协议进行疑难解答的基本指导方针。
首先要注意的是,Exchange Server 在实现这些 Internet 协议时与 RFC 是 100% 兼容的,这一点很重要。下列表格列出了这些协议,以及 Exchange Server 的哪个版本对其提供支持。
协议 |
SMTP |
HTTP |
NNTP |
LDAP |
POP3 |
IMAP4 |
---|---|---|---|---|---|---|
Exchange 4.0 |
* |
|||||
Exchange 5.0 |
* |
* |
* |
* |
* |
|
Exchange 5.5 |
* |
* |
* |
* |
* |
* |
这些协议可划分为两类:“服务器端协议”和“客户端协议”。服务器端协议通常是 Exchange Server 用来连接到另一台邮件服务器,并向其传送电子邮件的协议。客户端协议是客户端用来访问 Exchange Server 计算机上的电子邮件的协议。协议的这两个分组在某些情况下是重叠的,这在本文稍后部分的“协议命令和响应概述”一节中的 POP3 和 IMAP4 小节中进行了说明。
服务器端协议
简单邮件传输协议 (SMTP) 是服务器端协议,它允许 Microsoft Exchange Server 通过 Internet 连接到另一个能使用 SMTP 的服务器,以便传送邮件。此协议的细节在 RFC-821 中进行了概述。但重要的是讨论此协议的概念,以便了解它可能会出现的问题。此协议只概述了邮件是如何传送的,而并未包括邮件内容的详细信息。它是一个指导方针,说明了一个 SMTP 主机应发出哪些命令,以及接收命令的主机为使邮件流出现,应如何解释这些命令。
Microsoft 在其 Exchange Server(4.0 版)第一次发布时,就在一个通常称为 Internet Mail Connector (IMC) 的组件中,实现了 SMTP 协议。在 Exchange Server 5.x 中,此组件被重命名为 Internet Mail Service。Internet Mail Service 是一个复杂的组件,它带有一个有不同职责的数组,这些职责包括建立和接收 TCP/IP 连接、将邮件从一种格式转换为另一种,以及附件的编码和解码。本文档介绍了通过 SMTP 协议进行的 Internet Mail Service 邮件传送和邮件接收。
客户端协议
Exchange Server 中包括的客户端协议为用户提供了访问其信息的更多方法。其目的是为用户提供一种方法,使其能在 Internet 上任何地方,使用任何兼容客户机,从任何平台上发送和接收邮件。两个最常见的只读协议是 HTTP 和 POP3。
超文本传输协议 (HTTP) 是 Web 浏览器(如 Microsoft® Internet Explorer)使用的协议,用来查看 Web 页和基于万维网的内容。在 Microsoft® Outlook Web Access (OWA) 组件中,使用了 Exchange Server 的 HTTP 实现。OWA 使任何有 Web 浏览器的用户能够发送和接收电子邮件、为公用文件夹提供内容,以及查看公用文件夹。
邮局协议 3 (POP3) 是在 Exchange Server 5.0 中提供的。它是一个只读协议,允许 POP3 客户端在 Internet 上的任何地方连接到 Exchange Server 计算机,并将邮件下载到本地,以便阅读。该协议是只读协议,因为在 POP3 协议中没有发送电子邮件的定义。POP3 客户端使用 SMTP 协议和 Exchange Server 计算机的 Internet Mail Service 发送邮件。POP3 协议只提供对用户“收件箱”的访问。Exchange Server 将此协议作为信息存储的一项任务实现。
Internet 消息访问协议 4 (IMAP4) 尽管与 POP3 类似,但允许用户访问他们的任何文件夹,而不仅仅是收件箱。出于此原因,它比 POP3 更复杂;但是它仍旧遵从相同的标准,是一个只读协议。和 POP3 一样,IMAP4 使用 SMTP 发送电子邮件。IMAP4 也如信息存储过程那样运行。
轻型目录访问协议 (LDAP) 是一个简单的协议,它允许客户端在 Exchange 目录中查询几乎所有种类的信息。它最常用于访问邮箱属性,以便在写邮件时,发件人能够了解收件人的更多详细情况。LDAP 协议不限制它自己的实现。它可用于读和写邮箱信息,或任何种类的基于目录的信息。Exchange Server 5.0 实现的 LDAP 限于只读。在 5.5 版中,LDAP 客户端能够对 Exchange 目录进行读操作和写操作。LDAP 服务器是 Microsoft Exchange 目录服务的一项功能。
网络新闻传输协议 (NNTP) 通常称为“Internet 新闻协议”,因为它包含从一台计算机向另一台计算机传输新闻条目的规则。此处提及的 NNTP 是作为一个客户端/服务器端协议;但是它也包括基于服务器到服务器的新闻传送。Exchange Internet News Service 与公用信息存储合作,提供 NNTP 访问。
疑难解答技巧
介绍和示例
在从一台主机向另一台主机建立连接后,以上讨论的所有协议都管理一套规则,或一个对话。该连接是到接收主机上的特殊端口的 TCP 连接。TCP 连接是要求在可以传输或接收数据前建立一个会话的连接。当会话建立后,使用命令来来往往地发送数据。对话完成后,将放弃会话。以下是一个协议及其监听的 TCP 端口的列表。
协议 |
端口 |
---|---|
SMTP |
25 |
HTTP |
80 |
NNTP |
119 |
LDAP |
389 |
POP3 |
110 |
IMAP4 |
143 |
解决协议疑难问题的第一步是验证您已建立了一个到主机的成功的 TCP 连接。解决这一问题的最简单方法是,使用 telnet 命令,连接到所需端口。不要用“Ping”命令测试主机。 Ping 实用程序不告诉您主机正在监听端口 25。它只是显示,一个低级数据包能够找到通往正确 IP 地址的途径。此外,许多公司阻止 Ping 或 ICMP 数据包,使其甚至不能进入公司的网络。解决所有这些协议问题的最好方法是使用 telnet 命令。要得到对 Telnet 工作方式的感性认识,试着使用 Telnet,连接到您的本地 Exchange Server 计算机端口 25。语法为:
例如:
以上的两个示例都能连接到端口 25,但第一个是最可靠的。在使用系统的 IP 地址进行系统寻址时,您可避免出现名称解析问题的可能性。以上示例应带出一个 Telnet 窗口,和一条成功连接消息,表明您可以开始向主机发送邮件。这象征着主机在端口 25 上监听,您或许可以向主机发送一个 SMTP 邮件。以上的示例与 Exchange Internet Mail Service 连接以便发送电子邮件时的情况类似。至此,Internet Mail Service 开始向主机发送 SMTP 命令,以便启动邮件传送。
所有这些协议的工作方式是相似的。它们全部包括发送到主机的命令,以及预期的回复。在您断定可与正确端口建立成功连接后,就可以开始检查命令发出时对主机的实际响应。
最佳测试方法是真正地使用 Telnet 命令向主机发出命令。如果您确切地知道您需要发送什么内容,以及如何发送,或者您知道您的客户端/服务器端程序正在试图发送什么内容,那么这种方法是很有效的。问题是您能够看到所给的典型响应,但看不到主机正在发送的内容。
以下是一个发送给 SMTP 主机的典型 Telnet 会话示例。
如果您的浏览器不支持内嵌框,请在单独的页中查看。
- HELO 命令发出,而且服务器对其响应,显示它理解并接受该命令。
- MAIL FROM 告知主机发件人是谁。服务器再次成功响应。
- RCPT TO 告知主机要将此邮件传送给谁。
这些命令将在“协议命令和响应概述”一节中进一步讨论。
以下示例说明了一个测试 POP3 身份验证的 Telnet 会话。
如果您的浏览器不支持内嵌框,,可在单独的页面中查看。
- USER 命令(后面跟着适当的登录验证信息),用于登录到 POP3 邮箱。
- PASS 命令发出获得访问权限的密码。
- Exchange Server 返回“+OK User successfully logged on”。
协议命令和响应概述
所有命令都以回车/换行 (CR/LF) 终止。(.Tld 代表顶层域。)
命令 |
预期响应 |
说明 |
---|---|---|
HELO |
250 OK |
开始主机间对话。 |
MAIL FROM: <user@domain.tld> |
250 OK |
标识邮件的发件人。 |
RCPT TO: <user@domain.tld> |
250 OK |
标识邮件的收件人。 |
DATA |
354 Send Data |
标识邮件数据的开始点。 |
.(一个句号) |
250 OK |
标识邮件数据的结束点。 |
QUIT |
221 |
终止会话。 |
命令 |
预期响应 |
说明 |
---|---|---|
USER ntdomain/ntaccount/别名 |
+OK |
开始身份验证过程。 |
PASS nt_password |
+OK |
为 Windows NT 帐户指定密码。 |
LIST |
+OK |
列出可供下载的邮件。 |
RETR邮件号 |
邮件正文 |
检索“邮件号”对应的邮件正文。 |
DELE邮件号 |
+OK |
删除“邮件号”对应的邮件。 |
QUIT |
+OK |
终止会话。 |
IMAP4
向 IMAP4 服务器发出的所有命令必须以命令标识符为前缀。此标识符是客户能够解释的,以便跟踪命令和响应对。
例如,当您的 IMAP 客户机发出本地 SELECT 收件箱时,服务器的响应为本地 OK。
命令 |
预期响应 |
说明 |
---|---|---|
LOGIN ntdomain/ntaccount/别名密码 |
OK LOGIN |
登录到邮箱。 |
SELECT 文件夹 |
文件夹模式和 OK SELECT |
选择要查看的文件夹。 |
FETCH 邮件号 |
邮件正文和 OK FETCH |
按“邮件号”检索邮件。 |
STORE 邮件标志\标志 |
OK STORE |
为邮件作删除或已读/未读标记。 |
EXPUNGE |
OK |
删除所有作了标记的邮件。 |
LOGOUT |
OK |
终止会话。 |
当命令被拒绝时,会得到一个 NO 响应。
NNTP
NNTP 访问有两种模式:身份验证和匿名。身份验证需要以下列出的命令中的前两个。
命令 |
预期响应 |
说明 |
---|---|---|
AUTHINFO USER ntdomain/ntaccount/用户名 |
381 More Info Needed |
提供身份验证信息。 |
AUTHINFO PASS密码 |
281 Accepted |
提供身份验证密码。 |
LIST |
组列表 |
列出所有可用组。 |
GROUP 组 |
分组规范 |
设置当前组。 |
ARTICLE 文章号 |
文章正文 |
按“文章号” 检索文章。 |
QUIT |
205 |
终止会话。 |
协议记录
第二种疑难解答的方法仅适用于 Exchange Server。Exchange Server 为它的多数协议执行协议记录。当所涉及的协议的协议记录开启时,主机间的实际对话被转录为一个文本文件。这是疑难解答的最佳方法之一。它唯一的缺点是,有时,在有大量连接的情况下,难以确定哪个对话适用于您的问题。
可为 SMTP、POP3、IMAP4 和 NNTP 启用协议记录。以下是选自 Internet Mail Service 的示例 SMTP 协议日志:
以上的协议日志显示了连接到另一台 Exchange Server 计算机的 Internet Mail Service。“>>>”和“<<<”显示了数据是从何方向而来。“>>>”暗示发送数据的是本地服务器。
启动 SMTP 协议记录的步骤
- 启动 Exchange Server Administrator 程序。
- 选择 Internet Mail Service。在 File 菜单上选择 Properties。
- 单击 Diagnostic Logging 选项卡。
- 选择 SMTP Protocol Log,并将其设置为 Maximum。
- 关闭 Internet Mail Service 属性页。
- 停止并重新启动 Internet Mail Service。
在协议记录开启的情况下,Internet Mail Service 在 Exchange Server 计算机上的 Exchsrvr\Imcdata\Log 子目录中创建一个 L000000#.log 文件。一定要记住,根据通过连接器的邮件量,这些 .log 文件会在硬盘上占用大量的空间。协议记录应仅用于解决特殊的问题,而在正常使用连接器时,应将其关闭。
启动 POP3、IMAP4 和 NNTP 协议记录的步骤
- 在 Exchange Server 计算机上,使用 REGEDT32,运行注册表编辑器。
- 转到以下子项:
HKEY_LOCAL_MACHINE \SYSTEM \CurrentControlSet \Services \MSExchangeIS \ParametersSystem
- 将 \POP3_Protocol_Logging_Level 的值更改为 1 到 4 之间的值(1 = 最小,4 = 最大)。
- 更改 \POP3_Protocol_LogPath 的值,使其指定您想要写日志文件的地方。
- 关闭 REGEDT32。
- 停止并重新启动信息存储服务,以便使日志记录生效。
- IMAP4 和 NNTP 日志记录可在同一个注册表配置单元中找到,要想开启它们,可使用:
\IMAP4_Protocol_Logging
\NNTP_Protocol_Logging
在协议记录开启的情况下,信息存储在所涉及的协议的注册表中指定的路径中,创建一个 L000000#.log 文件。默认情况下,在 Exchsrvr\Mdbdata 中创建该文件。与 SMTP 协议记录相同的规则在此也适用:POP3、IMAP4 和 NNTP 协议记录仅应用于解决特殊问题,在正常使用中,应将其关闭,以避免昂贵的管理开销。
何处可以找到其它信息
本文档介绍了解决 Exchange Server Internet 协议问题的基本指导方针。本文档的“协议命令和响应概述”一节中的协议命令和响应表仅包含与选定的协议相关的部分命令列表。要得到完整的命令列表和语法的详细信息,最好的方法始终是查阅 RFC。
协议 |
RFC |
---|---|
SMTP |
RFC-821, RFC-1869 |
POP3 |
RFC-1939, RFC-1734 |
IMAP4 |
RFC-2060, RFC-2088, RFC-1731 |
NNTP |
RFC-977 |
LDAP |
RFC-1777 |
© 1998 Microsoft Corporation. 版权所有。
本文档包含的信息代表了发布之日,Microsoft Corporation 对所讨论问题的当前看法。因为 Microsoft 必须顺应不断变化的市场条件,故该文档不应被理解为 Microsoft 一方的承诺,Microsoft 不保证所给出的信息在发布之日以后的准确性。
本白皮书仅供参考。在本文档中,Microsoft 不作任何明示的或默示的保证。
BackOffice、BackOffice 徽标和 Microsoft 是 Microsoft Corporation 的注册商标。
此处提到的其它产品或公司名称可能是其各自所有者的注册商标。
Microsoft Corporation • One Microsoft Way • Redmond, WA 98052-6399 • USA
,
文章来源于领测软件测试网 https://www.ltesting.net/