使用 Telnet 测试 SMTP 通信

适用于:Exchange Server 2013

本主题说明如何使用 Telnet 测试邮件服务器之间的简单邮件传输协议 (SMTP) 通信。 默认情况下,SMTP 侦听端口 25。 如果在端口 25 上使用 Telnet,则可以输入用于连接到 SMTP 服务器并发送消息的 SMTP 命令,就像 Telnet 会话是 SMTP 消息服务器一样。 可以看到连接和消息提交过程中每个步骤是成功还是失败。

下面是你可能希望使用 Telnet 测试与 Microsoft Exchange 组织中存在的传输服务器之间的 SMTP 通信的方案:

  • 从外围网络外部的主机连接到组织的面向 Internet 的 Exchange 服务器,并发送测试消息。
  • 从组织的面向 Internet 的 Exchange 服务器连接到远程消息传送服务器并发送测试消息。

本主题中的过程演示如何使用 Telnet 客户端,这是 Microsoft Windows 附带的组件。 第三方 Telnet 客户端可能需要不同于 Windows Telnet 组件的语法。

开始前,有必要了解什么?

  • 估计完成时间:30 分钟

  • Exchange 权限不适用于本主题介绍的过程。 这些过程在Exchange Server或客户端计算机的操作系统中执行。

  • 本主题中的过程最适合用于与允许匿名连接的面向 Internet 的服务器建立连接。 内部 Exchange 服务器之间的消息传输经过加密和身份验证。 若要使用 Telnet 连接到邮箱服务器上的中心传输服务,需要创建一个接收连接器,该连接器配置为允许匿名访问或基本身份验证以接收邮件。 如果连接器允许基本身份验证,则需要一个实用工具将用于用户名和密码的文本字符串转换为 Base64 格式。 由于在使用基本身份验证时很容易识别用户名和密码,因此不建议使用不加密的基本身份验证。

  • 如果连接到远程消息传送服务器,请考虑在面向 Internet 的 Exchange 服务器上执行本主题中的过程。 这有助于避免远程消息传送服务器拒绝测试消息,这些服务器配置为验证源 IP 地址,相应的域名系统 (DNS) 域名,以及尝试将消息发送到服务器的任何 Internet 主机的反向查找 IP 地址。

  • 若要了解本主题中的过程可能适用的键盘快捷键,请参阅 Exchange 管理中心内的键盘快捷键

提示

是否有任何疑问? 在 Exchange 论坛中寻求帮助。 访问 Exchange Server 的论坛。

步骤 1:在 Windows 中安装 Telnet 客户端

默认情况下,大多数 Microsoft Windows 操作系统的客户端或服务器版本中未安装 Telnet 客户端。 要安装它,请参阅 Install Telnet Client(安装 Telnet 客户端)。

步骤 2:使用 Nslookup 在远程 SMTP 服务器的 MX 记录中查找 FQDN 或 IP 地址

若要在端口 25 上使用 Telnet 连接到目标 SMTP 服务器,必须使用完全限定的域名 (FQDN) 或 SMTP 服务器的 IP 地址。 如果 FQDN 或 IP 地址未知,则查找此信息的最简单方法是使用 Nslookup 命令行工具查找目标域的 MX 记录。

  1. 在命令提示符下,键入 nslookup,然后按 Enter。 此命令将打开 Nslookup 会话。

  2. 键入 set type=mx ,然后按 Enter。

  3. 键入 set timeout=20 ,然后按 Enter。 默认情况下,Windows DNS 服务器具有 15 秒递归 DNS 查询超时限制。

  4. 键入要查找其 MX 记录的域名。 例如,若要查找 fabrikam.com 域的 MX 记录,请键入 fabrikam.com,然后按 Enter。

    注意

    尾随句点 ( ) 指示 FQDN。 使用尾随句点可防止为网络配置的任何默认 DNS 后缀无意中添加到域名。

    命令的输出将如下所示:

    fabrikam.com mx preference=10, mail exchanger = mail1.fabrikam.com
    fabrikam.com mx preference=20, mail exchanger = mail2.fabrikam.com
    mail1.fabrikam.com internet address = 192.168.1.10
    mail2 fabrikam.com internet address = 192.168.1.20
    

    可以将与 MX 记录关联的任何主机名或 IP 地址用作目标 SMTP 服务器。 较低的首选项值表示首选 SMTP 服务器。 可以使用多个 MX 记录和不同的首选项值进行负载均衡和容错。

  5. 准备好结束 Nslookup 会话时,键入 exit,然后按 Enter。

注意

对组织内部网络施加的防火墙或 Internet 代理限制可能会阻止你使用 Nslookup 工具查询 Internet 上的公共 DNS 服务器。

步骤 3:在端口 25 上使用 Telnet 测试 SMTP 通信

在此示例中,使用以下值:

  • 目标 SMTP 服务器:mail1.fabrikam.com
  • 源域:contoso.com
  • 发件人的电子邮件地址: chris@contoso.com
  • 收件人的电子邮件地址: kate@fabrikam.com
  • 邮件主题:从 Contoso 进行测试
  • 消息正文:这是一条测试消息

