使用手动 Telnet 会话测试 SMTP 连接

已发表: 2022-04-04

DigitalOcean、AWS、Vultr 等服务器提供商会阻止您的电子邮件的传出端口 25,以阻止垃圾邮件通过。 但是,您始终可以要求他们取消阻止它。 如果你想知道你的 25 端口是否被阻塞,你可以使用手动 telnet 会话来测试 SMTP 连接。

可以通过多种方式解决 SMTP 连接错误,但命令行可以直接检测到它们。 Telnet 通常用于测试 SMTP 连接失败。 在接下来的步骤中,我们将使用 Telnet 来测试电子邮件服务器。 设置电子邮件服务器的一个关键部分是确保 SMTP 从命令行 (Linux) 工作。

Telnet 是从命令行检查 SMTP 的最常用方法。 这也是测试 SMTP Relay 最常用的方法。

目录

什么是 SMTP?

SMTP 是一种基于文本、面向连接的协议,其中邮件发送者通过发送命令字符串并通过可靠的有序数据流通道(通常是传输控制协议 (TCP) 连接)提供所需数据来与邮件接收者连接。

SMTP 会话由来自 SMTP 客户端(发起代理、发送者或发送者)的命令和来自发起会话和交换会话参数的 SMTP 服务器(侦听代理或接收者)的响应组成。 一个会话中可能有零个或多个 SMTP 事务。 三个命令/回复序列组成一个 SMTP 事务:

  1. MAIL 命令,也称为返回路径、反向路径、退回地址、mfrom 或信封发件人,用于设置返回地址。
  2. 要建立消息接收者,请使用 RCPT 命令。 此命令可以根据需要重复多次,每个收件人一个。 信封也有这些地址。
  3. DATA 表示消息文本的开始; 邮件的内容,而不是其信封。 它由消息头和消息正文之间的空行组成。 服务器响应两次:首先是对 DATA 指令本身,确认它已准备好接收文本,然后在数据序列结束后再次响应,接受或拒绝完整的消息。

什么是 Telnet 会话?

Telnet 是一种网络协议,用于远程访问计算机并在两台计算机之间建立双向、协作、基于文本的通信通道。

它使用由用户控制的传输控制协议/互联网协议 (TCP/IP) 网络协议创建远程会话。 Web 上的超文本传输​​协议 (HTTP) 和文件传输协议 (FTP) 仅允许用户从遥远的计算机请求特定文件,而 Telnet 允许用户以具有分配给特定应用程序和数据的权限的普通用户身份登录计算机。

Telnet 最常用于编码人员和需要访问远程计算机上的某些应用程序或数据的任何人。

Telnet 是如何工作的?

Telnet 是一种客户端-服务器协议,用于在远程计算机(通常是服务器)上打开命令行。 此实用程序可用于 ping 端口并确定它是否打开。 Telnet 使用虚拟终端连接模拟器,它是计算机连接的抽象实例,它使用标准协议来充当连接到系统的物理终端。 对于需要传输数据文件的用户,可以同时使用FTP和Telnet。

Telnet 允许用户远程连接到机器,通常称为 Telnet 进入系统。 他们必须提供他们的用户凭据组合才能访问远程计算机,这允许他们运行命令行,就好像他们实际出现在计算机上一样。 用户的 IP 地址将匹配他们登录的计算机,而不是他们用于登录的计算机,无论他们的实际位置如何。

Telnet 的用途是什么?

Telnet 可用于在服务器上执行一系列任务,包括文件编辑、程序执行和电子邮件检查。

一些服务器允许通过 Telnet 远程连接到公共数据,以便玩简单的游戏或查看天气预报。 许多这些功能的存在是因为它们是怀旧的,或者因为它们仍然与需要某些数据的早期系统兼容。

