Postfix 客户端证书信息未传递给 opendkim milter

Postfix 客户端证书信息未传递给 opendkim milter

我有一个私人 postfix 服务器,它使用 dovecot sasl 来选择性地验证提交客户端,并且我正在尝试将其设置为接受客户端证书,以允许它充当某些特定原始服务器的中继主机。

我已经基本让它工作了,但是遇到了一个小问题,opendkim milter 无法将证书认证的中继连接识别为内部或经过认证的,因此它不会添加 DKIM 签名。

在main.cf中:

milter_default_action = accept
smtpd_milters = inet:opendkim:8891
non_smtpd_milters = inet:opendkim:8891

smtpd_tls_CAfile = /path/to/private-ca-cert.pem
tls_append_default_CA = no
smtpd_recipient_restrictions = permit_mynetworks,permit_sasl_authenticated,permit_tls_all_clientcerts,reject_unauth_destination
smtpd_relay_restrictions = permit_mynetworks,permit_sasl_authenticated,permit_tls_all_clientcerts,reject_unauth_destination

在 master.cf 中的 submission/inet 下:

-o smtpd_client_restrictions=permit_sasl_authenticated,permit_tls_all_clientcerts,reject
-o smtpd_tls_ask_ccert=yes

以上所有功能均正常运行,并且允许提供由我的私人 CA 签名的有效证书的连接进行中继访问。

然而,这些中继的电子邮件并未经过 opendkim 签名 - 相反,opendkim milter 记录了以下内容:

external host [host.that.connected.with.cert] attempted to send as [mydomain.com]

我知道我可以使用 opendkimExternalIgnoreList配置,但由于这些主机位于动态 IP 上,这不是一个理想的解决方案,而且我正在寻找一种可以接受任何主机的解决方案,就像它接受通过 SASL 验证的提交连接从任何邮件客户端发送的邮件一样。

我相信我已经将其追溯到{auth_authen}milter 用来确定邮件是否来自经过身份验证的连接的宏……postfix 仅将该宏设置为 sasl 用户名。

有什么方法可以扩展功能{auth_authen}或添加新宏(使用 opendkim 的MacroList配置)以表明使用了有效的客户端证书?

答案1

因为无论如何你只接受经过身份验证的邮件,所以你不需要传递有关使用哪种方法的信息opendkim- 仅(布尔)区分具有强制身份验证(签名)的端口和不提供身份验证(验证)的端口。

您可以-o milter_macro_daemon_name=whatever设置master.cfopendkim知道哪些邮件应该签名。否则该宏将默认为$myhostname,但通过使用(任意,opendkim 不关心)不同的您可以区分仅验证端口和强制身份验证端口的值。

文档建议使用ORIGINATINGVERIFYING使其非常明显。然后MacroListopendkim.conf可以检查是否daemon_name等于您设置的内容。

相关内容