Reach

Grow

Manage

Automate

Reach

Grow

Manage

Automate

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

电子邮件

1 min read

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

电子邮件

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通常使用这些端口。如果您的SMTP中继使用的端口与示例中显示的25不同,您将使用邮件交换服务器对nslookup响应指定的端口。您还可以通过询问管理员或登录邮件交换服务器并查看协议来验证您的SMTP依赖的端口。

接下来我们需要为将使用的IP获取DNS PTR。首先,我们需要知道Internet看到我们的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

现在应该显示如下内容:

Trying 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命令。这决定了将退回邮件发送到的地址。这与邮件头的from不同,这是邮件客户端中显示的电子邮件地址。

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

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

现在邮件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邮件服务器可能会在EHLO/HELO之后等待接收到DATA命令才能回应其他命令。在这种情况下,键入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: Wed, 11 May 2011 16:19:57 -0400

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

Hello World, 这是从手动telnet会话发送的测试消息。真诚的,SMTP管理员

消息完成后,我们需要告知SMTP服务器我们已完成消息并希望SMTP邮件服务器接受它。 这通过在行中放置一个句号来实现。如果在写消息期间需要在行中放一个句号,则必须放2个句号,第一个逃逸第二个。

.   250 2.6.0 消息已收到

如果收到错误消息而不是“接收到”的通知,记录相关详细信息并联系您的电子邮件提供商以获取更多帮助。

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

QUIT 221 2.0.0 mail.port25.com说再见

这样邮件服务器已经接受了消息进行传递,您的telnet发送电子邮件测试完成,并且应出现在RCPT TO地址的inbox中!

以下是所有命令,未中断:

telnet mail.port25.com 25 Trying 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: Wed, 11 May 2011 16:19:57 -0400 Hello World, 这是从手动telnet会话发送的测试消息。真诚的,SMTP管理员 . 250 2.6.0 消息已收到 QUIT 221 2.0.0 mail.port25.com说再见

使用telnet发送电子邮件可以让您快速测试连接能力,并且成本比功能强大的诊断设备或软件要低。

如何通过Telnet认证测试SMTP?

现在您已经知道如何通过telnet检查SMTP连接,我们将讨论身份验证程序。SMTP身份验证有助于防止大量垃圾邮件进入收件人的收件箱,尽管并不是所有的邮件交换服务器都要求这样做。

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

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

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

  • 打开终端并使用telnet服务器名称和访问命令连接邮件服务器——如上例所示为mail.port25.com。

  • 使用EHLO或HELO向服务器打招呼,输入AUTH LOGIN,等待计算机的响应。

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

  • 输入用base64编码的密码,您应该收到如“authentication succeeded.”的响应。

  • 继续使用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编码的密码,您应该收到如“authentication succeeded.”的响应。

  • 继续使用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编码的密码,您应该收到如“authentication succeeded.”的响应。

  • 继续使用MAIL FROM, RCPT TO, DATA,和QUIT发送您的已验证电子邮件。

加入我们的Newsletter。

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

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

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

加入我们的Newsletter。

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

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

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

加入我们的Newsletter。

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

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

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

Pinterest 标志
Uber 标志
Square 徽标
Adobe 标志
Meta logo
PayPal 标志

Newsletter

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

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

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

Uber 标志
Square 徽标
Adobe 标志
Meta logo

Newsletter

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

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

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

Uber 标志
Adobe 标志
Meta logo

Reach

Grow

Manage

Automate

资源

公司

Newsletter

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

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

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