设置 DKIM 以从 Microsoft 365 域对邮件进行签名
提示
你知道可以免费试用Microsoft Defender for Office 365计划 2 中的功能吗? 在 Microsoft Defender 门户试用中心使用 90 天Defender for Office 365试用版。 了解谁可以在试用Microsoft Defender for Office 365上注册和试用条款。
域密钥标识邮件 (DKIM) 是一种 电子邮件身份验证 方法,可帮助验证从 Microsoft 365 组织发送的邮件,以防止商业电子邮件泄露 (BEC) 、勒索软件和其他网络钓鱼攻击中使用的欺骗发件人。
DKIM 的主要用途是验证消息在传输过程中是否未更改。 具体来说:
- 为域生成一个或多个私钥,源电子邮件系统使用对出站邮件的重要部分进行数字签名。 这些消息部分包括:
- 发件人、To、Subject、MIME-Version、Content-Type、Date 和其他邮件头字段 (,具体取决于源电子邮件系统) 。
- 消息正文。
- 数字签名存储在邮件头的 DKIM-Signature 标头字段中,只要中间电子邮件系统不修改邮件的已签名部分,数字签名就保持有效。 签名域由 DKIM-Signature 标头字段中的 d= 值标识。
- 相应的公钥存储在 Microsoft 365 中签名域的 DNS 记录 (CNAME 记录中;其他电子邮件系统可能会使用 TXT 记录) 。
- 目标电子邮件系统使用 DKIM-Signature 标头字段中的 d= 值来:
- 标识签名域。
- 在域的 DKIM DNS 记录中查找公钥。
- 使用域的 DKIM DNS 记录中的公钥来验证消息签名。
有关 DKIM 的重要事实:
- 不需要用于对邮件进行 DKIM 签名的域来匹配邮件中的 MAIL FROM 或 From 地址中的域。 有关这些地址的详细信息,请参阅 Internet 电子邮件需要身份验证的原因。
- 消息可以具有不同域的多个 DKIM 签名。 事实上,许多托管电子邮件服务使用服务域对邮件进行签名,然后在客户为域配置 DKIM 签名后,使用客户域再次对邮件进行签名。
在开始之前,你需要根据电子邮件域了解Microsoft 365 中的 DKIM:
例如,如果仅将 Microsoft Online Email 路由地址 (MOERA) 域用于电子邮件 (,则无需执行任何操作 contoso.onmicrosoft.com) 。 Microsoft从初始 *.onmicrosoft.com 域自动创建 2048 位公钥-私钥对。 出站消息使用私钥自动进行 DKIM 签名。 公钥在 DNS 记录中发布,因此目标电子邮件系统可以验证邮件的 DKIM 签名。
但是,也可以使用 *.onmicrosoft.com 域手动配置 DKIM 签名。 有关说明,请参阅本文后面的 使用 Defender 门户使用 *.onmicrosoft.com 域自定义出站消息的 DKIM 签名 部分。
若要验证出站邮件是否已自动进行 DKIM 签名,请参阅本文后面的 验证来自 Microsoft 365 的出站邮件的 DKIM 签名 部分。
有关 *.onmicrosoft.com 域的详细信息,请参阅 为什么我有“onmicrosoft.com”域?。
例如,如果对电子邮件 (使用一个或多个自定义域,contoso.com) :即使来自 Microsoft 365 的所有出站邮件都由 MOERA 域自动签名,你仍需要执行更多工作才能实现最大的电子邮件保护:
使用自定义域或子域配置 DKIM 签名:消息需要由源地址中的域进行 DKIM 签名。 我们还建议配置 DMARC,并且仅当 DKIM 签名消息的域与 From 地址中的域一致时,DKIM 才会通过 DMARC 验证。
子域注意事项:
对于不受直接控制的电子邮件服务 (例如批量电子邮件服务) ,我们建议使用子域 (例如,marketing.contoso.com) 而不是main电子邮件域 (contoso.com) 。 你不希望从这些电子邮件服务发送的邮件问题影响main电子邮件域中员工发送的邮件的信誉。 有关添加子域的详细信息,请参阅 是否可以将自定义子域或多个域添加到 Microsoft 365?。
用于从 Microsoft 365 发送电子邮件的每个子域都需要其自己的 DKIM 配置。
提示
DMARC 涵盖对未定义子域的Email身份验证保护。 (定义或未定义的任何子域) 继承父域 (的 DMARC 设置,) 可重写每个子域。 有关详细信息,请参阅 设置 DMARC 以在 Microsoft 365 中验证发件人的 From 地址域。
如果你拥有已注册但未使用的域:如果你拥有不用于电子邮件的注册域,或者根本不 (也称为 ) 的寄存域 ,请不要发布这些域的 DKIM 记录。 由于缺少 DKIM 记录 (因此,DNS 中缺少用于验证消息签名的公钥) 会阻止对伪造域进行 DKIM 验证。
仅靠 DKIM 是不够的。 为了获得自定义域的最佳电子邮件保护级别,还需要将 SPF 和 DMARC 配置为整个 电子邮件身份验证 策略的一部分。 有关详细信息,请参阅本文末尾的 后续步骤 部分。
本文的其余部分介绍了需要为 Microsoft 365 中的自定义域创建的 DKIM CNAME 记录,以及使用自定义域的 DKIM 的配置过程。
提示
使用自定义域配置 DKIM 签名是 Microsoft 365 中的过程和自定义域的域注册机构的过程的混合。
我们提供有关在许多域注册机构为不同Microsoft 365 服务创建 CNAME 记录的说明。 可以使用这些说明作为创建 DKIM CNAME 记录的起点。 有关详细信息,请参阅 添加 DNS 记录以连接域。
如果不熟悉 DNS 配置,请联系域注册机构并寻求帮助。
DKIM CNAME 记录的语法
提示
使用 Defender 门户或 Exchange Online PowerShell 查看使用自定义域对出站消息进行 DKIM 签名所需的 CNAME 值。 此处提供的值仅用于说明。 若要获取自定义域或子域所需的值,请使用本文后面的过程。
RFC 6376 中详细介绍了 DKIM。
从 Microsoft 365 发送邮件的自定义域的 DKIM CNAME 记录的基本语法是:
Hostname: selector1._domainkey
Points to address or value: selector1-<CustomDomain>._domainkey.<InitialDomain>
Hostname: selector2._domainkey
Points to address or value: selector2-<CustomDomain>._domainkey.<InitialDomain>
在 Microsoft 365 中,启用使用自定义域或子域进行 DKIM 签名时,将生成两个公钥-私钥对。 用于对消息进行签名的私钥不可访问。 CNAME 记录指向用于验证 DKIM 签名的相应公钥。 这些记录称为 选择器。
- 只有一个选择器处于活动状态,并在启用使用自定义域进行 DKIM 签名时使用。
- 第二个选择器处于非活动状态。 它仅在将来的任何 DKIM 密钥轮换后激活和使用,然后仅在停用原始选择器之后使用。
用于验证 DKIM 签名 (用于推断用于对消息) 签名的私钥存储在 DKIM-Signature 标头字段的 s= 值中的选择器 (例如
s=selector1-contoso-com
) 。主机名:所有Microsoft 365 组织的值相同:
selector1._domainkey
和selector2._domainkey
。<CustomDomain>:用短划线替换句点的自定义域或子域。 例如,
contoso.com
变为contoso-com
或marketing.contoso.com
变为marketing-contoso-com
。<InitialDomain>:注册 Microsoft 365 (时使用的 *.onmicrosoft.com,例如 contoso.onmicrosoft.com) 。
例如,组织在 Microsoft 365 中具有以下域:
- 初始域:cohovineyardandwinery.onmicrosoft.com
- 自定义域:cohovineyard.com 和 cohowinery.com
需要在每个自定义域中创建两条 CNAME 记录,总共四条 CNAME 记录:
cohovineyard.com 域中的 CNAME 记录:
主机名:
selector1._domainkey
指向地址或值的点:selector1-cohovineyard-com._domainkey.cohovineyardandwinery.onmicrosoft.com
主机名:
selector2._domainkey
指向地址或值的点:selector2-cohovineyard-com._domainkey.cohovineyardandwinery.onmicrosoft.com
cohowinery.com 域中的 CNAME 记录:
主机名:
selector1._domainkey
指向地址或值的点:selector1-cohowinery-com._domainkey.cohovineyardandwinery.onmicrosoft.com
主机名:
selector2._domainkey
指向地址或值的点:selector2-cohowinery-com._domainkey.cohovineyardandwinery.onmicrosoft.com
在 Microsoft 365 中配置出站消息的 DKIM 签名
使用 Defender 门户使用自定义域启用出站消息的 DKIM 签名
提示
使用自定义域启用出站消息的 DKIM 签名会将 DKIM 签名从使用初始 *.onmicrosoft.com 域切换到使用自定义域。
只有在域已成功添加到 Microsoft 365 后,才能使用自定义域或子域对出站邮件进行 DKIM 签名。 有关说明,请参阅 添加域。
确定自定义域何时启动 DKIM 签名出站邮件的main因素是 DNS 中的 CNAME 记录检测。
若要使用本节中的过程,自定义域或子域必须显示在 Email 身份验证设置页https://security.microsoft.com/authentication?viewid=DKIM的 DKIM 选项卡上。 详细信息浮出控件中域的属性必须包含以下值:
- “使用 DKIM 签名对此域的签名消息”开关设置为“禁用”。
- “状态”值为“未对域的 DKIM 签名进行签名”。
- 不存在创建 DKIM 密钥。 旋转 DKIM 密钥 可见,但灰显。
如果域满足这些要求,请继续操作。
在 Defender 门户中https://security.microsoft.com,转到Email &协作>策略 & 规则>威胁策略>Email身份验证设置页。 或者,若要直接转到“Email身份验证设置”页,请使用 https://security.microsoft.com/authentication。
在“Email身份验证设置”页上,选择“DKIM”选项卡。
在“DKIM”选项卡上,单击名称旁边的“检查”框以外的行中的任意位置,选择要配置的自定义域。
在打开的域详细信息浮出控件中,选择当前设置为“已禁用”的“使用 DKIM 签名为此域签名消息”切换。
请注意 “上次检查日期 ”值。
此时会打开 “客户端错误 ”对话框。 此错误包含在域注册机构创建的两个 CNAME 记录中使用的值。
在此示例中,contoso.com 自定义域,Microsoft 365 组织的初始域 contoso.onmicrosoft.com。 错误消息如下所示:
|Microsoft.Exchange.ManagementTasks.ValidationException|CNAME record does not exist for this config. Please publish the following two CNAME records first. Domain Name : contoso.com Host Name : selector1._domainkey Points to address or value: selector1- contoso-com._domainkey.contoso.onmicrosoft.com Host Name : selector2._domainkey Points to address or value: selector2-contoso-com._domainkey.contoso.onmicrosoft.com . If you have already published the CNAME records, sync will take a few minutes to as many as 4 days based on your specific DNS. Return and retry this step later.
因此,需要在 DNS 中为 contoso.com 域创建的 CNAME 记录如下:
主机名:
selector1._domainkey
指向地址或值的点:selector1-contoso-com._domainkey.contoso.onmicrosoft.com
主机名:
selector2._domainkey
指向地址或值的点:selector2-contoso-com._domainkey.contoso.onmicrosoft.com
复制错误对话框中的信息, (选择文本,然后按 Ctrl+C) ,然后选择 “确定”。
使域详细信息浮出控件保持打开状态。
在另一个浏览器选项卡或窗口中,转到域的域注册机构,然后使用上一步中的信息创建两条 CNAME 记录。
我们提供有关在许多域注册机构为不同Microsoft 365 服务创建 CNAME 记录的说明。 可以使用这些说明作为创建 DKIM CNAME 记录的起点。 有关详细信息,请参阅 添加 DNS 记录以连接域。
Microsoft 365 需要几分钟 (或更长的) 来检测你创建的新 CNAME 记录。
一段时间后,返回到在步骤 5 中保持打开的域属性 flout,并选择“ 为此域使用 DKIM 签名为消息签名 ”切换。
几秒钟后,将打开以下对话框:
选择“ 确定” 关闭对话框后,验证详细信息浮出控件上的以下设置:
- 此域的“使用 DKIM 签名对消息进行签名”切换设置为“已启用”。
- “状态”值为此域的“签名 DKIM 签名”。
- 轮换 DKIM 密钥 可用。
- 上次检查的日期:日期和时间应比步骤 4 中的原始值更新。
使用 Defender 门户使用 *.onmicrosoft.com 域自定义出站消息的 DKIM 签名
如本文前面所述,初始 *.onmicrosoft.com 域会自动配置为对来自 Microsoft 365 组织的所有出站邮件进行签名,并且应 将自定义域配置为出站邮件的 DKIM 签名。
但是,也可以使用本部分中的过程来影响使用 *.onmicrosoft.com 域的 DKIM 签名:
- 生成新密钥。 新密钥会自动添加,并在Microsoft 365 个数据中心使用。
- 让 *.onmicrosoft.com 域的属性正确显示在 PowerShell 上的“Email身份验证设置”页的“DKIM”选项卡上https://security.microsoft.com/authentication?viewid=DKIM的域的详细信息浮出控件中。 此结果允许将来对域的 DKIM 配置执行操作, (例如 手动密钥轮换) 。
若要使用本节中的过程,*.onmicrosoft.com 域必须出现在 Email 身份验证设置页https://security.microsoft.com/authentication?viewid=DKIM的 DKIM 选项卡上。 详细信息浮出控件中 *.onmicrosoft.com 域的属性必须包含以下值:
- 此域的“使用 DKIM 签名对消息进行签名”切换不可用。
- “状态”值为“未为此域保存 DKIM 密钥”。
- 存在创建 DKIM 密钥 。
如果域满足这些要求,请继续操作。
在 Defender 门户中https://security.microsoft.com,转到Email &协作>策略 & 规则>威胁策略>Email身份验证设置页。 或者,若要直接转到“Email身份验证设置”页,请使用 https://security.microsoft.com/authentication。
在“Email身份验证设置”页上,选择“DKIM”选项卡。
在“DKIM”选项卡上,单击名称旁边的“检查”框以外的任意位置,选择要配置的 *.onmicrosoft.com 域。
在打开的域详细信息浮出控件中,选择“ 创建 DKIM 密钥”。
DKIM 密钥创建完成后,将打开 “发布 CNAME”对话框 。 选择“关闭”。
无法为 *.onmicrosoft.com 域创建 CNAME 记录,因此无需复制值。 Microsoft为你处理所需的 DNS 配置。
选择“ 关闭”后,将返回域详细信息浮出控件,其中 “使用 DKIM 签名为此域签名的消息 ”切换为“ 禁用 ”。
将 “使用 DKIM 签名对此域的邮件进行签名 ”切换滑动到 “已启用 ”,然后在打开的确认对话框中选择“ 确定 ”。
完成域详细信息浮出控件后,选择“ 关闭”。
使用 Exchange Online PowerShell 配置出站消息的 DKIM 签名
如果希望使用 PowerShell 使用自定义域启用出站消息的 DKIM 签名,或者要为 *.onmicrosoft.com 域自定义 DKIM 签名,请连接到 Exchange Online PowerShell 以运行以下命令。
提示
在使用自定义域配置 DKIM 签名之前,需要将域添加到 Microsoft 365。 有关说明,请参阅 添加域。 若要确认自定义域是否可用于 DKIM 配置,请运行以下命令: Get-AcceptedDomain
。
如本文前面所述,默认情况下,*.onmicrosoft.com 域已对出站电子邮件进行签名。 通常,除非已在 Defender 门户或 PowerShell 中为 *.onmicrosoft.com 域手动配置 DKIM 签名,否则 Get-DkimSigningConfig 的输出中不会显示 *.onmicrosoft.com。
运行以下命令,验证组织中所有域的可用性和 DKIM 状态:
Get-DkimSigningConfig | Format-List Name,Enabled,Status,Selector1CNAME,Selector2CNAME
对于要为其配置 DKIM 签名的域,步骤 1 中命令的输出确定接下来需要执行的操作:
使用下列值列出域:
- 已启用:False
-
状态:
CnameMissing
转到步骤 3 以复制选择器值。
或
未列出域:
将域>替换为<域值,然后运行以下命令:
New-DkimSigningConfig -DomainName <Domain> -Enabled $false [-BodyCanonicalization <Relaxed | Simple>] [-HeaderCanonicalization <Relaxed | Simple>] [-KeySize <1024 | 2048>]
-
BodyCanonicalization 参数指定对消息正文中更改的敏感度级别:
- 宽松:可以容忍消息正文末尾的空格更改和空行的更改。 此值为默认值。
- 简单:仅允许消息正文末尾空行的更改。
-
HeaderCanonicalization 参数指定消息标头中更改的敏感度级别:
- 宽松:允许对消息标头进行常见修改。 例如,标题字段行重新包装、不必要的空格或空行的更改,以及标题字段大小写的更改。 此值为默认值。
- 简单:不允许对标头字段进行更改。
-
KeySize 参数指定 DKIM 记录中公钥的位大小:
-
- 此值为默认值。
-
-
例如:
New-DkimSigningConfig -DomainName contoso.com -Enabled $false
-
BodyCanonicalization 参数指定对消息正文中更改的敏感度级别:
再次运行步骤 1 中的命令,确认已使用以下属性值列出域:
- 已启用:False
-
状态:
CnameMissing
转到步骤 3 以复制选择器值。
从步骤 1 中命令的输出中复制域的 Selector1CNAME 和 Selector2CNAME 值。
需要在域注册机构为域创建的 CNAME 记录如下所示:
主机名:
selector1._domainkey
指向地址或值的点:<Selector1CNAME value>
主机名:
selector2._domainkey
指向地址或值的点:<Selector2CNAME value>
例如:
主机名:
selector1._domainkey
指向地址或值的点:selector1-contoso-com._domainkey.contoso.onmicrosoft.com
主机名:
selector2._domainkey
指向地址或值的点:selector2-contoso-com._domainkey.contoso.onmicrosoft.com
请按照以下步骤之一操作:
自定义域:在域的域注册机构处,使用上一步中的信息创建两条 CNAME 记录。
我们提供有关在许多域注册机构为不同Microsoft 365 服务创建 CNAME 记录的说明。 可以使用这些说明作为创建 DKIM CNAME 记录的起点。 有关详细信息,请参阅 添加 DNS 记录以连接域。
Microsoft 365 需要几分钟 (或更长的) 来检测你创建的新 CNAME 记录。
*.onmicrosoft.com 域:转到步骤 5。
一段时间后,返回到 Exchange Online PowerShell,将域>替换为<配置的域,并运行以下命令:
Set-DkimSigningConfig -Identity \<Domain\> -Enabled $true [-BodyCanonicalization <Relaxed | Simple>] [-HeaderCanonicalization <Relaxed | Simple>]
-
BodyCanonicalization 参数指定对消息正文中更改的敏感度级别:
- 宽松:可以容忍消息正文末尾的空格更改和空行的更改。 此值为默认值。
- 简单:仅允许消息正文末尾空行的更改。
-
HeaderCanonicalization 参数指定消息标头中更改的敏感度级别:
- 宽松:允许对消息标头进行常见修改。 例如,标题字段行重新包装、不必要的空格或空行的更改,以及标题字段大小写的更改。 此值为默认值。
- 简单:不允许对标头字段进行更改。
例如:
Set-DkimSigningConfig -Identity contoso.com -Enabled $true
或
Set-DkimSigningConfig -Identity contoso.onmicrosoft.com -Enabled $true
对于自定义域,如果 Microsoft 365 能够在域注册机构处检测 CNAME 记录,则命令将运行且不会出错,并且该域现在用于对来自域的出站消息进行 DKIM 签名。
如果未检测到 CNAME 记录,则会收到一个错误,其中包含在 CNAME 记录中使用的值。 检查域注册机构的值是否有拼写错误, (容易使用短划线、句点和下划线!) ,请稍等片刻,然后再次运行命令。
对于以前未列出的 *.onmicrosoft.com 域,命令运行时不会出错。
-
BodyCanonicalization 参数指定对消息正文中更改的敏感度级别:
若要验证域现在是否配置为 DKIM 签名消息,请运行步骤 1 中的 命令。
域应具有以下属性值:
- 已启用:True
-
状态:
Valid
有关详细的语法和参数信息,请参阅以下文章:
轮换 DKIM 密钥
出于定期更改密码的相同原因,应定期更改用于 DKIM 签名的 DKIM 密钥。 替换域的 DKIM 密钥称为 DKIM 密钥轮换。
Exchange Online PowerShell 中以下命令的输出中显示了有关域Microsoft 365 的 DKIM 密钥轮换的相关信息:
Get-DkimSigningConfig -Identity <CustomDomain> | Format-List
- KeyCreationTime:创建 DKIM 公钥-私钥对的 UTC 日期/时间。
- RotateOnDate:上一个或下一个 DKIM 密钥轮换的日期/时间。
-
SelectorBeforeRotateOnDate:请记住,使用 Microsoft 365 中的自定义域进行 DKIM 签名需要域中的两条 CNAME 记录。 此属性显示 DKIM 在 RotateOnDate 日期时间之前使用的 CNAME 记录 (也称为 选择器) 。 该值为
selector1
或selector2
,与 SelectorAfterRotateOnDate 值不同。 -
SelectorAfterRotateOnDate:显示 DKIM 在 RotateOnDate 日期时间之后使用的 CNAME 记录。 该值为
selector1
或selector2
,与 SelectorBeforeRotateOnDate 值不同。
如本部分所述,在域上执行 DKIM 密钥轮换时,更改不会立即发生。 新的私钥需要 4 天 (96 小时) 才能开始签名消息, (RotateOnDate 日期/时间以及相应的 SelectorAfterRotateOnDate 值) 。 在此之前,将使用现有私钥 (相应的 SelectorBeforeRotateOnDate 值) 。
提示
确定自定义域何时启动 DKIM 签名出站邮件的main因素是 DNS 中的 CNAME 记录检测。
若要确认用于验证 DKIM 签名 (推断出用于) 对消息进行签名的私钥的相应公钥,检查选择器 (DKIM-Signature 标头字段中的 s= 值;例如, s=selector1-contoso-com
) 。
提示
对于自定义域,只能在启用了 DKIM 签名的域上轮换 DKIM 密钥, (Status 值为 Enabled) 。
目前,没有针对 *.onmicrosoft.com 域的自动 DKIM 密钥轮换。 可以手动轮换 DKIM 密钥,如本部分所述。 如果 轮换 DKIM 密钥 在 *.onmicrosoft.com 域的属性中不可用,请使用本文前面 使用 Defender 门户使用 *.onmicrosoft.com 域自定义出站消息的 DKIM 签名 部分中的过程。
使用 Defender 门户轮换自定义域的 DKIM 密钥
在 Defender 门户中https://security.microsoft.com,转到Email &协作>策略 & 规则>威胁策略>Email身份验证设置页。 或者,若要直接转到“Email身份验证设置”页,请使用 https://security.microsoft.com/authentication。
在“Email身份验证设置”页上,选择“DKIM”选项卡。
在“DKIM”选项卡上,单击名称旁边的检查框以外的行中的任意位置,选择要配置的域。
在打开的域详细信息浮出控件中,选择“ 轮换 DKIM 密钥”。
详细信息浮出控件中的设置将更改为以下值:
- 状态:正在轮换此域的密钥并签名 DKIM 签名。
- 轮换 DKIM 密钥 灰显。
) 4 天 (96 小时后,新的 DKIM 密钥开始对自定义域的出站消息进行签名。 在此之前,将使用当前 DKIM 密钥。
当 状态 值从“轮换此域的密钥并将 DKIM 签名更改为为此域签名 DKIM 签名”时,可以判断何时使用新的 DKIM 密钥。
若要确认用于验证 DKIM 签名 (推断出用于) 对消息进行签名的私钥的相应公钥,检查选择器 (DKIM-Signature 标头字段中的 s= 值;例如, s=selector1-contoso-com
) 。
使用 Exchange Online PowerShell 轮换域的 DKIM 密钥并更改位深度
如果希望使用 PowerShell 轮换域的 DKIM 密钥,请连接到 Exchange Online PowerShell 以运行以下命令。
运行以下命令,验证组织中所有域的可用性和 DKIM 状态:
Get-DkimSigningConfig | Format-List Name,Enabled,Status,Selector1CNAME,Selector1KeySize,Selector2CNAME,Selector2KeySize,KeyCreationTime,RotateOnDate,SelectorBeforeRotateOnDate,SelectorAfterRotateOnDate
对于要轮换其 DKIM 密钥的域,请使用以下语法:
Rotate-DkimSigningConfig -Identity <CustomDomain> [-KeySize <1024 | 2048>]
如果不想更改新 DKIM 键的位深度,请不要使用 KeySize 参数。
此示例轮换 contoso.com 域的 DKIM 密钥,并将密钥更改为 2048 位密钥。
Rotate-DkimSigningConfig -Identity contoso.com -KeySize 2048
本示例轮换 contoso.com 域的 DKIM 密钥,而不更改密钥位深度。
Rotate-DkimSigningConfig -Identity contoso.com
再次运行步骤 1 中的命令以确认以下属性值:
- KeyCreationTime
- RotateOnDate
- SelectorBeforeRotateOnDate
- SelectorAfterRotateOnDate:
目标电子邮件系统使用 由 SelectorBeforeRotateOnDate 属性标识的 CNAME 记录中的公钥来验证邮件中的 DKIM 签名 (这将推断出用于对邮件进行 DKIM 签名的私钥) 。
在 RotateOnDate 日期/时间之后,DKIM 使用新的私钥对邮件进行签名,目标电子邮件系统使用由 SelectorAfterRotateOnDate 属性标识的 CNAME 记录中的相应公钥来验证邮件中的 DKIM 签名。
若要确认用于验证 DKIM 签名 (推断出用于) 对消息进行签名的私钥的相应公钥,检查选择器 (DKIM-Signature 标头字段中的 s= 值;例如,
s=selector1-contoso-com
) 。
有关详细的语法和参数信息,请参阅以下文章:
使用自定义域禁用出站消息的 DKIM 签名
如本文前面所述,使用自定义域启用出站消息的 DKIM 签名实际上会将 DKIM 签名从使用 *.onmicrosoft.com 域切换到使用自定义域。
使用自定义域禁用 DKIM 签名时,不会完全禁用出站邮件的 DKIM 签名。 DKIM 签名最终切换回使用 *.onmicrosoft 域。
使用 Defender 门户使用自定义域禁用出站消息的 DKIM 签名
在 Defender 门户中https://security.microsoft.com,转到Email &协作>策略 & 规则>威胁策略>Email身份验证设置页。 或者,若要直接转到“Email身份验证设置”页,请使用 https://security.microsoft.com/authentication。
在“Email身份验证设置”页上,选择“DKIM”选项卡。
在“DKIM”选项卡上,单击名称旁边的检查框以外的行中的任意位置,选择要配置的域。
在打开的域详细信息浮出控件中,将 “为此域使用 DKIM 签名的消息” 切换切换为 “已禁用 ”。
使用 Exchange Online PowerShell 使用自定义域禁用出站消息的 DKIM 签名
如果希望使用 PowerShell 使用自定义域禁用出站消息的 DKIM 签名,请连接到 Exchange Online PowerShell 以运行以下命令。
运行以下命令,验证组织中所有域的可用性和 DKIM 状态:
Get-DkimSigningConfig | Format-List Name,Enabled,Status
可禁用 DKIM 签名的任何自定义域都具有以下属性值:
- 已启用:True
-
状态:
Valid
对于要为其禁用 DKIM 签名的域,请使用以下语法:
Set-DkimSigningConfig -Identity <CustomDomain> -Enabled $false
此示例使用自定义域 contoso.com 禁用 DKIM 签名。
Set-DkimSigningConfig -Identity contoso.com -Enabled $false
验证来自 Microsoft 365 的出站邮件的 DKIM 签名
提示
在使用本部分中的方法测试出站邮件的 DKIM 签名之前,请在发生任何 DKIM 配置更改后等待几分钟,以允许更改传播。
使用以下任一方法验证从 Microsoft 365 出站电子邮件的 DKIM 签名:
从目标电子邮件系统中的邮件头发送测试邮件并查看相关标头字段:
从启用了 Microsoft 365 DKIM 的域中的帐户向其他电子邮件系统中的收件人发送邮件, (例如 outlook.com 或 gmail.com) 。
提示
请勿将邮件发送到 AOL 进行 DKIM 测试。 如果 SPF 检查通过,AOL 可能会跳过 DKIM 检查。
在目标邮箱中,查看邮件头。 例如:
- 在 Outlook 中查看 Internet 邮件头。
- 在 中使用消息标头分析器 https://mha.azurewebsites.net。
在邮件头中查找 DKIM-Signature 标头字段。 标头字段如以下示例所示:
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=contoso.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=UErATeHehIIPIXPeUAfZWiKo0w2cSsOhb9XM9ulqTX0=;
- d=:用于对消息进行 DKIM 签名的域。
- s=:选择器 (用于解密和验证消息的 DKIM 签名的域) 的 DNS 记录中的公钥。
在消息标头中找到 “身份验证-结果 ”标头字段。 尽管目标电子邮件系统可能使用略微不同的格式来标记入站邮件,但标头字段应包括 DKIM=pass 或 DKIM=OK。 例如:
Authentication-Results: mx.google.com; dkim=pass header.i=@contoso.com header.s=selector1 header.b=NaHRSJOb; arc=pass (i=1 spf=pass spfdomain=contoso.com dkim=pass dkdomain=contoso.com dmarc=pass fromdomain=contoso.com); spf=pass (google.com: domain of michelle@contoso.com designates 0000:000:0000:0000::000 as permitted sender) smtp.mailfrom=michelle@contoso.com
提示
在以下任一条件下省略 DKIM 签名:
- 发件人和收件人电子邮件地址位于同一域中。
- 发件人和收件人电子邮件地址位于同一组织控制的不同域中。
在这两种情况下,消息头中不存在 DKIM-Signature 标头字段,并且 Authentication-Results 标头字段如以下示例所示:
authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=contoso.com;
在 Microsoft 365 帮助中使用测试:此功能需要全局管理员*帐户,在由世纪互联运营的 Microsoft 365 政府社区云 (GCC) 、GCC High、DoD 或 Office 365 中不可用。
重要
* Microsoft建议使用权限最少的角色。 使用权限较低的帐户有助于提高组织的安全性。 全局管理员是一个权限很高的角色,应仅限于在无法使用现有角色的紧急情况下使用。
在其他电子邮件服务的自定义域中对邮件进行 DKIM 签名
某些电子邮件服务提供商或软件即服务提供程序允许你为源自服务的邮件启用 DKIM 签名。 但是,方法完全取决于电子邮件服务。
提示
如本文前面所述,我们建议对不直接控制的电子邮件系统或服务使用子域。
例如,Microsoft 365 中的电子邮件域 contoso.com,并且你将 Adatum 批量邮件服务用于营销电子邮件。 如果 Adatum 支持对域中发件人服务中的发件人的邮件进行 DKIM 签名,则消息可能包含以下元素:
Return-Path: <communication@adatum.com>
From: <sender@marketing.contoso.com>
DKIM-Signature: s=s1024; d=marketing.contoso.com
Subject: This a message from the Adatum infrastructure, but with a DKIM signature authorized by marketing.contoso.com
在此示例中,需要执行以下步骤:
Adatum 为 Contoso 提供了一个公钥,用于对其服务中的出站 Contoso 邮件进行 DKIM 签名。
Contoso 在域注册机构的 DNS 中发布公共 DKIM 密钥,marketing.contoso.com 子域 (TXT 记录或 CNAME 记录) 。
当 Adatum 从 marketing.contoso.com 域中的发件人发送邮件时,将使用与第一步中向 Contoso 提供的公钥相对应的私钥对邮件进行 DKIM 签名。
如果目标电子邮件系统检查入站邮件的 DKIM,则邮件会传递 DKIM,因为它们已进行 DKIM 签名。
如果目标电子邮件系统检查入站邮件的 DMARC,则 DKIM 签名中的域 (DKIM 签名标头字段中的 d= 值) 与电子邮件客户端中显示的“发件人”地址中的域匹配,因此邮件也可以传递 DMARC:
发件人: sender@marketing.contoso.com
d=: marketing.contoso.com
后续步骤
如 SPF、DKIM 和 DMARC 如何协同对电子邮件发件人进行身份验证中所述,单靠 DKIM 不足以防止欺骗Microsoft 365 域。 还需要配置 SPF 和 DMARC 以获得最佳保护。 有关说明,请参阅以下内容:
对于 进入 Microsoft 365 的邮件,如果使用在传递到组织之前修改传输中的邮件的服务,则可能还需要配置受信任的 ARC 封口器。 有关详细信息,请参阅 配置受信任的 ARC 密封器。
提示
已知 Exchange 2016 和 Exchange 2019 会修改流经它们的消息,这可能会影响 DKIM。