我在我的邮件服务器(postfix 和 ubuntu)上设置了 DKIM,因此它对传出的电子邮件进行了签名。我使用了这些说明: https ://help.ubuntu.com/community/Postfix/DKIM
但是,我需要它来签署来自任何域(在发件人地址中)的电子邮件,而不仅仅是我自己的。我正在构建一个电子邮件通讯服务,客户将通过服务器发送他们自己的电子邮件。
首先,我在 /etc/dkim-filter.conf 中设置“域 *”。这让它在所有外发电子邮件中包含 DKIM 标头,无论是什么域。
但是,gmail 的验证检查失败,因为它检查的是发件人地址中的域,而不是我的域(和 dns 记录)。有谁知道如何做到这一点?
好的,我设法自己解决了这个问题,但我想在这里发布这些步骤以供后代使用,因为这方面的文档为零(我可以找到),而且实际上是猜测和检查。
如上所述设置“域 *”后,它会像这样签名:
注意“d=clientdomain.com”。它是根据电子邮件中的发件人地址生成的,其中发件人地址类似于“[email protected]”。显然,如果它检查了客户端的域而不是我的域,则没有 DNS TXT 记录,并且验证将失败。
所以无论如何我在这个文档中发现你可以设置一个 KeyList 参数。 http://manpages.ubuntu.com/manpages/hardy/man5/dkim-filter.conf.5.html
它并没有真正描述我想要做什么,但我想我会玩它。我注释掉了 KeyFile 并将 KeyList 设置为“/etc/mail/dkim_domains.key”,这是我编造的任意文件名。然后我创建了该文件并将其放入“*:feedmailpro.com:/etc/mail/dkim.key”中。这告诉它任何客户端域,使用我的域 (feedmailpro.com) 对其进行签名,并使用 dkim.key 文件。
重新启动 DKIM 和 postfix
现在这是我发送测试电子邮件时它生成的密钥。
改进,您会看到 d= 现在设置为我的域(即使电子邮件的发件人地址不是我的域)。但是 s= 更改为“dkim.key”,而不是我在 dkim-filter.conf 中选择的选择器。在最初的设置说明中,我将选择器设置为“邮件”。这很奇怪,但我注意到它把它改成了我的密钥的文件名,dkim.key。
所以我把“/etc/mail/dkim.key”重命名为“/etc/mail/mail”。还更新了“/etc/mail/dkim_domains.key”中对它的引用。
再次像上面一样重新启动 dkim-filter 和 postfix,现在它开始工作了。这是使用正确选择器正确签名的最终标题(显然基于密钥的文件名)。
现在 s=mail 是对的,而 d=feedmailpro.com 是对的。有用!
总的来说,这比我预期的要困难得多,而且关于如何做到这一点的文档似乎为零(为所有传出域签名),但我想它是开源软件,所以我不能抱怨。
最后一点,要检查 TXT DNS 记录是否设置正确,您可以使用您的域执行命令
可能需要安装 dig (sudo apt-get install dig)。如果您使用 Slicehost 管理器添加 DNS 条目,您将像这样输入 TXT 记录。
我真的不明白为什么将名称设置为“mail._domainkey”而没有句号结尾或没有我的域,例如“mail._domainkey.feedmailpro.com”。但无论如何,它似乎有效,所以我很高兴。
如果你想复制这个,这里是我开始的说明: https ://help.ubuntu.com/community/Postfix/DKIM
受 Brian Armstrong 对 dkim-filter 的回答的启发,这是我为OpenDKIM 所做的。
/etc/opendkim.conf
注意 SigningTable 有 refile :在它的定义中,这指定文件包含正则表达式;在我们的例子中是 * 通配符。
/etc/mail/dkim_key_table
这里keyname用于匹配此文件和 dkim_signing_table 文件之间的密钥。在我的真实文件中,我将其命名为与我的选择器相同。
example.com和selector应该分别替换您希望在签名的d=和s=中使用的域和选择器。
/etc/mail/dkim_signing_table
此文件将From:标头中的地址简单映射到 dkim_key_table 中的键。在这种情况下,我们希望通过此服务器发送的所有电子邮件都使用相同的密钥进行签名,因此使用 * 通配符。
旧线程,但也许其他发现此问题的人知道 2.x 版本的 opendkim 使用 KeyTable 而不是 KeyList。
您可以使用 opendkim-convert-keylist 工具 ( http://manpages.ubuntu.com/manpages/lucid/man8/opendkim-convert-keylist.8.html )转换您的 KeyList 文件
您可以在 opendkim 手册页上阅读有关 KeyTable 实现的更多信息:( http://www.opendkim.org/opendkim.conf.5.html )
DKIM 过滤器的文档通常以 unix man 格式安装。只有谷歌知道 :-) 我也遇到了问题。
我在Debian上试过。如果它实际上不在您的发行版中,您可以下载源 tarball 和易于阅读的文档。
等等
--
这样您就可以在不同域的两个 DNS 记录中使用完全相同的内容。