谈到SPF、DKIM和DMARC,你骗不了我!
我们每天都在发送和接收电子邮件,其中往往包含我们希望安全送达且只有意向接收者才能看到的重要信息。当重要的事情最终落在垃圾邮件文件夹里时,这是一件痛苦的事情……但这是一种你可以以一定程度的成功来解决的麻烦。由于我们被大量试图欺骗我们并造成我们伤害的虚假电子邮件、垃圾邮件和冒牌邮件所淹没,因此打击垃圾邮件是必要的。如果你发送电子邮件,你可以(或应该)使用一些工具来避免被归类为垃圾邮件,并表明你是合法的:SPF、DKIM和DMARC。
二月份生效的最近变化将使SPF、DKIM和DMARC对于发送新闻通讯和大量邮件变得至关重要,但你应该把它们看作是朋友而不是麻烦。
让我们深入了解它们是什么以及如何设置它们。
SPF记录的演变
发送者策略框架(SPF)记录的开发和部署代表了在反垃圾邮件和钓鱼攻击斗争中的重大进步。SPF提供了一种方法,使接收邮件服务器能够验证来自域的电子邮件是否是由该域管理员授权的主机发送的。现在,我们将解开这个谜团,探索SPF记录的历史、用途和实施,提供对它们在提高电子邮件安全方面关键角色的见解。
历史背景
SPF的起源可以追溯到2000年代初,这是一个电子邮件在个人和职业环境中迅速成为通信重要工具的时期。然而,对电子邮件的日益依赖也吸引了恶意行为者,他们开始利用系统的漏洞进行欺骗和钓鱼攻击。电子邮件欺骗,即伪造发件人地址以伪装成另一个人,成为攻击者欺骗收件人的常用手段。
保罗·维克斯(Paul Vixie)和翁文荣(Meng Weng Wong)于2003年提出了SPF项目,旨在解决这些问题。该倡议旨在创建一个简单的电子邮件验证系统,用于检测和防止电子邮件伪造。SPF背后的基本原理是允许域名所有者指定哪些电子邮件服务器被允许代表他们的域名发送电子邮件。这些信息发布在DNS记录中,使电子邮件服务器能够验证传入电子邮件的真实性。
使用和好处
SPF记录主要用于防止电子邮件伪造。通过验证发送服务器,SPF有助于确保电子邮件来自授权源,从而降低垃圾邮件和钓鱼攻击的可能性。此验证过程对于维护电子邮件通信的完整性和保护用户免受潜在伤害至关重要。
实施SPF记录的好处是多方面的。首先,它显著降低了组织域名被用于恶意伪造和钓鱼活动的风险。此外,它提高了合法电子邮件的送达率,因为通过SPF检查的消息不太可能被接收电子邮件系统标记为垃圾邮件。这种对电子邮件声誉的提升可以导致更好的参与率和更有效的沟通。
实施
实施SPF需要创建一种特定的DNS记录,称为SPF记录。此记录包含一个授权代表域名发送电子邮件的IP地址列表。SPF记录的格式以“v=spf1”开头,表示所使用的SPF版本,后面跟有指定允许发送者的机制。
机制
- all: 匹配任何IP地址。通常用于SPF记录的末尾,以指定未匹配任何先前机制的IP地址的策略。
- a: 如果域名具有指向发送服务器IP地址的A记录(IPv4)或AAAA记录(IPv6),则匹配。
- mx: 如果域的MX记录指向发送服务器的IP地址,则匹配。当域的邮件服务器被允许代表域名发送电子邮件时使用。
- ip4: 指定一个授权发送电子邮件的IPv4地址或地址范围。
- ip6: 指定一个授权发送电子邮件的IPv6地址或地址范围。
- include: 包含另一个域的SPF记录。这对于允许第三方供应商代表您的域名发送电子邮件很有用。
- exists: 如果指定的域名解析到任何IP地址,则匹配。
- ptr: 由于性能慢和潜在的滥用可能性而被弃用。它用于匹配如果域的PTR记录解析到发送服务器的域名。
限定符
- + (Pass): 如果未指定,则为默认限定符。表示IP地址被授权发送邮件。
- - (Fail): 表示IP地址未被授权发送邮件,导致拒绝消息。
- ~ (SoftFail): 暗示IP地址未被授权,但消息应被接受,可能被标记为可疑。
- ? (Neutral): 表示发送者对IP地址的授权没有声明。
修饰符
- redirect: 指定一个SPF评估应重定向到的域名。如果存在,则它覆盖所有机制,但不是其他机制。
- exp: 用于提供对失败SPF检查的邮件的解释。它指定一个包含解释字符串的TXT记录的域。
例如,一个SPF记录可能看起来像这样
v=spf1 ip4:192.0.2.0/24 ip4:198.51.100.0/24 include:example.com -all
此记录授权从IP地址范围192.0.2.0/24和198.51.100.0/24发送的电子邮件,允许从由example.com的SPF记录指定的服务器发送的电子邮件,并拒绝来自任何其他来源的电子邮件("-all")。
实施过程涉及几个步骤
- 规划:识别所有代表域名发送电子邮件的服务器和服务。
- 记录创建:构建一个包括所有授权发送IP地址或域的SPF记录。
- 域名系统更新:在域名的DNS设置中发布SPF记录。
- 测试和验证:使用SPF验证工具测试并确保SPF记录配置正确且按预期工作。
SPF的挑战
尽管SPF提供了强大的反垃圾邮件机制,但它并非没有挑战。一个明显的局限性是,SPF只检查信封发件人地址,而不是用户显示的报头地址,后者仍然可能被伪造。此外,错误的SPF设置可能导致合法电子邮件被标记为垃圾邮件或被拒绝,这突出了谨慎配置和定期维护的重要性。
SPF记录生成工具
- MXToolbox (https://mxtoolbox.com/SPFRecordGenerator.aspx):提供简单的SPF记录生成工具,以及其他DNS和域名分析工具。
- SPF向导 (https://www.spfwizard.net/):通过指定允许发送电子邮件的域和IP地址,生成SPF记录的简单界面。
下一个进化步骤,DKIM记录
域名密钥识别邮件(DKIM)在确保电子邮件通信的真实性和完整性方面迈出了重要的一步。通过允许电子邮件发件人将其域名与电子邮件消息关联起来,DKIM提供了一种验证电子邮件来源及其内容完整性的机制。本文深入探讨了DKIM记录的历史、使用和实现,突出了它们在当代电子邮件安全领域的意义。
历史背景
DKIM的发展可以追溯到2000年代初努力对抗垃圾邮件和网络钓鱼的努力。Yahoo的DomainKeys和Cisco的Identified Internet Mail这两个独立的倡议旨在通过验证电子邮件发件人的域名和消息完整性来解决这些问题。这些努力最终导致了两个标准的合并,形成了域名密钥识别邮件(DKIM),该标准于2007年作为IETF标准发布。
DKIM背后的核心思想是提供一个可以由接收者验证的加密签名,确保电子邮件在传输过程中未被篡改,并且它们确实来自声明的域名。这项技术成为对抗基于电子邮件的威胁的关键工具,提供了一种以前不可用的验证层。
使用和好处
DKIM允许发件人通过在每个消息上附加数字签名来对其电子邮件负责。这个签名与发件人的域名相关联,其有效性可以通过从域名的DNS记录中检索相应的DKIM公钥来检查。
DKIM的主要用途和好处包括
- 电子邮件认证:DKIM验证电子邮件确实是由声称来自该域的所有者发送的,有助于防止电子邮件欺骗和网络钓鱼攻击。
- 消息完整性:通过验证数字签名,接收者可以确信电子邮件的内容在传输过程中未被更改,确保了消息的完整性。
- 提高投递率:经过DKIM验证的电子邮件不太可能被标记为垃圾邮件,从而提高了投递率,并确保合法消息能够到达其预期收件人。
实施
实施DKIM涉及几个关键步骤,包括生成公钥私钥对、在域名的DNS记录中发布公钥以及配置电子邮件系统使用私钥签署发出的电子邮件。
DKIM实施过程的简要概述
- 密钥生成:生成用于签署电子邮件的公钥私钥对。私钥保持安全,并由发送邮件服务器使用,而公钥通过DNS公开。
- 发布公钥:公钥在生成密钥时指定的选择器下以TXT记录的形式发布在域名的DNS记录中。这允许接收邮件服务器检索密钥以验证DKIM签名。
- 配置电子邮件签名:配置发送邮件服务器,使用私钥自动对所有发出的电子邮件进行DKIM签名。这通常涉及调整邮件服务器软件或电子邮件发送服务的设置。
- 测试和验证:配置完成后,测试设置至关重要,以确保电子邮件被正确签名,并且可以使用发布的公钥进行验证。
DKIM记录结构
DKIM记录以TXT记录的形式发布在DNS中。它包含几个带标签的值,这些值实际上是您所询问的限定符和配置标志。每个带标签的值(或标志)由一个标签(一个字母或几个字母)后跟一个等号(=)和一个值组成。一个DKIM记录的基本结构可能如下所示
"v=DKIM1; h=sha256; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQD..."
以下是一些关键的限定符和配置标志
- v= (版本):标识DKIM版本,通常是"DKIM1"。
- h= (哈希算法):指定可以用来生成消息签名的哈希算法。常见值包括sha1和sha256。
- k= (密钥类型):指定所使用的密钥类型。最常见值是rsa。
- p= (公钥):用于验证DKIM签名的公钥。这是以Base64编码的。
- s= (服务类型):可选。指定记录所适用的服务类型。常见值是*,表示所有服务。
- t= (标志):可选。指定任何标志,这些标志可以修改DKIM验证过程的行为。可能的值包括
- y:表示域正在测试DKIM。
- s:表示DKIM记录仅用于电子邮件,不应用于其他服务。
高级配置标志
其他配置标志,虽然使用较少,包括
- g= (粒度):指定谁可以为域发送邮件。默认值是*,表示任何人。
- n= (备注):允许域主记录有关DKIM记录状态的注释,验证器不会解释这些注释。
- o=~ 或 o=- (DKIM隔离/拒绝):表示接收者对域的电子邮件应如何严格处理。o=~表示软失败(隔离),而o=-表示硬失败(拒绝)。
配置建议
当为您的域配置DKIM时,请确保
- 您选择了适合您安全需求的最合适的哈希算法(首选sha256)。
- 您的公钥(p=)正确放置并编码在您的DNS记录中。
- 如果您处于测试阶段,请使用t=y标志向收件人指示此情况,以减少合法电子邮件被拒绝的风险。
最后,始终确保您的DKIM记录和相关加密密钥的安全,定期轮换以提高安全性。
DKIM能解决所有问题吗?
虽然DKIM显著提高了电子邮件安全性,但其实现和维护需要仔细考虑。一个挑战是确保私钥的安全;如果被泄露,攻击者可以像域主一样签名电子邮件。此外,DKIM本身并不能解决所有电子邮件安全问题,例如直接域名冒充或确定发送者处理失败DKIM检查的电子邮件的政策。
DKIM记录生成工具
- DKIMCore (http://dkimcore.org/tools/):提供创建DKIM记录的工具,包括一个密钥生成器,有助于设置DKIM签名。
- EasyDMARC (https://easydmarc.com/tools/dkim-generator):提供一个DKIM生成工具,通过指定您的域并选择密钥长度,可以轻松创建DKIM记录。
进化的最终一步?DMARC记录
基于域的消息身份验证、报告和一致性(DMARC)是电子邮件验证领域中的一个关键标准,旨在为电子邮件域所有者提供保护其域名免受未经授权使用的功能,这种使用方式通常称为电子邮件伪造。DMARC的出现标志着在反钓鱼和反垃圾邮件的持续战斗中取得了重要的里程碑,它建立在SPF和DKIM的基础之上,并统一了这些基础框架。
历史背景
DMARC的概念源于对SPF和DKIM局限性的回应。尽管SPF和DKIM在其各自的领域内都很有效,但它们并没有提供一种标准化的方式,让接收者向发送者报告未通过身份验证的消息。这个差距意味着域所有者对他们的域名被用于电子邮件伪造或钓鱼攻击的了解有限。
DMARC于2012年正式推出,作为解决这个问题的方案。它是由包括Google、Microsoft、Yahoo和PayPal在内的领先科技公司共同开发的,旨在创建一个更安全的电子邮件生态系统。DMARC允许域所有者在DNS记录中发布策略,规定接收电子邮件系统应该如何处理未通过SPF或DKIM检查的消息。此外,它还提供了一种机制,让接收电子邮件系统可以向发送者报告这些消息,从而提供对身份验证失败和潜在安全问题的可见性。
使用和好处
DMARC的主要用途是防止在电子邮件通信中未经授权使用域名。这是通过指定策略来实现的,这些策略指示电子邮件接收者如何处理未通过SPF和DKIM身份验证的消息。
实施DMARC的好处包括:
- 增强电子邮件安全:通过允许域所有者定义处理未经身份验证电子邮件的明确策略,DMARC显著降低了钓鱼和伪造攻击的风险。
- 提高可见性:DMARC报告让域所有者能够了解他们的域名在电子邮件中的使用情况,包括未经授权使用的尝试,帮助他们识别和减轻安全威胁。
- 提高电子邮件传递率:拥有DMARC策略的域名发出的合法电子邮件更有可能被传递到收件人的收件箱,因为DMARC有助于确立发送域的真实性。
实施
实施DMARC包括几个关键步骤,从制定策略到在DNS中发布以及分析该策略生成的报告。
以下是这个过程的一个简化概述:
- 策略创建:第一步是创建DMARC策略。该策略指定接收邮件服务器应该如何处理未通过SPF和DKIM检查的电子邮件。策略选项包括“无”(仅监控)、“隔离”(视为可疑)和“拒绝”(阻止电子邮件)。
- DNS记录发布:DMARC策略作为TXT记录发布在域的安全性的_dmarc子域下。此记录使策略可供接收来自该域的消息的电子邮件服务器使用。
- 监控和分析报告:最初,建议使用“无”策略来监控影响而不影响电子邮件传递。支持DMARC的接收邮件服务器会将报告发送到DMARC记录中指定的电子邮件地址,提供有关通过或未通过SPF和DKIM检查的消息的详细信息。
- 根据发现调整策略:在分析报告并确保合法电子邮件正确通过身份验证后,域所有者可以根据需要将DMARC策略调整到更严格的设置。
DMARC策略由其DNS TXT记录中的几个限定符和配置标志定义。以下是DMARC记录的关键组成部分:
限定符
- (策略p):指定接收服务器对未通过DMARC检查的电子邮件应应用的政策。可能的值包括
- none: 将邮件处理方式等同于没有DMARC策略的情况(仅记录日志;不采取行动)。
- quarantine: 将邮件标记为可疑。根据接收者的策略,通常意味着将其转移到垃圾邮件或垃圾邮件文件夹。
- reject: 阻止邮件。这告诉接收服务器拒绝失败的DMARC消息。
- sp(子域策略):指定主域的子域策略。它可以取与p标签相同的值(none、quarantine、reject)。如果没有指定,则将p标签指定的策略应用于子域。
配置标志
- rua(聚合报告的报告URI):指定DMARC失败的聚合报告应发送到何处。这通常是一个格式为mailto: URI的电子邮件地址。
- ruf(法医报告的报告URI):指定单个DMARC失败的法医报告应发送到何处。这也通常是一个格式为mailto: URI的电子邮件地址。
- pct(百分比):指定应用DMARC策略的消息百分比。这允许域名所有者通过从较小的流量百分比开始逐步实施DMARC。
- adkim(DKIM的对齐模式):指定DKIM(域名密钥识别邮件)的对齐模式。值可以是r(宽松)或s(严格)。宽松对齐允许DKIM签名域的Organizational Domain部分(d=)和From域不同,但仍然有一些共享的域组件。严格对齐要求完全匹配。
- aspf(SPF的对齐模式):指定SPF(发送者策略框架)的对齐模式。与adkim一样,值可以是r(宽松)或s(严格)。这控制From头中的域与Return-Path头中的域在SPF对齐中必须匹配的程度。
示例DMARC记录
以下是一个包含各种标志和限定符的DMARC TXT记录的示例
v=DMARC1; p=reject; sp=quarantine; rua=mailto
此记录指定了:
- 主域的拒绝策略,
- 子域的隔离策略,
- 将聚合报告和法医报告发送到指定的电子邮件地址,
- 将策略应用于100%的邮件,
- 并为DKIM和SPF指定宽松对齐。
DMARC有什么陷阱吗?
虽然DMARC是增强电子邮件安全性的强大工具,但其实施并非没有潜在的风险。
正确配置SPF和DKIM记录是有效DMARC操作的前提。配置错误可能导致合法邮件被隔离或拒绝,可能破坏电子邮件通信。因此,采用谨慎的分阶段方法实施DMARC至关重要,从监控模式开始,以便在实施更严格的策略之前识别和纠正任何问题。
此外,分析DMARC报告需要一定程度的专业技术,对于接收大量电子邮件的组织来说可能很费资源。自动化工具和服务可以帮助通过处理和解释DMARC报告来管理这种复杂性,为改进电子邮件安全提供可操作的见解。
DMARC记录生成工具
- DMARCIAN(《https://dmarcian.com/dmarc-record-wizard/》):提供DMARC记录向导,通过回答几个简单问题来创建DMARC记录。
- 全球网络安全联盟DMARC设置指南(《https://dmarc.globalcyberalliance.org/》):提供生成DMARC记录的逐步指南,以及SPF和DKIM的工具。
阻止垃圾邮件和仿冒的比较有效性
虽然SPF和DKIM各自有助于减轻邮件欺骗并确保消息完整性,但单独使用任何一种都无法完全有效地阻止所有形式的垃圾邮件和欺骗。如果攻击者发现一个易受滥用的授权服务器,SPF就可以被规避,而DKIM本身并不能阻止“发件人”头部的域名欺骗。DMARC通过利用SPF和DKIM的优点并通过对策略实施和报告来弥补它们的局限性,显著增强了安全性,使其在正确实施时更有效地对抗欺骗和钓鱼攻击。
潜在的后继者和演变
电子邮件威胁的持续演变需要不断开发身份验证技术。BIMI(消息标识的品牌指示器)是其中一个新兴标准,它与DMARC协同工作。它允许组织在支持电子邮件客户端中显示其品牌标志,为认证电子邮件提供额外的信任层。未来的发展可能会关注增强身份验证、改进这些协议的配置和管理便捷性,以及在整个电子邮件生态系统中提高采用和执行。
高级加密方法、增强的DNS安全功能和基于机器学习的身份验证机制也可能作为SPF、DKIM和DMARC的后继者或补充出现,旨在进一步保护电子邮件通信免受不断发展的威胁。
尽管SPF、DKIM和DMARC在电子邮件安全中各自发挥着至关重要的作用,但这些技术的组合,加上持续的进步和如BIMI之类的补充标准,代表了对抗垃圾邮件和欺骗的最有效策略。电子邮件身份验证的未来很可能涉及一种分层方法,将密码学、域名安全和机器学习的进步整合到不断变化的网络安全环境中。
《Joomla社区杂志》上发布的一些文章代表了作者对特定主题的个人观点或经验,可能并不代表Joomla项目的官方立场
接受后,您将访问 https://magazine.joomla.net.cn/ 之外的第三方外部服务
评论 3
如果您对电子邮件安全和投递感兴趣,这是一篇很好的文章,可以带您了解各种技术。我也喜欢 Philip 费心解释每种技术的所有标志。
每种技术的历史可以帮助您理解为什么以及它们是如何工作的。
这是一篇很好的文章,可以作为人们的参考文档。
感谢 Philip
这真是太好了,我确实有把它当作参考文档的想法,我甚至懒散地把自己的客户指向它!
这是一篇很好的文章,比其他文章更深入一些,概述了如何使用 SPF、DKIM 和 DMARC,而无需深入研究 RFCs 来理解所有选项或标签。
我注意到 EasyDMARC DKIM 生成器的链接已不再有效。请考虑添加一个支持较新 Ed25519 签名机制的生成器链接。