这可以通过添加传输规则在 Office 365 租户上实现。一封未通过域的 DMARC 测试的电子邮件p=reject
将在标头dmarc=fail action=oreject
中包含和。compauth=fail reason=000
Authentication-Results
你可以赶上dmarc=fail action=oreject
:
action
指示垃圾邮件过滤器根据 DMARC 检查结果采取的操作。
oreject
或o.reject
:代表覆盖拒绝。在这种情况下,当 Office 365 从其 DMARC TXT 记录的策略为 p=reject 的域接收到未通过 DMARC 检查的邮件时,Office 365 会使用此操作。Office 365 不会删除或拒绝邮件,而是将邮件标记为垃圾邮件。
不幸的是,复合身份验证 对于和compauth=fail reason=000
都是相同的。单独使用它也会影响政策不太严格的邮件,只隔离它。遵循RFC 7489, 6.3你不会想要那个。p=reject
p=quarantine
compauth=fail
消息未通过显式身份验证(在 DNS 中显式发送域发布的记录)或隐式身份验证(发送域未在 DNS 中发布记录,因此 Office 365 对结果进行插值,就好像它已发布记录一样)。
reason=0xx
消息复合身份验证失败。
000
表示邮件通过拒绝或隔离操作未能通过 DMARC。
为避免误报,最好同时要求两者。但是,Office 365 传输规则没有“和”条件的选项:唯一合适的选项“邮件头包含... ”只能使用一次,并且它只有“或”-lists 即“包含任何这些话“。出于这些原因,我选择了dmarc=fail action=oreject
并在以下说明中使用它。
添加传输规则的步骤:
转到Exchange 管理中心 https://outlook.office365.com/ecp/
在邮件流>规则上,按+
添加规则并将其命名,例如 DMARC 拒绝。
要显示所需的设置,请按选择下方的“更多选项...”链接。
在"Apply this rule if..."上选择"A message header..."和"includes any there words"。
添加详细信息:'Authentication-Results'
标题包括 'dmarc=fail action=oreject'
.
通过设置“执行以下操作...”和“阻止消息...”选择所需的操作
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 上的技术错误是550 5.7.1 TRANSPORT.RULES.RejectMessage; the message was rejected by organization policy
,它附加了原始邮件标头。