为什么我在 Route 53 中为我的 SMTP 服务器创建了 MX 记录后,我的服务器无法接收电子邮件?

上次更新日期:2021 年 4 月 24 日

我在 Amazon Route 53 中为简单邮件传输协议 (SMTP) 服务器创建了邮件交换器 (MX) 记录。现在我的服务器无法接收电子邮件。如何排查此问题?

简短描述

如果为 Route 53 DNS 服务配置的公共托管区域配置不正确,则客户端将无法连接到 SMTP 服务器。请确认:

  • 公共托管区域将填充相应的资源记录集。
  • 您的非 AWS 域名注册商指向 Route 53 公共托管区域中的名称服务器。

解决方法

注意:如果在运行 AWS 命令行界面(AWS CLI)命令时遇到错误,请确保您使用的是最新版的 AWS CLI

确认您正在使用适当的资源记录集

确认您为 SMTP 服务器创建了适当的资源记录集。有关更多信息,请参阅创建或编辑 Amazon Route 53 资源记录集时指定的值。公有托管区域必须至少包含您的 SMTP 服务器的一个 MX 记录。有关详细信息,请参阅简单记录的值

确认您的非 AWS 域名注册商指向 Route 53 公共托管区域中的名称服务器

2.    如果您正在使用 Route 53 进行 DNS 服务,使用其他域名注册商进行域注册,请验证您的域名注册商是否引用了 Route 53 公共托管区域中的名称服务器。要执行此操作,请查询基于互联网的 whois 实用程序以执行以下操作:

  • 找到您的域名的注册商。 在查询字段中输入您的域名,选择选项,然后选择提交。查询结果包括域名注册商和域名的授权名称服务器。
    注意: 如果查询结果返回的名称服务器列表不是与 Route 53 公共托管区域关联的名称服务器,则 SMTP 服务器的 DNS 查询将不会发送到 Route 53。请联系您的域名注册商,以更新与您的域名关联的名称服务器列表。
  • 找到您的域注册商的联系信息。 在查询字段中输入注册商的名称,选择注册商选项,然后选择提交。使用此信息联系您的域注册商。要求您的域注册商更新您的域名的名称服务器列表以引用您的域的 Route 53 公有托管区域中的名称服务器。
  • 在注册商的名称服务器上的生存时间 (TTL) 过期之前,验证您从其传输的 DNS 服务是否未删除您的域的资源记录集。 ​Route 53 DNS 服务不会响应域名的 DNS 查询,直到域名服务器记录的 TTL 期间已过去。有关更多信息,请参阅我更改了 DNS 设置,但其尚未生效

检查 DNS MX 记录集问题

1.    使用以下命令,确认域的 MX 记录存在。

在 Linux 或 macOS 上,使用:

dig <domain name> MX

示例 dig,输出:

$ dig amazon.com MX

; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.amzn2.2 <<>> amazon.com MX
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 61726
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;amazon.com.                    IN      MX

;; ANSWER SECTION:
amazon.com.             300     IN      MX      5 amazon-smtp.amazon.com.
;; Query time: 1 msec
;; SERVER: 10.10.0.2#53(10.10.0.2)
;; WHEN: Wed Apr 14 06:21:43 UTC 2021
;; MSG SIZE  rcvd: 67

在 Windows 上,使用:

nslookup -type=MX <domain name>

示例 nslookup,输出:

$ nslookup -type=MX amazon.com
Server:         10.10.0.2
Address:        10.10.0.2#53

Non-authoritative answer:
amazon.com      mail exchanger = 5 amazon-smtp.amazon.com.

2.    使用以下命令,确认可以解析 MX 记录主机名。

在 Linux 或 macOS 上,使用:

dig <MX record>

示例 dig,输出:

$ dig amazon-smtp.amazon.com

; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.amzn2.2 <<>> amazon-smtp.amazon.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 64180
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;amazon-smtp.amazon.com.                IN      A

;; ANSWER SECTION:
amazon-smtp.amazon.com. 27      IN      A       52.94.124.7

;; Query time: 1 msec
;; SERVER: 10.10.0.2#53(10.10.0.2)
;; WHEN: Wed Apr 14 06:41:18 UTC 2021
;; MSG SIZE  rcvd: 67

在 Windows 上,使用:

nslookup <MX record>

示例 nslookup,输出:

$ nslookup amazon-smtp.amazon.com
Server:         10.10.0.2
Address:        10.10.0.2#53

Non-authoritative answer:
Name:   amazon-smtp.amazon.com
Address: 52.119.213.154

注意:某些 DNS 提供商要求您在 MX 记录集名称前加上 at 符号 (@)。或者,在为根域创建 MX 记录集时,提供商可能会要求您创建名为“@”的 MX 记录集。但是,请勿在 Route 53 MX 记录集名称之前加上“@”或任何其他符号。要为 Route 53 中的根域创建 MX 记录集,请将记录集名称留空。然后,为 Route 53 MX 记录集的其余字段提供适当的值。

测试发送和接收电子邮件

连接到邮件服务器并使用 SMTP 命令测试发送和接收电子邮件的能力。

1.    输入以下命令,然后按 Enter 键:

telnet <mail server name or IP> <mail server port number>

注意:如果输入此命令时出现印刷错误,请务必按 Enter 键。在这种情况下,按 BackspaceDelete 键不起作用。按 Enter 键后,重试该命令。在某些情况下,可能需要关闭 telnet 会话并重新连接。

2.    输入以下命令,然后按 Enter 键:

EHLO <YOUR MAIL SERVER FULLY QUALIFIED DOMAIN NAME>

3.    输入以下命令,然后按 Enter 键:

mail from: <your_name@yourdomainname>

服务器响应“250 OK”。

4.    输入以下命令,然后按 Enter 键:

rcpt to: <recipient@yourdomainname>

注意:发件人和收件人可以使用相同的电子邮件地址。

服务器响应“250 已接受”。

重要提示:如果服务器可以验证发件人和收件人等信息,则该邮件确认为已接受。

5.    输入以下命令,然后按 Enter 键:

data

6.    输入以下命令,然后按 Enter 键:

Subject: <specify subject here>

7.    输入以下命令,然后按 Enter 键:

<specify your message here>

8.    输入以下命令,然后按 Enter 键:

.

该邮件已接受进行传递。服务器响应“250 OK”,表示电子邮件已发送。

9.    ​如果确认 MX 记录的配置正确,但 SMTP 服务器仍无法接收电子邮件,请联系您的电子邮件服务提供商。


这篇文章对您有帮助吗?


您是否需要账单或技术支持?