Информация о сертификате клиента 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]

Я знаю, что могу использовать конфигурацию opendkim ExternalIgnoreList , но поскольку эти хосты находятся на динамических IP-адресах, это не идеальное решение, и я ищу решение, которое принимает любой хост так же, как он принимает почту, отправленную через SASL-аутентифицированное соединение для отправки от любого почтового клиента.

Кажется, я проследил это до макроса {auth_authen} , который milter использует для определения того, пришла ли почта из аутентифицированного соединения ... postfix только устанавливает этот макрос для имени пользователя sasl.

Есть ли способ расширить функциональность {auth_authen} или добавить новый макрос (используя конфигурацию opendkim MacroList ), чтобы указать, что использовался действующий сертификат клиента ?

2
задан 17 April 2021 в 07:29
1 ответ

Поскольку вы в любом случае принимаете только аутентифицированную почту, вам не нужно передавать информацию о том, какой метод использовался для opendkim - только (логическое) различие между портами с обязательной аутентификацией (подписью) и портами, которые не предлагать аутентификацию (проверить).

Вы можете установить -o milter_macro_daemon_name = something в master.cf , чтобы opendkim знал, какое письмо должно быть подписано. В противном случае этот макрос по умолчанию будет $ myhostname , но, используя (произвольно, opendkim все равно) разные значения для портов только для проверки и для портов с обязательной аутентификацией, вы можете различить их.

Документы рекомендуют использовать ORIGINATING и VERIFYING , чтобы сделать это совершенно очевидным. MacroList в вашем opendkim.conf может затем проверить, совпадает ли daemon_name с тем, что вы установили.

2
ответ дан 24 April 2021 в 00:12

Теги

Похожие вопросы