Java,Jsp,模式及框架
Web技术
Web服务器
浏览器相关
SQL语言
数据库
开发环境
软件开发及管理
网站SEO
短信及邮件服务
网页设计
电脑、硬件及网络
协同管理平台问题
电子商务
前沿技术及趋势
  当前位置:首页 - 知识积累 - 短信及邮件服务
如何使用 Telnet 测试 SMTP 通信
时间:2008年06月18日 

本主题说明如何使用 Telnet 测试邮件服务器之间的简单邮件传输协议 (SMTP) 通信。默认情况下,SMTP 侦听端口 25。如果您使用 Telnet 端口 25,则可以输入用于连接 SMTP 服务器和发送邮件的 SMTP 命令,如同您的 Telnet 会话是 SMTP 邮件服务器一样。您还可以查看连接过程和邮件提交过程中每个步骤是成功还是失败。
以下列表说明了使用 Telnet 测试到或来自 Microsoft Exchange Server 组织中存在的传输服务器的 SMTP 通信的方案。
从位于外围网络之外的主机连接到组织的边缘传输服务器,并发送一封测试邮件。
从组织的边缘传输服务器连接到远程邮件服务器,并发送一封测试邮件。
开始之前
默认情况下,在集线器传输服务器之间的邮件传输是经过加密和身份验证的。您仅可使用 Telnet 端口 25 将邮件提交给具有接收连接器的内部集线器传输服务器,该接收连接器已配置为允许通过匿名访问或基本身份验证来接收邮件。面向 Internet 的服务器需要使用匿名访问。将邮件发送到接受基本身份验证的接收连接器时,您必须有可将用于用户名和密码的文本字符串转换为 Base64 格式的实用程序。由于使用基本身份验证时,用户名和密码非常容易辨别,因此不建议使用无加密的基本身份验证。
许多组织中面向 Internet 的 SMTP 邮件服务器都配置为需要验证源 IP 地址、相应域名系统 (DNS) 的域名以及试图向服务器发送邮件的所有 Internet 主机的反向查找 IP 地址。如果将测试计算机连接到 Internet 并试图使用 Telnet 端口 25 向远程邮件服务器发送一封测试邮件,您的邮件可能会被拒绝。若要满足远程邮件服务器规定的安全要求,可从您的边缘传输服务器连接到远程邮件服务器。在边缘传输服务器上配置的接受域具有相应的 DNS 邮件交换 (MX) 记录、地址 (A) 记录以及反向查找记录,可将边缘传输服务器确定为 Internet 上接受域的合法和可跟踪电子邮件来源。
本主题中的步骤表明如何使用 Microsoft Windows Server 2003 和 Windows XP 中包含的 Microsoft Telnet 客户端。Windows 的早期版本或第三方的 Telnet 客户端可能需要使用不同的语法。Windows Telnet 客户端中的命令不区分大小写。为清晰起见,SMTP 命令动词均使用大写。
在 Telnet 会话中连接到目标 SMTP 服务器后,无法使用 Backspace 键。如果您在键入 SMTP 命令时出现错误,则必须按下 ENTER 键,然后再键入该命令。无法识别的 SMTP 命令或语法错误会导致类似下面的错误消息:
复制代码
500 5.3.3 Unrecognized command
使用 Nslookup 命令行工具查找 SMTP 服务器的 IP 地址
若要使用 Telnet 端口 25 连接到目标 SMTP 服务器,您必须具有完全限定的域名 (FQDN) 或 SMTP 服务器的 IP 地址。查找此信息的最简便方法是使用 Nslookup 命令行工具查找目标域的 MX 记录。
使用 Nslookup 工具查找 SMTP 服务器的 IP 地址
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 后缀添加到域名中。
1. 输出的命令将与以下内容类似:
2. 复制代码
3. fabrikam.com mx preference=10, mail exchanger

= mail1.fabrikam.comfabrikam.com
mx preference=20, mail exchanger

