为路由到外部因特网域的消息配置 DKIM 签名

Domino 可以使用域密钥标识邮件 (DKIM) 对内部用户发送到外部因特网域的消息进行签名。

当外部 SMTP MTA 收到 DKIM 签名的消息时,它使用 DKIM 签名来验证自 DKIM 签名以后消息的特定内容和头是否未修改。DKIM 签名采用 Domino 路由器在 SMTP 中继段上消息前添加 DKIM 签名头的形式。DKIM 签名头包含外部 MTA 可用于使用签名数据和通过 DNS 获取的公用密钥来验证消息内容的信息。有关 DKIM 签名的详细信息,请参阅 RFC6376。

为了使用 DKIM 对消息进行签名,Domino 将使用您使用 keymgmt 命令创建的密钥对。此命令将在包含因特网域和选择器项的凭证库中创建文档。这些项允许 Domino 路由器找到正确的专用密钥,以用于生成 DKIM 签名。

要使用 DKIM 对路由到因特网的消息进行签名,请在 Domino 服务器上配置 DKIM,Domino 服务器位于使用 SMTP 将邮件传输至因特网的 Domino 环境边缘 。

DKIM 签名的要求是:
  • 运行 Linux 64 或 Windows 64 的 Domino V12.0.1 SMTP 服务器。
  • 一个凭证库,用于将 DKIM 密钥存储在使用 DKIM 签名的每个 Domino SMTP 上。有关如何创建凭证库(如果还没有使用凭证库)的信息,请参阅使用凭证库来存储凭证
  • 要针对 DKIM 启用的每个内部因特网域的 DNS TXT 记录。使用 keymgmt 命令以使用凭证库中的密钥创建此 DNS TXT 记录,如此程序中所述。DNS 提供程序可以提供将此记录添加到 DNS 域设置的指示信息。
配置 DKIM 签名的步骤包括:
  1. 在凭证库中创建 DKIM 签名密钥。
  2. 创建包含该密钥的 DNS TXT 记录,并将其添加到 DNS 域设置中。
  3. 指定要用于服务器上 DKIM 签名(通过 notes.ini)的密钥。
  4. 在服务器上(通过 notes.ini)启用 DKIM 签名。

创建 DKIM 签名密钥

在凭证库中创建一个或多个密钥对,以用于 DKIM 签名。要在凭证库的文档中创建 DKIM 签名密钥对,请从具有凭证库的 Domino 服务器的控制台运行以下命令:
keymgmt create DKIM <domain> <selector> RSA [<keySize>]
其中:
  • <domain> 是 Domino 因特网域的名称,例如 renovations.comsales.renovations.com
  • <selector> 是您为 DKIM 选择器选择的名称。选择器在 DKIM 签名头中指定,并指示 DKIM 密钥对的公用密钥部分在 DNS 中的位置。
  • <keySize> 是 DKIM 密钥的指定大小。大小可以是 1024、2048 或 4096。
例如:
keymgmt create DKIM renovations.com 12345 RSA 2048
类似于以下消息的控制台消息指示命令成功:
 > keymgmt create DKIM renovations.com 12345 RSA 2048 [4F24:0007-2F28] Created DKIM key 12345._domainkey.renovations.com
注: 在服务器 notes.ini 设置中指定域和选择器可启用 DKIM 密钥。notes.ini 设置允许的最大字符数为 255 个字符,这会使域和选择器大小具有实际限制。

在 .txt 文件中创建 DNS TXT 记录

在凭证库中创建 DKIM 签名密钥后,运行以下命令在包含 DNS TXT 记录的 Domino 数据目录中创建 .txt 文件,该文件包含密钥:
keymgmt export DKIM DNS <domain> <selector> <dkimdnsfile>
其中:
  • <domain> 是您为密钥指定的 Domino 因特网域的名称。
  • <selector> 是您为密钥指定的 DKIM 选择器。
  • <dkimdnsfile> 是在包含 DNS TXT 记录的 Domino 数据目录中创建的 .txt 文件的名称。
例如:
keymgmt export DKIM DNS renovations.com 12345 dkimdns.txt

此命令将创建文件 dkimdns.txt 并添加 12345._domainkey.renovations.com 的 DNS TXT 记录的内容。使用此文件中的信息将 TXT 记录添加到 DNS 域设置。

指定用于 DKIM 签名的密钥

向 DNS 域设置添加用于 DKIM 签名的密钥的 DNS TXT 记录后,在 Domino SMTP 服务器上使用 notes.ini 设置 DKIM_KEY 将域映射到用于 DKIM 签名的密钥。下表描述了此设置的各种选项。如果路由器正在运行,请重新启动路由器以使更改生效。
示例设置 描述 示例
DKIM_KEY_<domain>=<selector> 当用户从指定域或任何其子域发送消息时,服务器会使用与指定选择器相对应的密钥对消息进行签名。 DKIM_KEY_renovations.com=09262021
DKIM_KEY_<subdomain>=<selector> 当用户从指定子域发送消息时,服务器会使用与指定选择器相对应的密钥对消息进行签名。 DKIM_KEY_sales.renovations.com=sales4321
DKIM_KEY_<domain>=<selector>,<selector> 当用户从指定域发送消息时, 使用两个选择器指定的两个密钥对消息进行签名。
此场景对于以下情况很有用:
  • 新密钥传播到 DNS 时,在密钥翻转转换期间允许同时通过旧密钥和新密钥进行签名。
  • 使用多个签名算法。
DKIM_KEY_renovations.com=09262021,10042021
DKIM_KEY_<aliasdomain>=<domain>;<selector> 当用户从别名域(非主域)发送消息时,使用与主域的选择器相对应的密钥对消息进行签名。 DKIM_KEY_aliasrenovations.com=renovations.com;09262021

启用 DKIM 签名

在配置 DKIM_KEY 设置以将域映射到密钥之后,请指定以下附加设置以启用 DKIM 签名。您可以在路由器正在运行时启用或禁用 DKIM 签名,不需要重新启动路由器。
RouterDKIMSigning=<value>
其中 <value> 为以下值之一:
  • 1 如果为发件人域指定了签名密钥,则此选项将作出最大努力对消息进行签名。如果发生签名错误,那么将记录该错误,但消息将在未签名的情况下发送。
  • 2 此选项强制执行 DKIM 签名。如果为发件人域指定了签名密钥,并且发生签名错误,那么将记录该错误,并且不会发送消息。发送用户会收到未送达报告。