为什么我不喜欢SPF

SPF即Sender Policy Framework(发送者策略框架),用来防止垃圾电子邮件。简言之,发送方在自己域名(例如163.com)的DNS TXT记录里,标明一些IP地址段,这些地址段包括了发送方的合法IP地址。接收方MTA在收到这个域的邮件时,可选择的查询SPF记录(TXT)。如果发送者IP地址不在SPF里,则采取相应策略,例如拒收或丢弃邮件。

SPF在一定程度上有用,但是它有很多麻烦,我个人对SPF持保留意见。如果反垃圾过度依赖SPF,会造成一些问题。包括:

一. 邮件转发问题

例如,163发给263,263转发给新浪。263在转发的SMTP会话里,可能使用mail from:这种形式。如果Sina严格检查163的SPF,会认为263是欺诈行为,从而拒收这封转发邮件。

二. SMTP Relay问题

国外大多数ISP,例如Comcast、Earthlink、Arcor等,都对订阅用户提供SMTP Relay服务。例如我有一个德国Arcor帐号,可以使用它的邮件服务器,在通过认证后发送任何域(包括163.com)的电子邮件。如果接收方MTA检查SPF,那么设置了严格SPF的域的邮件就发不过去。

三. Yahoo webmail问题

Yahoo的webmail里可以设置发送任何外域(例如163.com)的邮件。并且Yahoo服务器在发送这些邮件时,跟Gmail、Live不同,它在SMTP会话里使用了真正的mail from:这种形式。因此,设置了严格SPF的域的邮件,通过Yahoo就基本发不出去。

因为如上等原因,国外一些大的邮件提供商如Yahoo,没有设置SPF记录。Hotmail、Gmail、Comcast等,将SPF设置为很宽松的?all或者较宽松的~all。而国内大型的邮件提供商网易、新浪,SPF设置为最严格的-all,毫无退路,并不可取。QQ、Sohu等SPF 为~all,要明智一些。

Leave a comment

About pyh's blog

user-pic Programming and sysadmin with Perl. The former NetEase antispam team leader.