我有一个主域名,其 SPF 记录(现在)有效,但我们还通过 cpanel PHPXML API 以编程方式为客户创建了大量子域名。这些子域名不用于发送任何邮件。
当我们创建它们时,它们会获取我的 IP 的 A 记录和“v=spf1 +a +mx +ip4:[MY IP] ?all”的 TXT 记录。这些就是它们拥有的所有 DNS 记录
最近,我们收到了很多电子邮件欺骗,并意识到我们的主要域名存在无效(重复的 SPF)。我们刚刚修复了这个问题,但不确定:
1) 垃圾邮件发送者是否仍可以使用上面列出的 SPF 从没有 MX 记录的子域名伪造电子邮件?
2)与我列出的相比,子域名没有 SPF 是否更好?
3)有没有办法阻止子域名通过我的主域名的 SPF 发送/欺骗电子邮件?
这是我们的主机建议我们切换到的主要域 SPF:“v=spf1 a mx ptr a:dedrelay.[webhost].com include:dedrelay.[webhost].com ~all”
答案1
子域名不受主域名 SPF 记录的影响。如果您有一堆子域名,并且您知道它们永远不会发送邮件,那么最好的办法就是-all
为每个子域名定义一个 SPF 记录。这样,互联网也可以知道您不想让它们发送电子邮件。
编辑:如果子域没有 SPF 记录,则检查 SPF 的收件人将看不到与 SPF 相关的阻止理由。
是的,SPF 不会阻止某人接受来自没有 MX 记录的子域的邮件。他们可能选择不这样做,但只要它能解析 - 有时即使它不能解析 - 他们也可能选择这样做。这不是 SPF 问题。
您当前的 SPF 记录对于防止子域名上的欺骗没有任何作用,因为正如我所说,子域名不受主域名的 SPF 记录的影响。
很抱歉这会给你带来很多麻烦,但是如果您想使用 SPF 建议收件人拒绝来自这些子域的电子邮件,您需要为他们定义 SPF 记录。这就是协议的工作原理。
答案2
虽然RFC 7208 不建议这么做,您可以使用通配符子域来定义 SPF 记录。但是,如果您要阻止邮件的任何子域具有任何类型的现有资源记录(这可能是您想要这样做的唯一原因),则无论如何您都需要明确定义该子域的 SPF 记录。
来自 RFC 的示例:
EXAMPLE.COM. MX 10 A.EXAMPLE.COM
EXAMPLE.COM. TXT "v=spf1 a:A.EXAMPLE.COM -all"
*.EXAMPLE.COM. MX 10 A.EXAMPLE.COM
*.EXAMPLE.COM. TXT "v=spf1 a:A.EXAMPLE.COM -all"
A.EXAMPLE.COM. A 203.0.113.1
A.EXAMPLE.COM. MX 10 A.EXAMPLE.COM
A.EXAMPLE.COM. TXT "v=spf1 a:A.EXAMPLE.COM -all"
*.A.EXAMPLE.COM. MX 10 A.EXAMPLE.COM
*.A.EXAMPLE.COM. TXT "v=spf1 a:A.EXAMPLE.COM -all"
因此,如果稍后为您定义了一条记录,B.EXAMPLE.COM.
则也必须为其明确定义一条 SPF 记录。
这无疑限制了通配符记录在此目的上的实用性,但从您的问题中很难看出。
答案3
使用 DMARC,因为如果子域上不存在 DMARC 记录,它将自动查看“组织”域。https://www.valimail.com/blog/how-dmarc-handles-domains-and-subdomains-in-email-addresses-part-1/