注意

  • Telnet 客户端中的命令不区分大小写。 为清楚起见,SMTP 命令谓词大写。
  • 连接到 Telnet 会话中的目标 SMTP 服务器后,无法使用 backspace 密钥。 如果在键入 SMTP 命令时出错,则必须按 Enter,然后再次键入该命令。 无法识别的 SMTP 命令或语法错误会导致如下所示的错误消息:
500 5.3.3 Unrecognized command
  1. 在命令提示符下,键入 telnet,然后按 Enter。 此命令将打开 Telnet 会话。

  2. 键入 “设置区域设置”, 然后按 Enter。 此可选命令允许你在键入字符时查看字符。 某些 SMTP 服务器可能需要此设置。

  3. 键入 “设置日志文件<文件名>”。 此可选命令允许将 Telnet 会话记录到指定的日志文件。 如果仅指定文件名,则日志文件的位置是当前工作目录。 如果指定路径和文件名,则路径必须是计算机的本地路径。 必须以 Microsoft DOS 8.3 格式输入指定的路径和文件名。 指定的路径必须已存在。 如果指定不存在的日志文件,则会为你创建该文件。

  4. 键入 打开 mail1.fabrikam.com 25 ,然后按 Enter。

  5. 键入 EHLO contoso.com 然后按 Enter。

  6. 键入 MAIL FROM:chris@contoso.com ,然后按 Enter。

  7. 键入 RCPT TO:kate@fabrikam.com NOTIFY=success,failure ,然后按 Enter。 可选的 NOTIFY 命令定义目标 SMTP 服务器必须提供给发件人的邮件 (DSN) 特定传递状态通知。 DSN 消息在 RFC 1891 中定义。 在这种情况下,你请求 DSN 消息以成功或失败的消息传递。

  8. 键入 DATA ,然后按 Enter。 你将收到类似于以下内容的响应:

    354 Start mail input; end with <CLRF>.<CLRF>
    
  9. 键入 “主题:从 Contoso 测试 ”,然后按 Enter。

  10. 按 Enter。 RFC 2822 需要在标头字段和消息正文之间 Subject: 使用空白行。

  11. 键入 “这是测试消息 ”,然后按 Enter。

  12. 按 ENTER, (键入句点 ) 然后按 ENTER。 你将收到类似于以下内容的响应:

    250 2.6.0 <GUID> Queued mail for delivery
    
  13. 若要断开与目标 SMTP 服务器的连接,请键入 QUIT ,然后按 Enter。 你将收到类似于以下内容的响应:

    221 2.0.0 Service closing transmission channel
    
  14. 若要关闭 Telnet 会话,请键入 “退出 ”,然后按 Enter。

步骤 4:评估 Telnet 会话的结果

本部分提供有关可能提供给以下命令的响应的信息,这些响应在前面的示例中已使用:

  • 打开 mail1.fabrikam.com 25

  • EHLO contoso.com

  • 邮件发件人:chris@contoso.com

  • RCPT TO:kate@fabrikam.com NOTIFY=success,failure

    注意

    RFC 2821 中定义的 3 位 SMTP 响应代码对于所有 SMTP 邮件服务器都是相同的。 对于某些 SMTP 消息服务器,文本说明可能略有不同。

打开 mail1.fabrikam.com 25

成功的响应220 mail1.fabrikam.com Microsoft ESMTP MAIL Service ready at <day-date-time>

失败响应Connecting to mail1.fabrikam.com...Could not open connection to the host, on port 25: Connect failed

失败的可能原因

  • 目标 SMTP 服务不可用。
  • 目标防火墙存在限制。
  • 源防火墙存在限制。
  • 为目标 SMTP 服务器指定了不正确的 FQDN 或 IP 地址。
  • 指定的端口号不正确。

EHLO contoso.com

成功的响应250 mail1.fabrikam.com Hello [<sourceIPaddress>]

失败响应501 5.5.4 Invalid domain name

失败的可能原因:域名中有无效字符。 或者,目标 SMTP 服务器上存在连接限制。

注意

EHLO 是 RFC 2821 中定义的扩展简单消息传输协议 (ESMTP) 谓词。 ESMTP 服务器可在初始连接时公布其功能。 这些功能包括其接受的最大消息大小及其支持的身份验证方法。 HELO 是 RFC 821 中定义的旧版 SMTP 动作。 大多数 SMTP 消息传送服务器均支持 ESMTP 和 EHLO。

邮件发件人:chris@contoso.com

成功的响应250 2.1.0 Sender OK

失败响应550 5.1.7 Invalid address

失败的可能原因:发件人的电子邮件地址中存在语法错误。

失败响应530 5.7.1 Client was not authenticated

可能失败的原因:目标服务器不接受匿名邮件提交。 如果尝试使用 Telnet 将消息直接提交到中心传输服务器,则会收到此错误。

RCPT TO:kate@fabrikam.com NOTIFY=success,failure

成功的响应250 2.1.5 Recipient OK

失败响应550 5.1.1 User unknown

失败的可能原因:指定的收件人在组织中不存在。