我在Debian sid上使用exim 4.82。 我已经跟随了几个关于如何configurationexim来签名外发电子邮件的教程,但是看起来好像有些东西不能像应该那样运行。
我的诊断是$sender_address_domain始终设置为服务器的主机名( /etc/hostname ),无论From:字段在电子邮件中。
我在/etc/exim4/conf.d/transport/00_exim4-config_header定义了以下macros:
DKIM_CANON = relaxed DKIM_DOMAIN = ${sender_address_domain} DKIM_SELECTOR = dkim DKIM_PRIVATE_KEY = /etc/exim4/dkim.private.key
当前的设置签署了外发电子邮件,但DKIM签名中的域始终设置为euvps.rolisoft.net ,而不pipeFrom:字段。 我最好的猜测是$sender_address_domain被设置为euvps.rolisoft.net ,当它应该被设置为From:字段中的电子邮件地址的域。
因此,validation失败, bad version信息不正确:
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=euvps.rolisoft.net; s=dkim; // <- d= should be set to whatever is in From h=Date:Message-Id:From:Subject:To; bh=...; b=...; Authentication-Results: mx.google.com; spf=pass (google.com: domain of [email protected] designates 188.226.159.108 as permitted sender) [email protected]; dkim=neutral (bad version) [email protected]; dmarc=fail (p=NONE dis=NONE) header.from=seriesinfos.com
手动将DKIM_DOMAIN设置为域名我将发送消息来解决此问题,并且DKIM签名变为有效。 不过,我使用的是多个域名,所以如果DKIM_DOMAIN会自动设置为我发送邮件的任何电子邮件,那么最好。
我没有设置自定义路由器和运输,因为一些教程build议。 (我已经做了一些,但结果相同,所以我删除了它们。)
将DKIM_DOMAIN设置为${lookup{$sender_address}lsearch*@{/etc/exim4/dkim_senders}} (使用dkim_senders正确设置)将不会签署消息,但是dkim_senders没有在其中包含euvps.rolisoft.net ,所以我猜这里$sender_address也设置为euvps.rolisoft.net ,这就是为什么缺less签名。
我不确定如何debugging$sender_address_domain设置为。
虽然我仍然不确定为什么不是$sender_address正确填充,我find了一个解决scheme来解决我的问题,使用另一个variables:
DKIM_DOMAIN = ${lc:${domain:$h_from:}}
这将在DKIM签名上正确设置域名。
要停止签名域名,我没有密钥,我已经设置了两个其他的macros:
DKIM_FILE = /etc/exim4/keys/${lc:${domain:$h_from:}}.pem DKIM_PRIVATE_KEY = ${if exists{DKIM_FILE}{DKIM_FILE}{0}}
这些基本上只是在/etc/exim4/keys/*domain*.pem寻找一个私钥,如果它不存在就不会签名。