![Fedora Server 上的 OpenDKIM,opendkim-testkey 加载密钥,显示正在检查,然后显示“查询失败”我该如何查找(并修复)错误?](https://linux22.com/image/784372/Fedora%20Server%20%E4%B8%8A%E7%9A%84%20OpenDKIM%EF%BC%8Copendkim-testkey%20%E5%8A%A0%E8%BD%BD%E5%AF%86%E9%92%A5%EF%BC%8C%E6%98%BE%E7%A4%BA%E6%AD%A3%E5%9C%A8%E6%A3%80%E6%9F%A5%EF%BC%8C%E7%84%B6%E5%90%8E%E6%98%BE%E7%A4%BA%E2%80%9C%E6%9F%A5%E8%AF%A2%E5%A4%B1%E8%B4%A5%E2%80%9D%E6%88%91%E8%AF%A5%E5%A6%82%E4%BD%95%E6%9F%A5%E6%89%BE%EF%BC%88%E5%B9%B6%E4%BF%AE%E5%A4%8D%EF%BC%89%E9%94%99%E8%AF%AF%EF%BC%9F.png)
37日Fedora Server
(更新至 2023 年 2 月 1 日左右),OpenDKIM
进行了新安装(版本为 v2.11.0)。配置包括创建签名表和密钥表,以及创建密钥并将其发布在 中DNS
。到目前为止一切顺利……
我已到达测试阶段opendkim-testkey
但失败了。
我第一次运行它时,它抱怨“权限不安全”,尽管这并没有阻止它,但是,我关注了这一点一会儿;我所做的任何事情 - 在六个或更多的排列中改变所有权和权限 - 都没有让这个错误消失,所以现在就这样吧!
我意识到签名表中一定有错误,所以我做了一个细微的更改。...它显然要求使用“_domainkey”,尽管官方文档没有说这是必需的,而且这样做似乎完全没有必要,但显然这是必需的。我之所以这么想,是因为当我在签名表的条目中添加这个看似愚蠢的“_domainkey”文本时,它取得了进一步的进展,至少现在说它正在加载正确的keyfile
。然而,我仍然收到“查询失败”错误。
明确地说,会议如下:
opendkim-testkey -d some-fqdn.com -s default -vvvvvvv
opendkim-testkey: using default configfile /etc/opendkim.conf
opendkim-testkey: /etc/opendkim/keys/some-fqdn.com/<prefix>.private: WARNING: unsafe permissions
opendkim-testkey: key loaded from /etc/opendkim/keys/some-fqdn.com/<prefix>.private
opendkim-testkey: checking key 'default._domainkey.some-fqdn.com'
opendkim-testkey: 'default._domainkey.some-fqdn.com' query failed
好吧,谢谢你的线索opendkim-testkey
!
我没有得到任何有用的信息systemctl status opendkim.service
- 它说它的状态是“活动(正在运行)”,没有错误。因此,我检查了日志(在本例中/var/log/messages
),发现有一些条目。因此,为了确保它们是最新的,我opendkim
使用systemctl reload
while grep
pingtail -f
命令循环并得到:
Mar 5 11:17:21 fs1 systemd[1]: Started opendkim.service - DomainKeys Identified Mail (DKIM) Milter.
Mar 5 11:17:21 fs1 audit[1]: SERVICE_START pid=1 uid=0 auid=4294967295 ses=4294967295 subj=kernel msg='unit=opendkim comm="systemd" exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=? res=success'
Mar 5 11:17:22 fs1 abrt-notification[3173323]: Process 348313 (opendkim) crashed in _nl_load_domain.cold()
哇哦!崩溃了?那为什么它说它正在运行?!奇怪!
一些调查表明,_nl_load_domain.cold()实际上是一个 C++ 函数。
函数定义开始:
internal_function
_nl_find_domain (const char *dirname, char *locale,
const char *domainname, struct binding *domainbinding)
{
struct loaded_l10nfile *retval;
const char *language;
const char *modifier;
const char *territory;
const char *codeset;
const char *normalized_codeset;
const char *alias_value;
int mask;
这足以让这个家伙说:“嗯......现在怎么办?!”
(请注意,所涉及的域名运行正常 - 除了opendkim
! - 具有相当强大的DNS zone
实时功能,并且,所涉及的系统具有对DNS
查询的完全访问权限。)
笔记
OpenDKIM
验证入站电子邮件DKIM
密钥没问题!我只需要让签名部分也能正常工作!