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

我的电子邮件曾经在标题中用DKIM签名。 现在,如果您检查电子邮件来源,它不会签名。

哪里不对? 我该如何debugging,我可以看到什么日志?

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 

检查您的主日志以validation哪个传输正在传递您的邮件(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 

虽然我会build议不从www域发送,所以你可以定义DKIM_DOMAIN如下。 您可以使用域名重写来删除域名的www部分,尽pipe我会尽量避免在那里得到它。

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

我更喜欢使用拆分configuration,尽pipe只有简单的修改,单个文件configuration才能工作。 我所做的任何更改都是新文件,新名称。 我有几个修改版本的Exim提供的configuration文件,修改为我的需要。 当Exim升级包含configuration更改时,此方法保留我的更改。 在任何一种情况下,都可以考虑使用版本控制系统来跟踪您的更改。

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