对 Office 365 租户执行 DMARC 策略(拒绝)

信息安全 电子邮件欺骗 dmarc
2021-09-02 21:48:13

域和租户已正确配置 SPF 和 DKIM,并将 DMARC 策略设置为p=reject. 尽管如此,在From标题中使用域欺骗的电子邮件不会被拒绝,而是出现在Office 365垃圾邮件文件夹中。人们确实会检查他们的垃圾邮件是否存在误报,并且仍在阅读所有 CEO 欺诈、性勒索信等。

如 Microsoft文档中所述,这似乎是一项功能而不是错误:

Office 365 如何处理未通过 DMARC 的入站电子邮件

如果发送服务器的 DMARC 策略是p=reject,EOP 将邮件标记为垃圾邮件而不是拒绝它。换句话说,对于入站电子邮件,Office 365 的处理方式p=rejectp=quarantine此相同。

Office 365 是这样配置的,因为某些合法电子邮件可能无法通过 DMARC。例如,如果将邮件发送到邮件列表,然后将邮件转发给所有列表参与者,则该邮件可能会失败 DMARC。如果 Office 365 拒绝了这些邮件,人们可能会丢失合法电子邮件并且无法检索它。相反,这些邮件仍然无法通过 DMARC,但它们将被标记为垃圾邮件并且不会被拒绝。

但是,这种推理有一些缺陷:

  • DKIM 保护合法邮件;即使 DKIM 签名的邮件在邮寄列表上转发时未能与 SPF 保持一致,它也会通过 DMARC 策略。(无论如何,邮件列表应该更改信封发件人以通过 SPF 检查,因此 SPF 检查可能已通过,但未对齐。)

  • 通过实施p=reject而不是p=quarantine域的所有者已经声明应该拒绝电子邮件。因此,微软的实现是针对RFC 7489, 6.3的:

    p: Requested Mail Receiver policy ...
    
   reject:  The Domain Owner wishes for Mail Receivers to reject
      email that fails the DMARC mechanism check.  Rejection SHOULD
      occur during the SMTP transaction.

Office 365 上是否有任何设置可以更改此行为并拒绝这些消息?

1个回答

这可以通过添加传输规则在 Office 365 租户上实现。一封未通过域的 DMARC 测试的电子邮件p=reject标头dmarc=fail action=oreject中包含和compauth=fail reason=000Authentication-Results

你可以赶上dmarc=fail action=oreject

action 指示垃圾邮件过滤器根据 DMARC 检查结果采取的操作。

  • orejecto.reject:代表覆盖拒绝。在这种情况下,当 Office 365 从其 DMARC TXT 记录的策略为 p=reject 的域接收到未通过 DMARC 检查的邮件时,Office 365 会使用此操作。Office 365 不会删除或拒绝邮件,而是将邮件标记为垃圾邮件。

不幸的是,复合身份验证 对于和compauth=fail reason=000都是相同的单独使用它也会影响政策不太严格的邮件,只隔离它。遵循RFC 7489, 6.3你不会想要那个。p=rejectp=quarantine

compauth=fail 消息未通过显式身份验证(在 DNS 中显式发送域发布的记录)或隐式身份验证(发送域未在 DNS 中发布记录,因此 Office 365 对结果进行插值,就好像它已发布记录一样)。

reason=0xx 消息复合身份验证失败。

  • 000 表示邮件通过拒绝或隔离操作未能通过 DMARC。

为避免误报,最好同时要求两者。但是,Office 365 传输规则没有“和”条件的选项:唯一合适的选项“邮件头包含... ”只能使用一次,并且它只有“或”-lists 即“包含任何这些话“。出于这些原因,我选择了dmarc=fail action=oreject并在以下说明中使用它。


添加传输规则的步骤:

  1. 转到Exchange 管理中心 https://outlook.office365.com/ecp/

  2. 邮件流>规则上,按+添加规则并将其命名,例如 DMARC 拒绝。

  3. 要显示所需的设置,请按选择下方的“更多选项...”链接。

  4. "Apply this rule if..."上选择"A message header...""includes any there words"

  5. 添加详细信息:'Authentication-Results' 标题包括 'dmarc=fail action=oreject'.

    如果... 邮件标头包含...,则应用此规则

  6. 通过设置“执行以下操作...”“阻止消息...”选择所需的操作

    RFC 7489, 1.3 Rejecting Messages提出了两种可能性:

   o  A "silent discard", wherein the SMTP server returns a 2xy reply
      code implying to the client that delivery (or, at least, relay)
      was successfully completed, but then simply discarding the message
      with no further action.

这相当于“删除消息而不通知任何人”。

[![Delete the message without notifying anyone.][7]][7]
   o  Full rejection, wherein the SMTP server issues a 5xy reply code as
      an indication to the SMTP client that the transaction failed; the
      SMTP client is then responsible for generating notification that
      delivery failed (see Section 4.2.5 of SMTP RFC 5321).
i.e. *"Reject the message with the explanation...* `rejected by DMARC policy`*"*

[![Reject the message with the explanation... rejected by DMARC policy][8]][8]

但是,Microsoft Office 365不支持连接阶段拒绝,因此后者不会完全响应 SMTP5xy回复代码,而是向信封发件人发送未送达报告(NDR) ,并使用定义的自定义消息:

NDR:您发送给 user@example.com 的消息无法发送。

NDR 上的技术错误是550 5.7.1 TRANSPORT.RULES.RejectMessage; the message was rejected by organization policy ,它附加了原始邮件标头。