Telnet 还允许用户连接到任何使用基于文本的未加密协议的软件,例如 Web 服务器和端口。 用户可以在远程机器上打开一个cmd,然后输入telnet,后跟远程机器的名称或IP地址,telnet会话会ping端口看是否打开。 空白屏幕表示端口已打开,但指示端口已连接的错误消息表示端口已关闭。

Telnet 中的安全性

Telnet 是一种非安全、未加密的协议。 通过监视用户的连接,任何人都可以在 Telnet 会话期间查看用户的用户名、密码和其他以明文形式键入的机密信息。 此信息可用于访问目标计算机。

使用 Telnet 测试 SMTP 连接

我们将首先运行一些测试以查看您的传出端口 25 是否打开,在第一种情况下,我们将演示被阻止的 SMTP 端口 25,在第二种情况下,我们将通过使用 telnet 发送电子邮件来完成。

案例 1:25 端口被阻塞

在命令行上运行以下命令(您需要在遇到电子邮件问题的服务器上运行此命令):

 远程登录 <IP_ADDRESS_OF_REMOTE_MAIL_SERVER> 25

如果您收到“TRYING ...”之类的消息,而没有其他任何内容,则意味着您的传出端口 25 被阻止,您将无法从服务器发送电子邮件。

案例2:25端口打开时:

如果您没有邮件服务器的 IP 地址,我们需要找到一个邮件服务器进行登录。 为此,我们需要给定域的 DNS MX 记录。 这可以通过以下命令找到

nslookup -type=mx DOMAIN_NAME

SMTP 使用三个端口之一:25、465 或 587,Microsoft Outlook 经常使用这些端口。 如果您的 SMTP 中继使用 25 以外的端口,您将使用邮件交换服务器的 nslookup 响应中提供的端口。 您可以询问您的管理员或进入邮件交换服务器并查看协议以查看您的 SMTP 使用的端口。

登录 SMTP 服务器:

 远程登录 <IP_ADDRESS_OF_MAIL_SERVER> <PORT>

如果您已连接,您可以继续发送电子邮件

EHLO 或 HELO 命令是我们需要为我们的 SMTP 电子邮件测试器发送到邮件服务器的第一个命令。 这是一个简单的欢迎词,开始 telnet 客户端与 SMTP 服务器的对话。

 EHLO <DOMAIN_NAME>
测试 smtp 连接

此处显示 SMTP 服务器接受的 SMTP 命令。

MAIL FROM 命令是我们真正必须运行的下一个命令。 退回的地址由此确定。

 发件人:<[电子邮件保护]>

我们现在可以在发出 MAIL FROM 命令后发送 RCPT TO 命令。 此命令指示 SMTP 邮件服务器将邮件发送给指定的收件人。

 RCPT TO:<[电子邮件保护]> 

DATA 命令是开始消息正文之前运行的最后一个命令。 此命令通知 SMTP 邮件服务器,邮件的其余部分将作为邮件正文传输。

 数据

输入主题:<SUBJECT> ,然后按 Return。

输入 < Test message > 并按 Return。

当消息完成后,我们必须通知 SMTP 服务器我们已经完成了它并且我们希望 SMTP 邮件服务器接受它。 这是通过在单行上放置一个句点来实现的。 如果在编写消息时需要在一行中使用句点,请使用两个句点,第一个转义第二个。

.

将出现消息 OK,后跟一个 ID 代码。 您的消息已送达。

返回 Telnet 窗口,输入 quit 以终止 SMTP 服务器连接,然后退出以终止 Telnet 会话。

 退出

结论

如果您完成了测试,您可以确定您的电子邮件服务器或您用来访问它的地址和信息没有任何问题。

如果 SMTP 服务器通知您原始电子邮件地址无效,则可能是您输入错误。 您的电子邮件帐户也可能有问题,这就是您无法在新的电子邮件客户端中使用它的原因。

希望在远离新电子邮件客户端的情况下通过 Telnet 测试 SMTP 服务器将帮助您缩小所有可能导致您遇到的任何电子邮件问题的原因。