本节提供有关 SPF 通道关键字和 SPF MTA 选项的参考信息。SPF 支持是通过应用于外来 tcp_* 通道(通常是 tcp_local)的四个通道关键字实现的。下表显示了这些关键字及其说明。
表 15–2 SPF 关键字
关键字 |
说明 |
---|---|
spfnone |
禁用 SPF 处理 |
spfhelo |
为作为 HELO 或 EHLO 参数指定的域名启用 SPF 处理。 |
spfmailfrom |
为收到 MAIL FROM: 后提供给始发者信封地址的域名启用 SPF 处理. |
spfrcptto |
为收到 RCPT TO: 后提供给始发者信封地址的域名启用 SPF 处理. 处理方式与 spfmailfrom 一样,只是它在 SMTP 事务中被延迟,直到发出 RCPT TO: 命令并且收件人被确认为有效收件人后为止。 |
spfmailfrom 和 spfrcptto 关键字会发生冲突,应该只在通道上指定其中一个关键字。但是,可以同时使用 spfhelo 和 spfmailfrom(或 spfrcptto)以执行两种 SPF 检查。
还支持建立对 SPF 处理的限制,并可以针对各种 SPF 结果,控制是接受 SMTP 命令,还是以 4xx 响应(临时故障)或 5xx 响应(永久故障)拒绝该命令,这些 SPF 结果包括: Fail、SoftFail、PermError 和 TempError。
option.dat 中的以下 MTA 选项可以用于对 SPF 处理进行限制。
表 15–3 SPF 限制选项
选项 |
说明 |
---|---|
SPF_MAX_RECURSION |
指定由于 include: 或 redirect= 而导致的嵌套 SPF 记录中允许的递归数。超过此限制将导致 PermError。 默认值:10(由 RFC 规定) |
SPF_MAX_DNS_QUERIES |
指定需要 DNS 查找的机制数或修饰符数(包括 include:、a:、mx:、ptr:、exists:、redirect= 和 exp=)。请注意,此限制不会计为实际 DNS 查找的数量,因此一个机制可能会导致多个 DNS 查询。超过此限制将导致 PermError。 默认值:10(由 RFC 规定) |
SPF_MAX_TIME |
指定完成 SPF 处理允许的时间(以秒为单位)。超过此值将导致 TempError。默认值远大于 RFC 建议的值。 默认值:45 |
另外,可以配置 option.dat 中的以下 MTA 选项,以控制 SMTP 服务器在响应Fail、SoftFail、PermError 和 TempError 的 SPF 结果时所采取的行为。对于每种结果,SMTP 服务器都可发回 2xx(成功)、4xx(临时故障)或 5xx(永久故障)响应。另外,对于 Fail 和 SoftFail,MTA 能够区分 "all" 机制导致的 SPF 结果和明确引用的匹配。这样您可以区分特定结果和 SPF 记录的默认结果。上述任一选项的有效值是 2、4 或 5。值 2、4 和 5 分别对应来自 SMTP 服务器的 2xx、4xx 和 5xx 响应,这些响应是获取特定 SPF 状态的结果。因此,如果 SPF_SMTP_STATUS_FAIL=2 并且 SPF 记录明确地用 "-a:192.168.1.44"(我们的 IP 地址)阻塞我们,那么我们将使用 "250 OK" 接受该地址,而不是使用 5xx 进行响应。
表 15–4 SPF 故障和错误选项
选项 |
说明 |
---|---|
SPF_SMTP_STATUS_FAIL |
当 SPF 记录的匹配是 "-" 标志的机制("-all" 除外)时使用 默认值:5 |
SPF_SMTP_STATUS_FAIL_ALL |
当匹配机制为 "-all" 时使用 默认值:5 |
SPF_SMTP_STATUS_SOFTFAIL |
当 SPF 记录的匹配是 "~" 标志的机制("~all" 除外)时使用 默认值:2 |
SPF_SMTP_STATUS_SOFTFAIL_ALL |
当匹配机制为 "~all" 时使用 默认值:2 |
SPF_SMTP_STATUS_TEMPERROR |
当有临时故障(通常与 DNS 处理问题有关)时使用。 默认值:4 |
SPF_SMTP_STATUS_PERMERROR |
当有永久故障(通常由于语法或其他 SPF 处理期间发现的技术错误所致)时使用。(请注意,这将由非本地错误引发。) 默认值:5 |