GMail 退回通过 IPv6 发送的邮件,IPv4 正常

GMail 退回通过 IPv6 发送的邮件,IPv4 正常

我无法从我的域名 camgirltools.net 使用 IPv6 向 GMail 地址发送电子邮件

如果使用 IPv4,则一切正常,邮件已送达。使用 IPv6 向 GMail 发送邮件(其他方也可以)时,我收到了退回邮件:

主机 ASPMX.L.GOOGLE.COM[2607:f8b0:4003:c08::1a] 说:

550-5.7.1 [2a02:748:a800:ca7:ea75:b12d:f:20 12] 我们的系统检测到此邮件可能是未经请求的邮件。为了减少发送到 Gmail 的垃圾邮件数量,此邮件已被屏蔽。请访问http://support.google.com/mail/bin/answer.py?hl=en&answer=188131了解更多信息。

j124si9092437oia.0-gsmtp(回复 DATA 命令结束)

(为了提高可读性,删除了消息中间不必要的重复错误代码)

我不发送批量消息,我发送的每条(和唯一)消息都会收到相同的错误。相同的消息(标题、数据)在 IPv4 上有效。


Google 在错误消息中给出的帮助页面链接的文档中指出:

为了确保 Gmail 能够识别您:

  • 使用一致的IP地址发送批量邮件。
  • 保留您发送邮件的 IP 地址的有效反向 DNS 记录,指向您的域。在您发送的每封批量邮件中,在“发件人:”标头中使用相同的地址。

我们还建议以下事项:

  • 使用 DKIM 签署邮件。我们不验证使用少于 1024 位的密钥签署的邮件。
  • 发布 SPF 记录。
  • 发布 DMARC 政策。

IPv6 的其他准则

  • 发件 IP 必须具有 PTR 记录(即发件 IP 的反向 DNS),并且应与通过 PTR 记录中指定的主机名的正向 DNS 解析获得的 IP 匹配。否则,邮件将被标记为垃圾邮件或可能被拒绝。
  • 发送域应通过 SPF 检查或 DKIM 检查。否则,邮件可能会被标记为垃圾邮件。

据我所知,我的服务器和 DNS 配置满足以下所有要求:

  • 使用一致的 IP(下面的 Postfix 设置)
  • 反向 DNS 适用于 IPv4 和 IPv6(DNS 记录如下)
  • 我使用 DKIM,并确认它适用于 IPv4,与 IPv6 应该没有区别。此外,DMARC 指定“无”。
  • SPF 已使用且有效,已确认适用于 IPv4,除了使用的 IP 之外,与 IPv6 应该没有区别(并且 IPv6 存在于 SPF 记录中)。此外,DMARC 指定“无”。
  • DMARC 已存在并确认正在工作

  • 发送 IP 具有 PTR,与通过正向 DNS 获得的 IP 匹配(DNS 条目见下文,所用 IP 的 Postfix 配置见下文,退回邮件也清楚地表明使用了正确的 IP)

  • 发送域通过 SPF 和 DKIM,确认适用于 IPv4 以及除 GMail 之外的其他目标。

