请启用 JavaScript 来查看本站。

SecurityGateway for Email Servers v9.0

基于域的邮件验证、报告和一致性(DMARC) 这个规范旨在减少邮件滥用(例如通过伪造邮件的“From:” 报头。) DMARC 帮助域拥有者使用“域名系统”(DNS)来向收件服务器告知其 DMARC 策略,例如他们希望这些服务器如何处理自称来自他们域但无法验证实际来源的邮件。收件服务器在处理入站邮件时通过 DNS 查询检索到的这个策略,可以向服务器表明应该隔离或拒收不符合这个策略的邮件,或根本不采取任何操作(例如继续照常处理邮件)。除了这个策略以外,该域的 DMARC DNS 记录也可以包含服务器请求来向某人发送 DMARC 报告、概述自称来自此域的入站邮件的总数、它们是否通过验证、以及任何失败的详细信息。DMARC 的报告功能在确定您的邮件验证流程是否有效,以及伪造邮件使用您域名的频率时极其有用。

在“安全 » 反欺诈”下,提供以下三个部分供您配置 MDaemon 的 DMARC 验证和报告功能: DMARC 验证、DMARC 报告和 DMARC 设置。

DMARC 验证

作为 DMARC 验证流程的一部分,SecurityGateway 对在每封入站邮件的“From:” 报头中找到的域执行 DMARC DNS 查询。这用来确定该域是否使用 DMARC,如果使用了 DMARC 则检索其“DMARC DNS 记录”,其中包含了它的策略和其他 DMARC 相关信息。此外,DMARC 使用 SPFDKIM 来验证每封邮件,并要求它至少通过一项测试来通过 DMARC 验证。如果该邮件通过验证,则按照 SecurityGateway 其余投递和过滤流程来照常处理这封邮件。如果未通过验证,则取决于该域的 DMARC 策略以及您对于 SecurityGateway 如何处理这些邮件的配置来确定该邮件的命运。

如果一封邮件未通过 DMARC 验证,而且 DMARC 域拥有一个“p=none”策略,则不会采取任何惩罚性操作并照常处理这封邮件。当 DMARC 域拥有“p=quarantine”或“p=reject”限制策略时,SecurityGateway 可以有选择性地将该邮件自动过滤到接收用户的隔离文件夹,向其主题报头添加一些文本或调整其邮件分值。对于使用限制性策略且未通过验证的邮件,SecurityGateway 将取决于策略插入“X-SGDMARC-Fail-policy: quarantine”或“X-SGDMARC-Fail-policy: reject”报头。这帮助您使用 Sieve 脚本或您邮件服务器的内容过滤器系统来基于这些报头来执行一些操作,例如将该邮件发送至特定的文件夹进行审核。

建议默认情况下为大多数 SecurityGateway 配置启用 DMARC 验证。

DMARC 报告

在 SecurityGateway 查询 DNS 是否存在 DMARC 记录时,该记录可能包含一些标签,指示域的拥有者是希望接收与声称来自此域邮件相关的 DMARC 综合报告还是故障报告。“DMARC 报告”屏幕上的一些选项供您用来指定是否希望发送请求的报告类型,并指定这些报告应该包含的元数据。将在每晚午夜(UTC)发送综合报告,将按邮件来发送故障报告,因为每个发生的事件将触发这个报告。报告以打包压缩(ZIP)的 XML 文件附件形式发送,而且在线提供各种分析工具,帮助收件人更简便地进行查看。默认情况下,SecurityGateway 仅发送汇总报告。

DMARC 设置

“DMARC 设置”屏幕包含各种选项,例如在 DMARC 报告中包含特定信息、记录 DMARC DNS 记录、以及更新 SecurityGateway 用于 DMARC 的“公共后缀”文件。

DMARC 验证和邮件列表

