SPF、DMARC 在防止邮件伪造中的表现

邮件服务器之间发送邮件是不存在认证的,这样会导致任意一台服务器都可以冒他人进行邮件的投递。为了防止这种任意伪造邮件的情况,我们可以使用 SPF、DMARC 协议用来防止自己的域名被伪造。SPF、DMARC 的配置之后在各大平台的防御效果如何今天我花费一些时间来对比一下。由于目前很多企业邮箱服务商不支持 DKIM

测试工具

swaks

测试邮件平台

测试方法

分别在不同的 SPF、DMARC配置的情况下使用 swaks 发送伪造邮件

参考文档

SPF:
- http://www.openspf.org/SPF_Record_Syntax
- https://support.google.com/a/answer/33786?hl=zh-Hans

DMARC:
- https://dmarc.org/overview/
- https://support.google.com/a/answer/2466580?hl=zh-Hans

swaks 使用

swaks --from [email protected] --ehlo lisunlou.com --body TestMail --header "Subject: Juest For Test" --to [email protected]

约定配置

  1. 无任何配置

  2. SPF SoftFail

    SPF: v=spf1 ip4:8.8.8.8/32 ~all
    
  3. SPF Fail

    SPF: v=spf1 ip4:8.8.8.8/32 -all
    
  4. SPF SoftFail And DMARC

    SPF: v=spf1 ip4:8.8.8.8/32 ~all
    DMARC: v=DMARC1; p=reject
    
  5. SPF Fail And DMARC

    SPF: v=spf1 ip4:8.8.8.8/32 -all
    DMARC: v=DMARC1; p=reject
    

测试结果

邮件平台 1 2 3 4 5
Gmail 垃圾邮件 垃圾邮件 垃圾邮件 拒绝 拒绝
163 正常 正常 拒绝 拒绝 拒绝
QQ 正常 正常 拒绝 拒绝 拒绝
Aliyun 正常 正常 拒绝 垃圾邮件 拒绝

测试过程中遇到的问题

Gmail 返回 550,通过 https://www.spamhaus.org/query/ip/58.34.xxx.xxx 查询发现

58.34.xxx.xxx is not listed in the SBL
58.34.xxx.xxx is listed in the PBL, in the following records:

PBL359065
58.34.xxx.xxx is not listed in the XBL

需要先申请从 CBL 移除我的 IP 地址

总结建议

为了能够避免邮件伪造行为,建议还是将 SPF 和 DMARC 都配置上。