我正在使用此参考页面... 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 地址。