Postfix

後綴客戶端證書資訊未傳遞給 opendkim milter

  • April 17, 2021

我有一個私有後綴伺服器,它使用 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=whateveropendkim知道應該簽署哪些郵件*。*否則,該宏將預設為,但通過使用(任意,opendkim 不關心)不同的值進行僅驗證和強制身份驗證埠,您可以區分它們。master.cf``$myhostname

Docs 推薦使用ORIGINATINGandVERIFYING讓它超級明顯。MacroList然後在您的opendkim.conf罐子中檢查是否daemon_name等於您設置的任何內容。

引用自:https://serverfault.com/questions/1060672