因为 DMARC 的目的在于确保在邮件“From:” 报头中找到的域不被伪造,必须允许发件服务器代表该域来发送邮件。这会给邮件列表带来一个问题,因为列表通常代表来自外部域的列表成员来分发邮件,并使“From:” 报头保持不变。这就意味着在收件服务器尝试对这些邮件使用 DMARC 验证时,邮件会被不关联“From:” 报头域的服务器发送。如果 DMARC 域正好使用了存在限制的 DMARC 策略,这会导致邮件被隔离甚至被收件服务器拒收。在某些情况下,这会导致从列表的成员中删除收件人。为了规避这个问题,你应该配置域名邮件服务器来使用邮件列表地址替换“发件人:” 报头中的发件人地址,或者将它们配置为在来自具有限制性 DMARC 策略的域时拒绝接受列表中的任何邮件。如果您的邮件服务器时 MDaemon 14.5 或更高版本,默认情况下在发件人的域使用限制性 DMARC 策略时,它将使用邮件列表地址来替换“发件人:” 报头。

为您的域使用 DMARC

如果您希望为您自己的域使用 DMARC,这就意味着您希望支持 DMARC 的收件服务器使用 DMARC 来验证声称由您发送的邮件,您首先必须确保您已为该域创建了格式正确的 SPFDKIM DNS 记录;而且您必须使这些选项正确工作来使用 DMARC。如果您正在使用 DKIM,您也要配置 SecurityGateway 的“DKIM 签名”选项来签署该域的邮件。此外,您必须为该域创建一个 DMARC DNS 记录。通过查询 DNS 是否存在这个拥有特殊格式的 TXT 记录,收件服务器可以确定您的 DMARC 策略和各种可选的参数,例如: 您使用的验证模式、您是否希望接收综合报告、应接收报告的邮件地址等。一旦您正确配置了 DMARC 并开始接收 DMARC XML 报告,您可以使用大量在线工具来阅读这些报告并诊断任何潜在的问题。

定义 DMARC TXT 资源记录

以下是 DMARC 记录常用组件的基本概述。要获得更多详细信息或有关高级配置的更多信息,请参阅: www.dmarc.org

拥有者字段

DMARC 资源记录的“拥有者”(也叫做“姓名”或“左侧”)字段必须始终为 _dmarc,如果您希望指定该记录应用到的域或子域,也可以采用 _dmarc.domain.name 这种形式。

示例:

example.com 的 DMARC 记录

_dmarc IN TXT "v=DMARC1;p=none"

该记录将应用于发自 user@example.com 或子域为 example.com 的电子邮件,例如 user@support.example.com、user@mail.support.example.com 等。

_dmarc.support.example.com IN TXT "v=DMARC1;p=none"

该记录仅应用于发自 user@support.example.com 的电子邮件,不应用于发自 user@example.com 的电子邮件。

_dmarc.support IN TXT "v=DMARC1;p=none"

该记录将应用于发自: user@support.example.com、user@a.support.example.com、user@a.b.support.example.com 等的电子邮件。

DMARC 记录标签和值

必需标签

标签

便笺

v=

DMARC1

这是“版本”标签,必须作为该记录的 DMARC 特定文本部分的第一个标签。即使其他 DMARC 标签值不区分字母大小写,v= 标签的值必须是大写字母: DMARC1

示例:

_dmarc IN TXT "v=DMARC1;p=none"

p=

none

quarantine

reject

这是“策略”标签,必须作为 DMARC 记录中的第二个标签,紧接 v= 这个标签。

p=none 表示收件服务器基于 DMARC 查询结果不采取任何操作。不得基于未通过 DMARC 检查这个失败隔离或拒收邮件。不过可以出于其他理由隔离或拒收这些邮件,例如未通过垃圾邮件过滤测试或与 DMARC 无关的其他安全检查。对于 p=none 的使用有时被称为“监控”或“监控模式”,因为您可以配合 rua= 这个标签一起使用来从收件域接收有关您邮件的综合报告,不过不会对未通过 DMARC 检查的这些邮件执行任何惩罚性操作。您可以一直使用这个策略,直到您彻底测试了您的 DMARC 实施,并确保您已准备好使用更具有限制性的 p=quarantine 策略。

