什么是 MX 记录?发送邮件需要它吗?

MX 记录为收件指定服务器,但发送邮件并不需要它作为协议要求。

发送应用和收件信箱可以使用不同的域名。路由回复的记录不必存在于每个用于发送的子域上。

发送服务器如何使用 MX 记录?

发送服务器查询收件人的域名,找到接受其收件的服务器。

对于 person@example.org,它查询 example.org 的 MX 记录。每条记录指定一个目标服务器,其主机名解析为一个 IP 地址。

RFC 5321 定义了 SMTP 的这一查询流程。

当收件人域名不存在时,发送服务器报告错误。临时查询失败后,它会将邮件排队以便稍后重试。

域名没有 MX 记录时会怎样?

如果不存在 MX 记录,SMTP 将域名本身视为目标,并尝试其地址记录。

这个隐式 MX 的优先级为零。没有显式 MX 列表可以取代它,因此当域名自身的地址可用时,投递会直接送往该地址。

此回退仅适用于空的 MX 列表,无法挽救已发布但不可用的 MX 记录。

空 MX 是另一种指令:RFC 7505 定义了一种显式记录,声明该域名不接受任何邮件。缺少记录允许回退,而空 MX 拒绝投递。

MX 优先级数值是什么意思?

优先级值越低,表示发送方应越先尝试该目标。

如果值分别为 10、20 和 30,则优先选择 10 对应的目标。其余目标在该处无法投递时提供备选。将所有目标设为相同值则允许在同优先级目标间分配流量。

根据 RFC 5321,发送服务器必须对同优先级目标进行随机选择,除非有明确理由偏好某一个。相同优先级并不保证流量的精确均分。

将 MX 记录指向一个已发布地址的主机名,以便发送方可以连接。使用 A 记录发布其 IPv4 地址,或使用 AAAA 记录发布 IPv6 地址。不要使用 CNAME 别名作为目标。别名会阻止 DNS 在 MX 应答中附带地址,从而增加查询次数,如 RFC 2181 所述。

SMTP 客户端必须支持尝试备选目标。规范建议在有多个地址可用时至少尝试两个。第一个失败时不必终止投递尝试。

发送邮件需要 MX 记录吗?

SMTP 不要求你的域名上有显式 MX 记录才能发送邮件。

投递查询使用的是收件人域名。你的发送域名仍需有效的 DNS 和符合接收方要求的身份验证。接收方可以对发送域名执行自己的检查。

因此,缺少 MX 记录并不意味着一个不可达的发送域名会被所有接收方接受。

投递失败通知发往哪里?

投递失败通知发往信封发件人,即在 SMTP 投递过程中提供的用于接收失败通知的地址。

回复发往哪里?

回复通常使用 Reply-To 地址(如果存在),否则使用可见的 From 地址。

发送子域不必托管公司的所有信箱。例如,news.example.com 可用于发送,而回复发往 example.com 上的有效地址。请在邮件地址中明确这一路由选择。

运营报告发往哪里?

postmaster@ 和 abuse@ 等运营地址为其他运营方提供了报告投递或滥用问题的途径。

根据 RFC 5321,中继或投递邮件的 SMTP 服务器必须为其服务的域名接受 postmaster@。这为邮件服务问题提供了联系方式。

RFC 2142 要求组织在具备相应职能时支持角色信箱。例如,互联网服务提供商必须在其组织域名上支持 abuse@。这将投诉路由到负责的团队。

如何使用 Bird 接收邮件?

为域名启用接收功能,并发布 Bird 返回的 MX 记录。

API 的 inbound.enabled 字段接受 true 以启用接收,或 false 以禁用接收。仅发布记录并不会启用该功能。

验证完成后,发往该域名的邮件将成为入站消息。请使用专用的接收子域,因为替换公司域名的 MX 记录会改变其现有邮件的投递目标。

Bird 的 return-path 记录与入站 MX 记录分开处理投递失败通知。接收指南介绍域名设置。退信域名指南介绍失败处理。

简而言之

  1. MX 记录路由收件。

    发送服务器查询收件人域名以找到目标服务器。

  2. 缺少 MX 记录时可以回退到地址记录。

    当不存在 MX 记录时,发送服务器可以使用该域名的地址记录。

  3. 优先级值越低越先尝试。

    优先级相同的目标在没有理由偏好某一个时会被随机选择。

  4. 发送和接收需要分别决策。

    发出的邮件仍需对投递失败、回复和运营联系地址进行适当处理。

基于同一网络构建。

测试 API 密钥即刻获取。添加付款方式并验证发送者身份后,即可解锁生产环境。

Start building with Bird in minutes.