什么是SPF,为什么对处理电子邮件的服务器很重要

电子邮件最大的问题之一始终是它很容易受到欺骗,邮件客户端和服务器信任用户提供的用于识别发件人的输入。垃圾邮件发送者经常滥用这一特性来发送电子邮件,让人误以为是它来自一个信誉良好的来源。因此需要一个解决方案来确保邮件只被合法发送方接受,以减少垃圾邮件发送的数量,并使垃圾邮件发送者难以把自己的电子邮件伪装成来自一个声誉良好的域的邮件。

SPF解决方案

这就是SPF(即发送方策略框架)的用处所在。通过该方法,域的所有者可以使用特殊的DNS记录来指定哪些服务器应代表域发送电子邮件。接收电子邮件服务器将检查电子邮件所来自的域的SPF记录;如果发送服务器与任何记录不匹配,则电子邮件将被丢弃,如果匹配,则将被发送。如果域名没有SPF记录,有些服务器可能会发送邮件,有些服务器会将其标记为垃圾邮件,而另一些服务器可能根据其配置将其丢弃。

现在已经建立了SPF的工作原理,让看看如何为一个特定的域创建一个SPF记录。SPF记录是一个特殊格式的TXT记录,它指定了可以和不能为域发送邮件的任何服务器的详细信息。下面是一个使用SPF记录的简单示例,例如.com:

example.com. 60 IN TXT “v=spf1 -all”

为了显示DNS的TXT记录是针对SPF的,该记录以“v=spf1”开头。这之后是规则,在哪里可以发送电子邮件,并且不能用空格分隔发送电子邮件。在本例中,只有一个规则是“-all”,它告诉读取记录的邮件服务器,不应该向该域发送邮件。

了解SPF规则

与其他任何事情一样,规则需要以一种特定的方式进行格式化才能被理解。

以下是选项列表:

all:表示可以与任何域匹配。

a:表示可以与其DNS A或AAAA记录与发送IP匹配的任何域匹配。

MX:表示可以与其DNS MX记录与发送IP匹配的任何域匹配。

PTR:表示记录中的域是否与发送方的域匹配

EXISTS:表示如果域名解析为任何地址,则存在匹配项。

INCLUDE:表示引用另一个域SPF记录并匹配与该记录的设置相匹配的任何域。

IP4:表示可以与匹配特定的IPv4地址或CIDR表示法中指定的地址范围,例如IP4:xxx.xxx.xxx/xx。

IP6:表示可以与与上述类似的特定IPv6地址或范围匹配。

还有一些修饰符规定了如何处理这些匹配项。

+:收到的与此规则匹配的邮件应通过;这是默认操作,因此+是可选的。

–:收到的符合此规则的邮件应被拒绝。

~:收到的符合此规则的邮件应该通过,但要标记。

?:收到的符合此规则的邮件应该没有策略集(将被处理为没有SPF的域)。

在实际使用中,唯一可能使用的修饰符是–。

现在让来看一个简单的SPF记录示例,它可以作为大多数域的基础。

v=spf1 a mx -all

在这种情况下,规则允许接收来自服务器的电子邮件,其中域的A或AAAA记录与发送服务器的IP匹配,或者发送邮件的服务器位于域的MX记录中。在所有其他情况下,电子邮件都会被拒绝。服务器也发送电子邮件,如状态和监视电子邮件,如果发现被拒绝,也可以在SPF记录中单独指定它们的IP,以确保它们被送达。例如:

v=spf1 a mx ip:192.168.1.23 -all

这差不多就是它的全部功能——对于最初看起来很混乱的东西来说,这相当简单。用户应该能够把需要的SPF记录放在域名上,并避免任何垃圾邮件。有兴趣的朋友可以参考阅读 怎样搭建一个Linux邮件服务器