Reach

Grow

Manage

Automate

Reach

Grow

Manage

Automate

如何通过手动 Telnet 会话检查 SMTP 连接

2020年2月7日

电子邮件

1 min read

如何通过手动 Telnet 会话检查 SMTP 连接

2020年2月7日

电子邮件

1 min read

如何通过手动 Telnet 会话检查 SMTP 连接

在电子邮件的世界中,有很多方面需要测试,但您可以进行的最基本的测试之一就是简单地使用telnet进入给定的SMTP服务器。此SMTP检查可在确定是否存在最基本的问题时派上用场。

在电子邮件的世界中,有许多方面需要进行测试,但您可以进行的一项最基本的测试就是简单地telnet进入指定的SMTP服务器。  这个SMTP检查对于确定最基本的问题是否存在或不存在非常有用。

  • 服务器是否已启动?

  • 是否有防火墙阻止通信?

  • 邮件服务器是否允许中继特定域名/电子邮件地址?

  • 邮件服务器支持哪些SMTP命令?

  • 服务器是否响应正确的主机名?

  • 连接是否在任何第三方软件或API外部工作?

所有这些问题以及更多问题都可以通过一个简单的telnet测试来回答。

在我们开始之前,请务必在新选项卡中打开我们这篇文章的伴侣内容:退回消息发送到哪里?,以便在完成此博客后阅读。

注意,以下示例中使用的命令(以及其他命令)在 RFC 2821的第4.1节中有介绍。

如何使用 Telnet 发送 Email?

通过telnet发送电子邮件可以帮助您识别当前配置中的可传递性问题。

在使用telnet发送电子邮件之前,确认您的计算机上已安装并启用telnet。大多数计算机都预装了telnet客户端。对于那些没有的Windows版本,可以通过打开控制面板的“程序和功能”部分,并选择“启用或禁用Windows功能”来安装telnet。在此窗口中,选择“telnet客户端”,然后点击确认。

一旦确认已在服务器上安装了telnet客户端,打开终端窗口,在那里输入提示命令。在Windows上,使用Windows + R,键入“cmd”,然后按回车。对于Mac用户,您可以通过打开Finder并在应用程序页面上搜索“实用工具”,或在Launchpad搜索功能中输入“terminal”找到终端图标。

接下来,我们需要找到一个要登录的邮件服务器。为此,我们需要给定域名的DNS MX记录。可以使用以下命令找到此记录(在这些示例中将使用port25.com,但可以替换为任何域名):

Windows:

nslookup -type=mx port25.com

非权威答案:

port25.com MX 优先度 = 100, 邮件交换机 = mail.port25.com

Linux:

nslookup -type=mx port25.com

非权威答案:

port25.com 邮件交换机 = 100 mail.port25.com。

SMTP使用三个端口之一——25、465或587,Microsoft Outlook经常使用。有关高级邮件服务器配置和优化,请参阅我们关于PowerMTA配置技巧的指南。如果您的SMTP中继使用的端口与示例中不同,您将使用邮件服务器的nslookup响应指定的端口。您也可以通过询问管理员或登录邮件交换服务器并查看协议来验证SMTP使用的端口。

接下来我们需要DNS PTR记录以使用的IP。首先我们需要知道互联网看到的我们所使用的IP地址。要找到这些信息,我们可以使用一个网站,比如:

http://whatismyipaddress.com/

使用IP地址运行以下命令,其中A.B.C.D是IP地址。

Windows:

nslookup -type=ptr A.B.C.D

非权威答案:

D.C.B.A.in-addr.arpa 名称 = server.example.com

Linux:

nslookup -type=ptr A.B.C.D

非权威答案:

D.C.B.A.in-addr.arpa 名称 = server.example.com

server.example.com只是一个例子,您的结果会不同。

现在我们已经有了port25.com的MX记录和我们要使用的IP的PTR记录,现在是时候登录SMTP服务器了。要执行此操作,请使用以下命令:

telnet mail.port25.com 25

应该显示类似于以下内容的信息:

尝试连接69.63.149.30... 已连接到mail.port25.com (69.63.149.30)。转义字符是‘^]’。220 mail.port25.com (PowerMTA(TM) v4.0) ESMTP服务准备好

如果您收到“无法连接”这样的错误信息,要么端口号正确,要么邮件服务器遇到问题。

我们需要发送给邮件服务器的第一个命令是EHLO或HELO。这是一个基本问候,启动telnet客户端与SMTP服务器之间的通信。还会传递之前确定的IP地址的DNS PTR。

EHLO server.example.com

应该返回类似于以下内容:

250-mail.port25.com 向您问好 250-STARTTLS 250-ENHANCEDSTATUSCODES 250-PIPELINING 250-CHUNKING 250-8BITMIME 250-XACK 250-XMRG 250-SIZE 54525952 250-VERP 250 DSN

