Appendix A. 扩展示例 (Extended Examples)
这些示例基于以下DNS设置:
; 一个具有两个邮件服务器、两个主机和两个服务器的域
; 在域名处
$ORIGIN example.com.
@ MX 10 mail-a
MX 20 mail-b
A 192.0.2.10
A 192.0.2.11
amy A 192.0.2.65
bob A 192.0.2.66
mail-a A 192.0.2.129
mail-b A 192.0.2.130
www CNAME example.com.
; 一个相关域
$ORIGIN example.org.
@ MX 10 mail-c
mail-c A 192.0.2.140
; 这些地址的反向IP
$ORIGIN 2.0.192.in-addr.arpa.
10 PTR example.com.
11 PTR example.com.
65 PTR amy.example.com.
66 PTR bob.example.com.
129 PTR mail-a.example.com.
130 PTR mail-b.example.com.
140 PTR mail-c.example.org.
; 一个声称是某物但实际不是的恶意反向IP域
$ORIGIN 0.0.10.in-addr.arpa.
4 PTR bob.example.com.
A.1. 简单示例 (Simple Examples)
这些示例显示了example.com的各种可能发布的记录,以及哪些
v=spf1 +all
- 任何
都通过
v=spf1 a -all
- 主机192.0.2.10和192.0.2.11通过
v=spf1 a:example.org -all
- 没有发送主机通过,因为example.org没有A记录
v=spf1 mx -all
- 发送主机192.0.2.129和192.0.2.130通过
v=spf1 mx:example.org -all
- 发送主机192.0.2.140通过
v=spf1 mx mx:example.org -all
- 发送主机192.0.2.129、192.0.2.130和192.0.2.140通过
v=spf1 mx/30 mx:example.org/30 -all
- 192.0.2.128/30或192.0.2.140/30中的任何发送主机通过
v=spf1 ptr -all
- 发送主机192.0.2.65通过(反向DNS有效且在example.com中)
- 发送主机192.0.2.140失败(反向DNS有效,但不在example.com中)
- 发送主机10.0.0.4失败(反向IP无效)
v=spf1 ip4:192.0.2.128/28 -all
- 发送主机192.0.2.65失败
- 发送主机192.0.2.129通过
A.2. 多域示例 (Multiple Domain Example)
这些示例显示相关记录的效果:
example.org: "v=spf1 include:example.com include:example.net -all"
如果来自example.org的邮件实际上通过example.com和example.net的服务器传输,则会使用此记录。Example.org的指定服务器是example.com和example.net的指定服务器的并集。
la.example.org: "v=spf1 redirect=example.org" ny.example.org: "v=spf1 redirect=example.org" sf.example.org: "v=spf1 redirect=example.org"
这些记录允许一组都使用相同邮件系统的域使用该邮件系统的记录。这样,当邮件设置更改时,只需更新邮件系统的记录。这些域的记录永远不必更改。
A.3. DNS 黑名单 (DNSBL) 样式示例
假设除了上面列出的域记录之外,还有这些(参见[RFC5782]):
$ORIGIN _spf.example.com.
mary.mobile-users A 127.0.0.2
fred.mobile-users A 127.0.0.2
15.15.168.192.joel.remote-users A 127.0.0.2
16.15.168.192.joel.remote-users A 127.0.0.2
以下记录描述了从任意服务器发送邮件或从个人服务器发送邮件的example.com用户。
example.com:
v=spf1 mx
include:mobile-users._spf.%{d}
include:remote-users._spf.%{d}
-all
mobile-users._spf.example.com:
v=spf1 exists:%{l1r+}.%{d}
remote-users._spf.example.com:
v=spf1 exists:%{ir}.%{l1r+}.%{d}
A.4. 多重要求示例 (Multiple Requirements Example)
假设您的发件人策略要求IP地址在某个范围内并且IP的反向DNS匹配。这可以通过多种方式完成,包括以下方式:
example.com. SPF ( "v=spf1 "
"-include:ip4._spf.%{d} "
"-include:ptr._spf.%{d} "
"+all" )
ip4._spf.example.com. SPF "v=spf1 -ip4:192.0.2.0/24 +all"
ptr._spf.example.com. SPF "v=spf1 -ptr +all"
此示例显示了"-include"机制如何有用,以"+all"结尾的SPF记录如何非常严格,以及德摩根定律的使用。