为什么 exim 没有将 DKIM 标头添加到电子邮件中?

为什么 exim 没有将 DKIM 标头添加到电子邮件中?

我的电子邮件以前在标题中使用 DKIM 签名。现在,如果你检查电子邮件来源,它没有签名。

哪里出了问题?如何调试?可以查看哪些日志?

cat /etc/exim4/conf.d/main/00_local_macros 

返回:

DKIM_CANON = relaxed
DKIM_SELECTOR = mail
DKIM_DOMAIN = ${sg{${lc:${domain:$h_from:}}}{^www\.}{}}
DKIM_FILE = /etc/exim4/keys/${dkim_domain}/mail.private
DKIM_PRIVATE_KEY = ${if exists{DKIM_FILE}{DKIM_FILE}{0}}

按键位置:

ls -la /etc/exim4/keys/example.co.za/

返回:

-rwxr-x--- 1 Debian-exim Debian-exim  887 Mar  7 17:26 mail.private
-rwxr-x--- 1 Debian-exim Debian-exim  305 Mar  7 17:26 mail.txt

答案1

检查您的主日志以验证哪个传输方式正在传递您的邮件(T= 行)。对电子邮件进行签名的唯一标准传输方式是remote_smtp。如果邮件由其他传输方式传递,则不会对其进行签名。

编辑:我相信这也许你的问题可能${dkim_domain}不包含以下值DKIM_DOMAIN

DKIM_DOMAIN = ${sg{${lc:${domain:$h_from:}}}{^www\.}{}}
DKIM_FILE = /etc/exim4/keys/${dkim_domain}/mail.private

尝试:

DKIM_DOMAIN = ${sg{${lc:${domain:$h_from:}}}{^www\.}{}}
DKIM_FILE = /etc/exim4/keys/{DKIM_DOMAIN}/mail.private

虽然我建议不要从www域发送,但您可以按如下方式定义 DKIM_DOMAIN。您可以使用域重写来删除www域的部分,尽管我会尽量避免首先将其放在那里。

DKIM_DOMAIN = ${lc:${domain:$h_from:}}

我更喜欢使用拆分配置,尽管如果您只有简单的修改,单个文件配置也可以工作。我所做的任何更改都是新文件,具有新名称。我有几个修改版本的 Exim 提供的配置文件,这些文件已根据我的需要进行了修改。当 Exim 升级包括配置更改时,此方法会保留我的更改。无论哪种情况,请考虑使用修订控制系统来跟踪您的更改。

运行 exim 的用户 ID 需要能够读取密钥文件以及指向这些文件的所有目录。但是,它不应能够写入或替换密钥。如果您在专用目录中有密钥,您可以通过将模式更改为 、将750所有者更改为root以及将组更改为Debian-exim或 Exim 以任何组运行来保护它。以同样的方式保护密钥,但将模式设置为440640

相关内容