跳转到主要内容

成功发送和投递邮件验证清单

后续检查需要以下软件:

  • host 工具

    • Debian/Ubuntuapt-get install bind9-host
    • CentOSyum install bind9-host
  • Telnet 工具

    • Debian/Ubuntuapt-get install telnet
    • CentOSyum install telnet

MX 记录

MX 记录是一种 DNS 记录类型,用于登记使用 SMTP 协议的邮件服务器。 此记录用于确定发件人的邮件代理应将电子邮件投递到哪台服务器。 一个域名上可以有多个不同优先级的此类记录。

您可以使用 host 命令检查邮件是在本地工作还是使用第三方邮件服务器:

host -t MX example.com

使用本地邮件服务器时,输出将如下所示:

example.com 的邮件由 10 mail.example.com 处理。

值得一提的是,mail.example.com 记录也可以指向另一台服务器。 此外还需要注意,mail.example.com 必须是一个现有的 A 记录,并指向您发送邮件所使用的服务器。

您还可以运行以下命令进行检查:

host example.com
host mail.example.com

并比较主域名(在本例中为 example.com)和 mail.example.com 所指向的 IP 地址。

重要

必须设置 MX 记录,这样邮件服务器才能接收您的电子邮件。

MX 记录示例:

名称:example.com。
类型:MX
:mail.example.com。
优先级:10

DKIM 签名

借助 FASTPANEL®,可以在 management menu → “Mail” 部分中,点击所需邮件域名前面的“DKIM”来获取 DKIM 签名

在 FASTPANEL 中启用 DKIM

在 DNS 侧,需要按如下方式添加记录:

名称:dkim._domainkey
类型:TXT
:v=DKIM1; k=rsa; p=public_key

以下是正确 DKIM 记录的示例

dkim._domainkey TXT v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCpbBQ0T2xO3/SwziunIC/IFbsxBRub6WXiu8Kc2w7uB4GVw+SAB5wSEslDJbFXQRbdV9i/Duu8EQ9xik8dbqdLVyP4iAtw34g4j6QWKcfocgK4hEkwlPFff1dzUlNQONh2riNE5KVJXuWcizm8hub7nPnl36e7OnxiL0qIU7tT1QIDAQAB

有关 DKIM 的更多信息,请参见 https://wikipedia.org/wiki/DomainKeys_Identified_Mail

SPF 记录

可以通过执行 host 命令检查 SPF 记录是否存在。 在这种情况下,命令如下所示:

host -t TXT example.com

输出类似于:

example.com 描述性文本 "v=spf1 ip4:ipv4_of_your_server ip6:ipv6_of_your_server a mx ~all"

请注意,此记录中可能没有 ipv6。 在这种情况下,SPF 签名将如下所示:

example.com 描述性文本 "v=spf1 ip4:ipv4_of_your_server a mx ~all"

说明

需要指出的是,只能有一条 SPF 记录

在 DNS 侧,应按如下方式添加记录:

名称:example.com。
类型:TXT

v=spf1 ip4:ipv4_of_your_server ip6:ipv6_of_your_server a mx ~all
或(如果未使用 ipv6)
v=spf1 ip4:ipv4_of_your_server a mx ~all

例如:

example.com TXT v=spf1 ip4:1.2.3.4 a mx ~all

有关 SPF 的更多信息,请参见 https://wikipedia.org/wiki/Sender_Policy_Framework

DMARC 记录

在大多数情况下,DMARC 记录值都是相同的。

在 DNS 侧,需要按如下方式添加记录:

名称:_dmarc
类型:TXT
:v=DMARC1; p=none

例如:

_dmarc.example.com。 TXT v=DMARC1; p=none

有关 DMARC 的更多信息,请参见 https://wikipedia.org/wiki/DMARC

PTR 记录和服务器主机名

PTR 记录是一种反向 DNS 记录,可将 IP 地址转换为名称。 对于邮件服务器来说,此记录的主要目的是过滤大部分垃圾邮件。 此记录可用于确定电子邮件来自哪台主机。 通常,PTR 记录包含服务器上使用的域名。

PTR 记录将 ip 地址与主机名关联。 如果 PTR 记录配置不正确,您的邮件将被拒收,无法送达收件人。

主机名应设置为实际指向该服务器的域名,而 PTR 应指向该域名,而该域名又指向该服务器。

例如,您的服务器上有一个域名 example.com。