这显示了SMTP服务器接受的SMTP命令。并非所有SMTP服务器都支持同一组命令。例如,yahoo仅显示以下内容:

250-8BITMIME 250-SIZE 41943040 250 PIPELINING

aol仅显示一个:

250 DSN

我们需要发送的下一个命令是MAIL FROM命令。此命令确定发送失败的地址。这不同于显示在电子邮件客户端中的发件人标头。

MAIL FROM: <support@port25.com> 250 2.1.0 MAIL ok

确保您使用与邮件服务器域名对应的域名。例如,如果您的电子邮件域名是anycompany.com,您会想使用you@anycompany.com而不是外部的邮件如you@free-mail-provider.com。域名的变化可能会导致错误信息出现。

现在MAIL FROM命令已被发送,我们可以发送RCPT TO命令。此命令告诉SMTP邮件服务器应该将消息发送给谁。这可以与邮件客户端中显示的to标头相同或不同。

RCPT TO: <support@port25.com> 250 2.1.5 <support@port25.com> ok

在发送RCPT TO命令之前仔细检查接收者的地址——此处显示的错误信息可能表明电子邮件接收者的拼写错误或被阻止。

在开始消息正文之前运行的最后一个命令是DATA命令。此命令让SMTP邮件服务器知道随后的所有内容是消息的正文(也包含了标头)。

DATA 354 发送信息

重要的是要注意,如果邮件服务器支持PIPELINING,就像mail.port25.com那样,SMTP邮件服务器可能会等待直到DATA命令被下达后才响应任何EHLO/HELO之后的命令。在这种情况下,输入MAIL FROM、RCPT TO和DATA命令,然后等待回应。

现在DATA命令已被发送,我们可以开始发送消息内容。这从各种标头开始。至少消息应该包含to、from、subject和date标头。这里输入的标头将显示给用户在他们的电子邮件客户端中。

From: "John Smith" <jsmith@port25.com> To: "Jane Doe" <jdoe@port25.com> Subject: 通过手动telnet会话发送的测试消息 Date: 2011年5月11日 星期三 16:19:57 -0400

设置标头后,我们现在添加一个空白行与回车/换行(只需按两次回车),然后开始输入消息的实际正文。

世界你好,这是一个从手动telnet会话发送的测试消息。您真诚的,SMTP管理员

消息完成后,我们需要告诉SMTP服务器我们已经完成消息,并希望SMTP邮件服务器接受它。这是通过在一行上输入一个点完成的。如果在撰写消息期间需要在一行使用一个点,必须输入两个点,第一个用来转义第二个。

. 250 2.6.0 消息已收到

如果您没有收到“已收到”通知而是收到了一条错误信息,请记录相关细节并联系您的电子邮件提供商以获得更多帮助。连接问题可能也与安全协议有关 - 请确保您正在使用TLS 1.2或更高版本进行安全连接。

最后,发送QUIT命令以关闭连接:

QUIT 221 2.0.0 mail.port25.com 向您道别

邮箱服务器现在已经接受消息用于投递,您的telnet发送电子邮件测试已完成,并且它应该正位于RCPT TO地址的Inbox中!!!

以下是不间断的所有命令:

telnet mail.port25.com 25 尝试连接69.63.149.30... 已连接到mail.port25.com (69.63.149.30)。转义字符是‘^]’。220 mail.port25.com (PowerMTA(TM) v4.0) ESMTP服务准备好 EHLO server.example.com 250-mail.port25.com 向您问好 250-STARTTLS 250-ENHANCEDSTATUSCODES 250-PIPELINING 250-CHUNKING 250-8BITMIME 250-XACK 250-XMRG 250-SIZE 54525952 250-VERP 250 DSN MAIL FROM: <support@port25.com> 250 2.1.0 MAIL ok RCPT TO: <support@port25.com> 250 2.1.5 <support@port25.com> ok DATA 354 发送信息 From: "John Smith" <jsmith@port25.com> To: "Jane Doe" <jdoe@port25.com> Subject: 通过手动telnet会话发送的测试消息 Date: 2011年5月11日 星期三 16:19:57 -0400 世界你好,这是一个从手动telnet会话发送的测试消息。您真诚的,SMTP管理员 . 250 2.6.0 消息已收到 QUIT 221 2.0.0 mail.port25.com 向您道别

使用telnet发送电子邮件可以让您快速测试连接能力,而成本低于健全的诊断设备或软件。对于更高级的SMTP测试工具,请考虑使用Swaks与SparkPost进行全面的电子邮件测试。

如何通过Telnet认证测试SMTP?