p=quarantine 这个策略用于以下场景:在邮件的“From:” 报头声称由您所发送但未通过 DMARC 检查时,您希望其他邮件服务器将该邮件视为可疑邮件。取决于服务器的本地策略,这可以表示对邮件进行额外审核、将其放入收件人的垃圾邮件文件夹、将其路由到不同的服务器或采取其他操作。

p=reject 表示您希望收件服务器拒收未通过 DMARC 验证的任何邮件。不过一些服务器仍然接收这些邮件,不过将其隔离或进行额外审核。这是限制性最高的策略,通常不使用该策略,除非您对自己的邮件策略、以及您允许账户使用的邮件或服务类型把握十足。例如,如果您允许您的用户加入第三方邮件列表,使用邮件转发服务,并使用网站上的“共享”功能,使用 p=reject 将可能导致一些合法邮件被拒收。而且该设置也会使某些用户被一些邮件列表删除或阻止。

示例:

_dmarc IN TXT "v=DMARC1;p=quarantine;rua=mailto:dmarc-report@example.net"

额外标签

以下列出的所有标签都是可选标签。如果未在记录中使用任何这些标签,则假定其默认值。

标签

便笺

sp=

none

quarantine

reject

默认值:

如果未使用 sp=,则对域和子域应用 p= 这个标签。

此标签用来指定应用 DMAR 记录的域的子域将使用的策略。例如,如果应用于 example.com 的记录中使用了这个标签,那么会将 p= 这个标签中指定的策略应用于来自 example.com 的邮件,将 sp= 这个标签中指定的策略应用于来自 example.com 子域的邮件,例如 mail.example.com。如果在记录中忽略了这个标签,则将 p= 这个标签应用于该域及其子域。

示例:

_dmarc IN TXT "v=DMARC1;p=quarantine;sp=reject"

rua=

由逗号分隔的将接收 DMARC 综合报告的邮件地址列表 必须使用以下格式输入作为 URI 的 地址:
mailto:user@example.com

默认值: none

如果未使用这个标签,则不发送综合报告。

此标签表示您希望从接收了一封“From:” 声称来自您所在域邮件的收件服务器接收 DMARC 综合报告。使用以下格式指定作为 URI 的一个或多个邮件地址: mailto:user@example.com,使用逗号分隔多个 URI。

示例:

_dmarc IN TXT "v=DMARC1;p=quarantine;rua=mailto:user01@example.com,mailto:user02@example.com"

通常这些地址将位于此记录覆盖的域。如果您希望将报告发送至其他域的地址,则该域的 DNS 区域文件必须也包含一个专用的 DMARC 记录,指示它将接收该域的 DMARC 报告。

example.com 的记录示例:

_dmarc IN TXT "v=DMARC1;p=quarantine;rua=mailto:non-local-user@example.net"

example.net 的记录:

example.com._report._dmarc TXT "v=DMARC1"

ruf=

由逗号分隔的将接收 DMARC 故障报告的邮件地址列表 必须使用以下格式输入作为 URI 的 地址:
mailto:user@example.com

默认值: none

如果未使用这个标签,则不发送故障报告。

此标签表示您希望从接收了一封“From:” 声称来自您所在域邮件的服务器接收 DMARC 故障报告,前提是满足了在 fo= 这个标签中指定的条件。在默认情况下,如果未指定 fo= 这个标签,在邮件未通过所有 DMARC 验证检查时将发送故障报告(例如未通过 SPF 和 DKIM 验证)。使用以下格式指定作为 URI 的一个或多个邮件地址: mailto:user@example.com,使用逗号分隔多个 URI。

示例:

_dmarc IN TXT "v=DMARC1;p=quarantine;ruf=mailto:dmarc-failures@example.com"

通常这些地址将位于此记录覆盖的域。如果您希望将报告发送至其他域的地址,则该域的 DNS 区域文件必须也包含一个专用的 DMARC 记录,指示它将接收该域的 DMARC 报告。

example.com 的记录示例:

_dmarc IN TXT "v=DMARC1;p=quarantine;ruf=mailto:non-local-user@example.net"

example.net 的记录:

example.com._report._dmarc TXT "v=DMARC1"

要了解有关 DMARC 规范的更多扩展信息,请参阅: www.dmarc.org