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

3 分钟阅读
0

我在 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 公共托管区中的名称服务器

您可以使用 Route 53 提供 DNS 服务,使用其他域名注册商进行域注册。在这种情况下,您的域名注册商必须引用 Route 53 公有托管区中的名称服务器。为此,请查询基于互联网的 whois 实用程序来执行以下步骤:

  • 找到您的域名的注册商。在查询字段中输入您的域名,选择选项,然后选择提交。查询结果包括域名注册商和域名的权威名称服务器。
    **注意:**查询结果可能会返回除了与您的 Route 53 公有托管区关联的名称服务器以外的名称服务器列表。在这种情况下,不会将您的 SMTP 服务器的 DNS 查询发送到 Route 53。要更新与您的域名关联的名称服务器列表,请联系您的域名注册商。
  • 找到您的域注册商的联系信息。在查询字段中输入注册商的名称,选择注册商选项,然后选择提交。使用此信息联系您的域注册商。请您的域注册商更新名称服务器列表,以便您的域名可以在其公有托管区中引用更新后的名称服务器。
  • **在注册商的名称服务器的生存时间(TTL)到期之前,确认您要从中转移的 DNS 服务不会删除资源记录集。**在域名服务器记录的 TTL 期限到期之前,Route 53 DNS 服务不会响应域名的 DNS 查询。有关更多信息,请参阅我更改了 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。务必将占位符值替换为您的邮件服务器名称或 IP 地址以及端口号:

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 正常的响应。

4.    输入以下命令,然后按 Enter。务必将占位符值替换为收件人的电子邮件地址:

rcpt to: recipient@yourdomainname

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

服务器发出 250 已接受的响应。

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

5.    输入下列命令,然后按 Enter

data

6.    输入下列命令,然后按 Enter

Subject: SPECIFY_SUBJECT_HERE

7.    输入下列命令,然后按 Enter

SPECIFY_MESSAGE_HERE

8.    输入下列命令,然后按 Enter

.

服务器接受要传送的邮件,并发出 250 正常响应,以表明系统已发送电子邮件。

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

AWS 官方
AWS 官方已更新 1 年前