我有一个私有后缀服务器,它使用 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
在提交/inet 下的 master.cf 中:
-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
配置)以指示使用了有效的客户端证书?
因为无论如何您只接受经过身份验证的邮件,所以您不需要传递有关opendkim使用哪种方法的信息- 只有具有强制身份验证(签名)的端口和不提供身份验证(验证)的端口之间的(布尔)区别。
您可以设置让
-o milter_macro_daemon_name=whatever
opendkim知道应该签署哪些邮件。否则,该宏将默认为,但通过使用(任意,opendkim 不关心)不同的值进行仅验证和强制认证端口,您可以区分它们。master.cf
$myhostname
Docs 推荐使用
ORIGINATING
andVERIFYING
让它超级明显。MacroList
然后在您的opendkim.conf
罐子中检查是否daemon_name
等于您设置的任何内容。