运行以下命令:

host example.com

您可以得到如下输出:

example.com 的地址为 1.2.3.4
example.com 的邮件由 10 mail.example.com 处理。

为避免可能出现的问题,建议将主机名和 PTR 记录设置为一个现有的二级子域名,例如 mail.example.com

SMTP 端口可用性

一些托管服务提供商会关闭用于发送或接收邮件的端口。 邮件服务使用的端口可能包括 25、587、465、143 和 993。

检查这些端口可用性最简单的方法之一是使用 telnet 命令。

检查来自第三方服务器的传入连接

运行以下命令:

telnet ip_adress port

例如,如果您尝试通过 telnet 连接到 1.2.3.4 的 25 端口,则应执行的命令是:

telnet 1.2.3.4 25

如果连接成功,您将看到类似如下的输出:

正在尝试 1.2.3.4……
已连接到 1.2.3.4。
转义字符是 '^]'。

如果连接失败,输出将如下所示:

正在连接到 1.2.3.4 ……
无法打开到主机的 some_port 端口的连接:连接失败

或者:

telnet: 无法连接到远程主机:连接超时

检查传出连接

在您的服务器上,运行以下命令:

telnet smtp.gmail.com 25

如果连接成功,您将看到类似如下的输出:

正在尝试 2a00:1450:4010:c0b::6c……
已连接到 smtp.gmail.com。
转义字符是 '^]'。
220 smtp.gmail.com ESMTP j6-20020ac25506000000b004b53eb60e3csm1066162lfk.256 - gsmtp

请注意,如果您使用云托管并为 SMTP 服务器使用 25 端口,那么托管服务提供商很可能默认阻止了 25 端口上的传出连接。 下面您可以看到有关如何解决此问题的说明链接:

除了托管服务提供商的端口阻止外,您还需要检查服务器上的端口是否被关闭。 让我们以使用 FASTPANEL 控制面板时作为防火墙的 iptables 为例。 检查特定端口(在本例中为 25)是否存在规则的命令如下:

iptables-save | grep 25

如果您要检查的端口没有对应规则,则不会返回任何信息。 如果您看到存在阻止邮件服务端口的规则,则需要使用以下命令删除该规则:

iptables -D rule chain

例如,您运行了一条命令并发现如下内容:

iptables-save | grep 25

-A INPUT -p tcp -m tcp --dport 25 -j DROP

这条规则不允许通过 25 端口对您的服务器进行任何访问,这将阻止邮件收发

要删除该规则,请使用以下命令:

iptables -D INPUT -p tcp -m tcp --dport 25 -j DROP

此命令示例可让您检查用于邮件服务的每个端口

IPv6 对邮件收发的影响

如果您需要为邮件服务使用 ipv6,首先需要检查是否存在 ipv6 的 PTR 记录,以及邮件服务是否在特定端口上监听 ipv6。

您可以使用以下命令执行检查:

netstat -nltpp | grep tcp6

此命令的输出结果将列出所有使用 ipv6 的服务,您可以据此检查邮件服务是否使用了该地址。 遗憾的是,如今即使您已正确完成所有设置,ipv6 的使用也可能无法正常工作。

如果您通过检查邮件服务日志发现错误与 ipv6 有关,并且整体配置正确,则可以为邮件服务禁用 ipv6。

以 exim4 为例,禁用 ipv6 的方法如下:

  1. 使用以下命令检查服务是否使用了 ipv6 地址

    netstat -nltp | grep exim

    检查 exim 是否使用了 ipv6 地址

  2. 在配置文件 /etc/exim4/exim4.conf.template 中,必须在文件最顶部添加以下一行:

    disable_ipv6=true

  3. 保存文件中的更改,然后使用如下命令重启服务:

    systemctl restart exim4
  4. 执行以下命令:

    netstat -nltp | grep exim

    以检查该服务是否已不再出现在列表中

    检查是否已为 exim 禁用 ipv6

使用第三方服务检查邮件发送

在检查完上述所有项目后,您可以使用第三方资源检查从服务器发送邮件的情况。

最方便且信息最全面的服务之一是 https://www.mail-tester.com

通过使用它,您可以检查当前邮件评分,获取上述数据设置是否正确的信息,并获得改进评分的建议。

为此,只需向网站上列出的地址发送一封电子邮件,然后点击“Then check your score”。

使用 mail-tester 测试您的邮件