我的域名和 IP 地址均未出现在任何黑名单中(请随意检查:领域IPv4IPv6),并且它们也没有被 Google 列入黑名单(错误消息指出“IP 已被列入黑名单”而不是“消息已被阻止”。


我的 DNS 记录如下所示(大致按与该问题的相关性排序):

$ dig -tany camgirltools.net
camgirltools.net.                 3599 IN    A 162.252.175.125
camgirltools.net.                 3599 IN AAAA 2a02:748:a800:ca7:ea75:b12d:f:20
camgirltools.net.                 3599 IN   MX 0 camgirltools.net.
camgirltools.net.                 3599 IN  TXT "v=spf1 ip4:162.252.175.125 ip6:2a02:748:a800:ca7:ea75:b12d:f:20 mx include:_spf.google.com -all"
camgirltools.net.                21599 IN   NS ns1.camgirltools.net.
camgirltools.net.                21599 IN   NS ns2.camgirltools.net.
camgirltools.net.                21599 IN   NS ns3.camgirltools.net.
camgirltools.net.                21599 IN   NS ns4.camgirltools.net.
camgirltools.net.                21599 IN   NS ns5.camgirltools.net.
camgirltools.net.                21599 IN  SOA ns1.camgirltools.net. hostmaster.camgirltools.net. 2014121507 10800 3600 604800 3600

$ dig -tany mail._domainkey.camgirltools.net
mail._domainkey.camgirltools.net. 3599 IN  TXT "v=DKIM1\; k=rsa\; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCyohctAU5fDdWFEtbVNny85RCMVXZLto01bWc3adSQMVJ9w7HQXaTuq/j10Fip70VxqeyL2bXsz8yg9Xb3NQ6yGqPINBqSKG2pduDNahsjXj/y/nstXiXXkXMEH8JLlBEwNM//GWgjHkL/2B75hTx+7j5sh010qhv6vyHkTEFDgwIDAQAB"

$ dig -tany _dmarc.camgirltools.net
_dmarc.camgirltools.net.          3599 IN  TXT "v=DMARC1\; p=none\; sp=none\; aspf=r\; adkim=r\; rua=mailto:[email protected]\;"

$ dig -x 162.252.175.125
125.175.252.162.in-addr.arpa.    14399 IN  PTR camgirltools.net.

$ dig -x 2a02:748:a800:ca7:ea75:b12d:f:20
0.2.0.0.f.0.0.0.d.2.1.b.5.7.a.e.7.a.c.0.0.0.8.a.8.4.7.0.2.0.a.2.ip6.arpa.
                                 14399 IN  PTR camgirltools.net.

DKIM 和 SPF 已测试并适用于 IPv4,DNS 的粘合记录一切正常。

Postfix 配置中的相关部分(如果需要,可以随意询问更多参数):

mydomain           = camgirltools.net
myhostname         = $mydomain
inet_interfaces    = all
inet_protocols     = all
smtp_bind_address6 = 2a02:748:a800:ca7:ea75:b12d:f:20

跳过 DKIM 配置,因为它适用于 IPv4,但如果需要,我可以提供它。


那么——我在这里错过了什么?

答案1

我通过 IPv6 向 GMail 发送电子邮件没有遇到任何问题。但是,我的邮件服务器有一个专用的子域。(根据我的经验和研究,我发现二级域名最有可能是垃圾邮件发送者。)

IPv6 往往更容易正确配置电子邮件服务 (rDNS) 等。您可能会被标记为您使用的地址看起来可能基于 MAC 地址。请尝试配置地址,以便您可以在其中使用“::”。

SPF 记录中的 MX 是多余的,因为 IP 规范已经指定了地址。此外,如果您没有将 Google 的 SPF 记录用作 MX,则包括 Google 的 SPF 记录可能是一个标志。我相信他们的~all政策会胜过您的-all政策。

MX 优先级通常非零,您可能想尝试 10。

答案2

我遇到过类似的问题(如果通过 IPv4 发送,Gmail 会接受电子邮件,但通过 IPv6 发送时会被退回),我发现问题在于 SMTP HELO 命令中使用的主机名不是服务器的完全限定名称,并且没有 AAAA 记录(实际上,它是一个简单的主机名,没有任何 tld)。因此,我所做的就是编辑 /etc/hostname 文件以匹配服务器的 fqdn,然后 Google 开始通过 IPv6 接受我的电子邮件。

我不确定为什么它在 IPv4 上没有相同的行为......

答案3

我在多个系统上都遇到过这个问题 - 启用了 rDNS,SPF 记录允许从 IPv6 地址发送,除了 Gmail(和 G-Suite)用户之外的任何服务都没有问题。

我通常反对禁用 IPv6,但这里必须禁用。因此,对于发送到 Google 电子邮件主机的所有邮件,我禁用了 IPv6:打开/etc/postfix/master.cf并在末尾添加以下内容:

smtp-ipv4     unix  -       -       -       -       -       smtp -o inet_protocols=ipv4

现在打开/etc/postfix/main.cf 并添加hash:/etc/postfix/transporttransport_maps =

现在打开/etc/postfix/transport并添加:

gmail.com smtp-ipv4:
google.com smtp-ipv4:
*.google.com smtp-ipv4:
googlemail.com smtp-ipv4:
*.googlemail.com smtp-ipv4:

最后,运行 postmap 并重新启动 postfix:

postmap /etc/postfix/transport
systemctl restart postfix

答案4

我完全忘记了这个问题。虽然问题仍然存在,但我已经以某种方式“解决”了它(好吧,我找到了一种解决这个问题的方法),方法是使用smtp 回复过滤器

在main.cf中:

smtp_reply_filter = pcre:/etc/postfix/smtp_reply_filter_gmailError

/etc/postfix/smtp_reply_filter_gmailError

# Convert permanent error in a temporary one if the reason is GMail complaining
# just because we used IPv6- Postfix will retry to deliver using another MX,
# now using IPv4
/^5(\d\d )5(.*information. \S+ - gsmtp.*)/ 4${1}4$2

过滤器文件中的注释几乎解释了其工作原理:如果 postfix 遇到与过滤器中的正则表达式匹配的回复(左侧),它将把它视为右侧的错误代码。本质上,如果消息包含“信息”和“gsmtp”,它会将任何 5xx 错误代码转换为 4xx 错误代码。现在,与 5xx 相比,4xx 错误只是暂时的 - 因此 postfix 将再次将电子邮件排队并尝试在另一个时间发送它 - 如果为接收域指定了多个 MX,则这次使用另一个 MX。由于 google 为其所有服务器发布了 A 和 AAAA 记录,如果 IPv6 条目失败,下一个将是 IPv4 条目 - 这将接收电子邮件。

与@Thom 解决方法相比,这种方法允许即使对于 gmail 也保持启用 IPv6(以防域的错误消失),但在需要时仍可通过 IPv4 成功发送电子邮件。

相关内容