我有一个私有后缀服务器,它使用 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
配置)以指示使用了有效的客户端证书?