DKIM - 单个主机 - 多个 IP

DKIM - 单个主机 - 多个 IP

尝试找出在具有多个弹性 IPS 的单个 EC2 上实施 DKIM 的最佳实践。

# /etc/opendkim.conf
...
Mode                    sv
Canonicalization        relaxed/simple
ExternalIgnoreList      refile:/etc/opendkim/TrustedHosts
InternalHosts           refile:/etc/opendkim/TrustedHosts
KeyTable                refile:/etc/opendkim/KeyTable
SigningTable            refile:/etc/opendkim/SigningTable
SignatureAlgorithm      rsa-sha256
...

# /etc/opendkim/KeyTable
default._domainkey.example.com example.com:hp-hv-1:/etc/opendkim/keys/default.private
default._domainkey.example.com example.com:hp-hv-2:/etc/opendkim/keys/default.private

# /etc/opendkim/SigningTable
*@example.com default._domainkey.example.com

然后我有两条 DNS 记录:

hp-hv-1._domainkey.example.com TXT "v=DKIM1;k=rsa;p=default.txt_key_goes_here"

hp-hv-2._domainkey.example.com TXT "v=DKIM1;k=rsa;p=default.txt_key_goes_here"

对于同一 EC2 实例上的两个后缀实例,每个实例都具有以下 $myhostname:

# postfixmulti instance #1
myhostname = hp-hv-1

# postfixmulti instance #2
myhostname = hp-hv-2

两个后缀实例都位于同一个 EC2 实例上,因此它们都共享相同的 default.private/default.txt 私钥/公钥对,因此无需向 KeyTable 和 SigningTable 添加更多行。据我所知,如果我想实现多个域(我不需要),我只需要向 KeyTable 和 SigningTable 添加额外的行。

但是当我测试我的 DKIM 设置时,我不断收到“通过:中立”的回复,说电子邮件没有签名,但是它们确实已经签名,我可以在日志文件中看到它:

# snippet from /var/log/maillog
Sep 25 15:15:31 service-a-4 opendkim[27420]: 5B4A3625F0: DKIM-Signature field added (s=hp-hv-1, d=example.com)

我错过了什么?

版本:

CentOS 6.5
Postfix v2.6.6
Opendkim v2.9

答案1

好吧,我显然很困惑,我一直认为 DKIM 签名字段中的“s”应该从 postfix 配置中识别 $myhostname,但实际上并非如此。在阅读更多关于DKIM 密钥轮换,我终于明白了,“s”只是从 KeyTable、SigningTable 和 DNS 中使用的选择器。

检查一下:

# /etc/opendkim/KeyTable
#  Format: selector(1) domain:selector(2):/path/to/key
#    selector(1) is used in the /etc/opendkim/SigningTable
#    selector(2) is built into the DKIM signature for every email sent, which is used to lookup the DNS TXT entry: mail-1_r-1._domainkey.example.com
mail-1_r-1._domainkey.example.com example.com:mail-1_r-1:/etc/opendkim/keys/mail-1_r-1.private

现在,如果我想旋转密钥,我会这样做:

# /etc/opendkim/KeyTable
#  Generate new private/public key pair, and rename accordingly
mail-1_r-1._domainkey.example.com example.com:mail-1_r-1:/etc/opendkim/keys/mail-1_r-1.private
mail-1_r-2._domainkey.example.com example.com:mail-1_r-2:/etc/opendkim/keys/mail-1_r-2.private

然后在签名表中:

# /etc/opendkim/SigningTable
*@shouttag.com mail_r-1._domainkey.example.com
*@shouttag.com mail_r-2._domainkey.example.com

然后对于 DNS 条目,您将获得以下内容

mail_r-1.domainkey.example.com "v=DKIM1;k=rsa;p=mail_r-1.txt_key_goes_here"
mail_r-2.domainkey.example.com "v=DKIM1;k=rsa;p=mail_r-2.txt_key_goes_here"

这些 DNS 条目用于帮助验证电子邮件是否确实从您的域发送(因此称为域密钥识别邮件)。然后大约 7 天后,您可以删除 mail_r-1.domainkey.example.com。

相关内容