现在你知道如何通过telnet检查SMTP连接,我们将讨论身份验证程序。SMTP身份验证有助于防止大量垃圾邮件到达读者的收件箱,尽管并不是所有的邮件交换服务器都要求进行身份验证。理解身份验证在分析电子邮件头以排除传递问题时也很重要。

现代身份验证协议的主要区别在于存在base64编码。Base64将二进制数据转换为邮件服务器成功传输数据所需的ASCII文本格式。这是一种以计算机可理解的数字格式表示您的登录凭证(某种文本组合)的方法。

您可以使用软件或免费在线工具生成您的base64。一旦您与邮件服务器沟通这些信息,它将把这些数据与其记录进行比较以确定身份验证。

通过telnet测试SMTP身份验证,完成以下步骤:

  • 打开终端并使用telnet服务器名和访问命令连接到邮件服务器——在上面的示例中是mail.port25.com。

  • 用EHLO或HELO问候服务器,输入AUTH LOGIN,并等待计算机的响应。

  • 输入base64编码的用户名并允许服务器进行回答。

  • 输入用base64编码的密码,应该会收到“一旦身份验证成功”这样的响应。

  • 继续使用MAIL FROM、RCPT TO、DATA和QUIT以发送您的经过身份验证的电子邮件。

现在你知道如何通过telnet检查SMTP连接,我们将讨论身份验证程序。SMTP身份验证有助于防止大量垃圾邮件到达读者的收件箱,尽管并不是所有的邮件交换服务器都要求进行身份验证。理解身份验证在分析电子邮件头以排除传递问题时也很重要。

现代身份验证协议的主要区别在于存在base64编码。Base64将二进制数据转换为邮件服务器成功传输数据所需的ASCII文本格式。这是一种以计算机可理解的数字格式表示您的登录凭证(某种文本组合)的方法。

您可以使用软件或免费在线工具生成您的base64。一旦您与邮件服务器沟通这些信息,它将把这些数据与其记录进行比较以确定身份验证。

通过telnet测试SMTP身份验证,完成以下步骤:

  • 打开终端并使用telnet服务器名和访问命令连接到邮件服务器——在上面的示例中是mail.port25.com。

  • 用EHLO或HELO问候服务器,输入AUTH LOGIN,并等待计算机的响应。

  • 输入base64编码的用户名并允许服务器进行回答。

  • 输入用base64编码的密码,应该会收到“一旦身份验证成功”这样的响应。

  • 继续使用MAIL FROM、RCPT TO、DATA和QUIT以发送您的经过身份验证的电子邮件。

现在你知道如何通过telnet检查SMTP连接,我们将讨论身份验证程序。SMTP身份验证有助于防止大量垃圾邮件到达读者的收件箱,尽管并不是所有的邮件交换服务器都要求进行身份验证。理解身份验证在分析电子邮件头以排除传递问题时也很重要。

现代身份验证协议的主要区别在于存在base64编码。Base64将二进制数据转换为邮件服务器成功传输数据所需的ASCII文本格式。这是一种以计算机可理解的数字格式表示您的登录凭证(某种文本组合)的方法。

您可以使用软件或免费在线工具生成您的base64。一旦您与邮件服务器沟通这些信息,它将把这些数据与其记录进行比较以确定身份验证。

通过telnet测试SMTP身份验证,完成以下步骤:

  • 打开终端并使用telnet服务器名和访问命令连接到邮件服务器——在上面的示例中是mail.port25.com。

  • 用EHLO或HELO问候服务器,输入AUTH LOGIN,并等待计算机的响应。

  • 输入base64编码的用户名并允许服务器进行回答。

  • 输入用base64编码的密码,应该会收到“一旦身份验证成功”这样的响应。

  • 继续使用MAIL FROM、RCPT TO、DATA和QUIT以发送您的经过身份验证的电子邮件。

让我们为您联系Bird专家。
在30分钟内见证Bird的全部威力。

通过提交,您同意 Bird 可能会就我们的产品和服务与您联系。

您可以随时取消订阅。查看Bird的隐私声明以获取有关数据处理的详细信息。

Newsletter

通过每周更新到您的收件箱,随时了解 Bird 的最新动态。

让我们为您联系Bird专家。
在30分钟内见证Bird的全部威力。

通过提交,您同意 Bird 可能会就我们的产品和服务与您联系。

您可以随时取消订阅。查看Bird的隐私声明以获取有关数据处理的详细信息。

Newsletter

通过每周更新到您的收件箱,随时了解 Bird 的最新动态。

让我们为您联系Bird专家。
在30分钟内见证Bird的全部威力。

通过提交,您同意 Bird 可能会就我们的产品和服务与您联系。

您可以随时取消订阅。查看Bird的隐私声明以获取有关数据处理的详细信息。

R

Reach

G

Grow

M

Manage

A

Automate

Newsletter

通过每周更新到您的收件箱,随时了解 Bird 的最新动态。