= mail2.fabrikam.commail1.fabrikam.com
internet address = 192.168.1.10mail2
fabrikam.com internet address = 192.168.1.20
您可以将与 MX 记录关联的任何主机名或 IP 地址用作目标 SMTP 服务器。较低的首选项值表示首选 SMTP 服务器。您可以使用多个 MX 记录和不同的首选项值,以实现负载平衡和容错。
1. 准备结束 Nslookup 会话时,请键入 exit,再按 ENTER 键。
注意:
组织的内部网络规定的防火墙或 Internet 代理限制可能会阻止您使用 Nslookup 工具查询 Internet 上的公用 DNS 服务器。
MX 记录不是 Exchange 组织内的内部邮件流绝对必需的。如果要在组织中查找任何集线器传输服务器或已订阅边缘传输服务器的 FQDN,则可以使用 Exchange 命令行管理程序中的下列命令:Get-ExchangeServer | where {$_.isHubTransportServer -eq $true -or $_.isEdgeServer -eq $true} | Format-List Fqdn,ServerRole
有关详细信息,请参阅 Get-ExchangeServer 和 管道传输。
使用 Telnet 端口 25 测试 SMTP 通信
本节中的步骤说明如何使用 Telnet 端口 25 测试 SMTP 通信。步骤将使用以下列表中描述的值:
· 目标 SMTP 服务器 mail1.fabrikam.com
· 源域 contoso.com
· 发件人的电子邮件地址 chris@contoso.com
·收件人的电子邮件地址 kate@fabrikam.com
· 邮件主题 来自 Contoso 的测试
·邮件正文 这是一封测试邮件
注意:
应始终使用有效的发件人电子邮件地址,以便将目标 SMTP 服务器生成的未送达报告 (NDR) 邮件传递给邮件发件人。
使用 Telnet 端口 25 测试 SMTP 通信
1. 在命令提示符下,键入 telnet,再按 Enter 键。此命令将打开 Telnet 会话。
2. 键入 set localecho,再按 Enter 键。此可选命令可使您在键入字符时查看这些字符。某些 SMTP 服务器可能需要此设置。
3. 键入 set logfile <文件名>。此可选命令可以将 Telnet 会话记录到指定的日志文件中。如果您仅指定了文件名,则日志文件的位置将是当前工作目录。如果您指定了路径和文件名,该路径必须位于计算机本地。指定的路径和文件名都必须以 Microsoft DOS 8.3 格式输入。您指定的路径必须已存在。如果您指定了一个不存在的日志文件,系统将为您创建一个日志文件。
4. 键入 open 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 .
键入 主题:来自 Contoso 的测试,再按 ENTER 键。
9. 按 Enter 键。RFC 2822 需要在 Subject: 头字段和邮件正文间留一个空行。
10. 键入 这是一封测试邮件,再按 ENTER 键。
11. 按 ENTER 键,键入句点 ( . ),再按 ENTER 键。您将收到与以下类似的响应:
复制代码
250 2.6.0 Queued mail for delivery
12. 若要与目标 SMTP 服务器断开连接,请键入 QUIT,再按 ENTER 键。您将收到与以下类似的响应:
复制代码
221 2.0.0 Service closing transmission channel
13. 若要关闭 Telnet 会话,请键入 quit,再按 ENTER 键。
解释 Telnet 会话与 SMTP 服务器的结果
针对您在以上示例中输入的命令,本节提供有关这些命令响应的详细信息。
注意:

在 RFC 2821 中定义的三位数 SMTP 响应代码对于所有 SMTP 邮件服务器都相同。对于某些 SMTP 邮件服务器,文本说明可能稍有不同。在本示例中,目标计算机正在运行 Exchange Server 2007。

打开 mail1.fabrikam.com 25
成功响应 220 mail1.fabrikam.com Microsoft ESMTP MAIL
Service ready at
失败响应 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 []
失败响应 501 5.5.4 Invalid domain name
失败的可能原因 域名中存在无效字符。或者,存在有关目标 SMTP 服务器的连接限制。
注意:
EHLO 是扩展的简单邮件传输协议 (ESMTP) 命令动词,该命令动词是在 RFC 2821 中定义的。ESMTP 服务器可在初始连接时公布其功能。这些功能包括其最大的可接受邮件大小以及其支持的身份验证方法。HELO 是 RFC 821 中定义的旧版 SMTP 命令动词。多数 SMTP 邮件服务器都支持 ESMTP 和 EHLO。
MAIL FROM: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
可能的失败原因 指定的收件人在组织中不存在。
详细信息
有关详细信息,请参阅下列主题:
· 管理连接器
· 管理发送状态通知