Posted on

什么是DMARC?

DMARC(Domain-based Message Authentication, Reporting and Conformance)是一种邮件认证协议,能够让邮箱域名所有者配置被检测到的假冒这个域名的邮件如何被收信方服务器进行处理,比如放到垃圾箱、隔离或者直接拒收。并把成功或失败的情报报告给指定的邮箱。

例如,我的邮箱是li-yang.cn,我配置了DMARC策略是“v=DMARC1; p=quarantine; ruf=mailto:i@li-yang.cn; aspf=s;”那么一旦有人冒充我的域名发送邮件,如果收到假冒邮件的系统支持DMARC,那么这封邮件就会被隔离,并且我会收到这个系统报告给我的假冒的邮件。

DMARC策略对于企业监测假冒邮件或者商业诈骗还是非常有效的。同时,作为假冒邮件的收件方,如果遵守发件方对于DMARC的策略配置,将邮件进行及时的处理和汇报,也能够及时避免被假冒邮件欺骗。

为什么要开启DMARC?

简单说,就可以对冒充你的域名/邮箱发送邮件的记录进行收集,并且对冒充的行为采取预先配置好的策略。

DMARC的实现流程是怎样的?

假定一个场景,张三想冒充我公司的李四(li4@li-yang.cn)发钓鱼邮件给B公司的王五(wang5@li-yang.cn)。由于SMTP协议本身的特性,客户公司服务器接收邮件时不会对邮件进行认证。如果我公司服务器没有配置SPF、DKIM和DMARC的情况下(此处暂不考虑客户公司邮件服务器自定义的防护功能),这封假冒的邮件则会被王五正常接收,王五成功被骗。

假如我公司正确配置了SPF(或DKIM)和DMARC,那么当客户公司邮箱服务器收到邮件后,首先检查收到的我公司域名对应的SPF是否与接收到邮件的上一跳IP一致,如果一致则SPF校验通过,否则不通过。那么SPF校验失败之后如何处理呢?不考虑服务器默认对于SPF的策略,且开启了DMARC功能的情况下,客户公司邮箱服务器会查询A公司服务器的_dmarc.li-yang.cn的TXT记录是“v=DMARC1; p=quarantine; ruf=mailto:security@li-yang.cn”,发现采取的措施是隔离并汇报给security@li-yang.cn,那么这封假冒的邮件就会被隔离并及时被我公司的安全部门获取。我公司的安全部门及时获知了有坏人假冒我公司,可以通过其他途径对商业合作伙伴预警,避免损失。

如何开启DMARC?

DMARC的配置要求SPF或DKIM生效,其中SPF的配置也是通过DNS记录,DKIM的配置需要邮件提供商的支持。在确保至少已经配置SPF的前提下,可以继续进行DMARC的配置。(如果没有配置SPF,请参考这里。)如果开启了SPF,那么就可以往下看了:

DMARC有着非常强大的策略配置,可以对SPF和DKIM的校验结果进行判断,如果想节省时间,强烈推荐在线的DMAR C生成器,进行DMARC的自动化的生成,并且这些网站通常还具有解析DMARC报告的功能。例如,DMARCLYDMARCIANMXToolBox等。如果想尝试手动编写DMARC的策略,那么请继续往下看吧。

  1. DMARC的格式
    正如前面所提到的,DMARC策略是一条TXT的DNS记录。该记录以键值对的形式表达,由分号分割。首先是固定的内容“v=DMARC1”用来表示该记录是遵循DMARC协议的,然后是p=邮件处理的策略,之后是一些详细的配置项。
  2. 邮件处理策略
    邮件处理的策略有三种选项,建议企业用户在DMARC启用的初期,使用none策略,即只报告不做任何处理,因为有可能会有企业订阅的第三方代发信系统以单位的名义发送邮件但没有及时加入的SPF中或没有正确配置DKIM,例如企业新闻的订阅、第三方HR系统、群发通知等。个人用户确认没有第三方代发信可以直接配置“quarantine”让假冒邮件的收件方隔离邮件或“reject”直接拒收即可。企业用户可以在观察一段时间发现没有被误报的正常邮件,或者发现后及时添加SPF后,可以逐步开启“quarantine”或“reject”。
  3. 报告的接收
    这里的报告分两类,一类是聚合报告,即每24小时发送一次当日内收到的通过DMARC校验和未通过DMARC校验的邮件汇总。XML格式的报表中会包含发件方的邮箱服务器IP和通过或未通过的数量及原因;此类报告通“rua”配置,例如“rua=mailto:aggregate_report@li-yang.cn”。
    另一类是验证失败的独立报告,根据经验,有些服务器会将验证失败的邮件直接作为附件发送过来,这样就方便了管理员进一步调查。此类报告通“ruf”配置,例如“ruf=mailto:failure_report@li-yang.cn”
  4. 其他详细策略
    另外,DMARC还支持对SPF或DKIM比对的方式进行配置,比如仅对SPF或DKIM校验或两者同时校验等4种组合。支持配置对DMARC生效的邮件的百分比,若配置初期怕收件方误拦太多邮件,可以先将百分比降低。DMARC支持配置是否将该策略应用于子域名等。详细配置方法建议参考DMARCLYDMARCIANMXToolBox等。


SPF的配置

SPF的配置与DMARC类似同样是DNS的SPF记录,相较于DMARC会简单很多,只需要梳理发信服务器的IP地址列表即可。此处的IP地址可以是以直接以IP地址的形式表现,也可以include其他的SPF记录,还可以配置解析其他域名的a记录、MX记录等。例如,如果我的邮箱发信服务器IP为224.0.1.1,那么spf记录可以写为“v=spf1 a:224.0.1.1 ~all”。但实际上我的域名服务器使用的腾讯域名邮箱,经过查询腾讯官方文档我可以使用“v=spf1 include:spf.mail.qq.com ~all”。

这里的“~”是什么意思呢?这里与DMARC类似,SPF也是可以配置策略。“+”表示正常放行,是默认策略可以不写,“~”表示软失败,与DMARC的p=none类似,通常是在刚刚部署时调试使用。“-”表示硬失败即拒绝,“?”是一个中性符合表示无策略。当然,以上策略仅仅是对收件方的推荐处理方式,收件方服务器很可能有自己的默认规则,比如直接将所有SPF失败的邮件都做隔离处理。