如何解释“v=spf1 a -all”的语法

如何解释“v=spf1 a -all”的语法

我正在使用此参考页面... http://www.openspf.org/SPF_Record_Syntax

...但我不知道我是否正确地解释了语法。

以下场景是否正确?

"v=spf1 a -all"

a = check DNS A records of the client
- = fail
all = always match

场景 1

  • 电子邮件发送者[电子邮件保护]来自客户端 203.0.113.0
  • bank.gov 的记录是 203.0.113.0
  • SPF 检查 bank.gov 的 A 记录,如果客户端 IP 和 A 记录匹配,则检查通过

场景 2

  • 电子邮件发送者[电子邮件保护]来自客户端 192.0.2.0
  • bank.gov 的记录是 203.0.113.0
  • SPF 检查 bank.gov 的 A 记录,客户端 IP 和 A 记录不匹配,检查失败

场景 3

  • 电子邮件发送者[电子邮件保护]来自客户端 192.88.99.0
  • 192.88.99.0 没有 DNS 记录
  • SPF 检查 home.net 的 A 记录,无法执行 A 记录匹配,“a”机制不适用,拒绝所有适用,检查失败

答案1

是的,这些场景是正确的。

但是,您说的是“客户端” IP 地址。这通常不是要检查的内容,因为电子邮件很少直接从客户端发送到收件人的邮件服务器。该过程通常看起来更像这样:

sender's computer
   -> sender's mail server
      -> recipient's mail server (SPF is checked here)
         -> recipient's computer

SPF 由收件人的邮件服务器检查,查找中使用的 IP 是当前连接的 IP 地址。在本例中,该 IP 地址是发件人的邮件服务器。

另一种常见的情况是这样的:

sender's computer
   -> sender's mail server
      -> sender's mail service provider
         -> recipient's mail server (SPF is checked here)
            -> recipient's computer

这种情况下,发件人的邮件服务提供商的IP地址需要被SPF规则允许。

更进一步来说:

sender's computer
   -> sender's mail server
      -> sender's mail service provider
         -> recipient's anti-spam mail service provider (SPF is checked here)
            -> recipient's mail server (SPF must not be checked here)
               -> recipient's computer

在这种情况下,收件人的垃圾邮件过滤器会进行 SPF 检查,因为它是唯一一个接收发件人邮件服务提供商连接的过滤器。如果收件人的邮件服务器尝试验证 SPF,它将始终失败,因为它只会看到反垃圾邮件服务器的 IP 地址。

相关内容