Как я могу использовать подстановочные знаки для sendmail TLS_Rcpt?

sendmail позволяет накладывать ограничения на разговоры TLS. Я хочу проверить, что сообщения, отправленные на example.com, отправляются на сервер с сертификатом * .messagelabs.com. Я хочу защитить себя от спуфинга DNS и MitM. Если бы у messagelabs был только один сервер, это было бы легко:

TLS_Rcpt:example.com VERIFY:256+CN:mx.messagelabs.com

Однако в messagelabs есть много серверов и кластеров разных серверов с уникальными IP-адресами и сертификатами для одного и того же имени. Все в порядке, я просто хочу проверить, что сервер, на который я отправляю почту, сертифицирован как принадлежащий messagelabs.

Я пробовал

TLS_Rcpt:example.com VERIFY:256+CN:messagelabs.com
TLS_Rcpt:example.com VERIFY:256+CN:*.messagelabs.com
TLS_Rcpt:example.com VERIFY:256+CN:.*.messagelabs.com

, но получаю ошибки вроде

CN mail31.messagelabs.com does not match .*.messagelabs.com

Как я могу это сделать? Для нас это повторяющийся запрос (в основном для таких конфигураций, как TLS_Rcpt: example.com VERIFY: 256 + CN: *. Example.com), поэтому я был бы готов изменить sendmail.cf, но могу Не имеет смысла

STLS_req
R $| $+         $@ OK
R<CN> $* $| <$+>                $: <CN:$&{TLS_Name}> $1 $| <$2>
R<CN:$&{cn_subject}> $* $| <$+>         $@ $>"TLS_req" $1 $| <$2>
R<CN:$+> $* $| <$-:$+>  $#error $@ $4 $: $3 " CN " $&{cn_subject} " does not match " $1
R<CS:$&{cert_subject}> $* $| <$+>       $@ $>"TLS_req" $1 $| <$2>
R<CS:$+> $* $| <$-:$+>  $#error $@ $4 $: $3 " Cert Subject " $&{cert_subject} " does not match " $1
R<CI:$&{cert_issuer}> $* $| <$+>        $@ $>"TLS_req" $1 $| <$2>
R<CI:$+> $* $| <$-:$+>  $#error $@ $4 $: $3 " Cert Issuer " $&{cert_issuer} " does not match " $1
ROK                     $@ OK

Sendmail 8.14.7 (скоро обновление до 8.15.2).

9
задан 10 February 2016 в 13:58
2 ответа

Сделайте sendmail.cf store ${cn_subject} с разделением хостовой части на ${cn1_subject}.
. Это делает завершение реализации почти тривиальным.

ПРЕДУПРЕЖДЕНИЕ: Попросите высказать свое мнение по адресу news:comp.mail.sendmail перед установкой в не тестовом окружении. Это МОГУТНО работать, но sendmail делает так, чтобы избежать "неожиданных побочных эффектов", БОЛЬШО БОЛЕЕ кропотливо, чем я готов "инвестировать". Я "сухо протестировал" его с помощью sendmail-8.15.2.

запись доступа:

TLS_Rcpt:example.com VERIFY:256+CN1:messagelabs.com

sendmail.mc исправлена для поддержки вышеприведенной записи

ПРЕДУПРЕЖДЕНИЕ: помните о TAB (\t) между RHS и LHS в R строках.
. Это более грязная реализация через sendmail.mc only.

define(`_LOCAL_TLS_RCPT_')dnl
LOCAL_RULESETS
SLocal_tls_rcpt
R$*     $: $&{cn_subject}
R$-.$+  $@ $(macro {cn1_subject}  $@ $2 $)
R$*     $@ $(macro {cn1_subject}  $@ $)    

# Ruleset continued
STLS_req
R<CN1:$&{cn1_subject}> $* $| <$+>               $@ $>"TLS_req" $1 $| <$2>
R<CN1:$+> $* $| <$-:$+> $#error $@ $4 $: $3 " CN-1 " $&{cn_subject} " does not match " $1
ROK                     $@ OK
divert(0)dnl

Объяснение:

  1. Сделайте Local_tls_rcpt rule-set store ${cn_subject} со снятой частью "перед первой точкой" в ${cn1_subject}
  2. Добавьте проверки ${cn1_subject}, вызванные префиксом CN1 в "лишней части" правила TLS_req... set

Sample script to test it

#!/bin/sh
# -C sendmail-test.cf -- use non standard cf file
# -d60.5 -- trace (access) map lookus
# -d21.12 -- trace R lines rewriting 
sendmail -C sendmail-test.cf -bt -d60.5 <<END
.D{verify}OK
.D{cn_subject}mail31.messagelabs.com
.D{server_name}mail31.messagelabs.com
tls_rcpt user1@example.com
END
1
ответ дан 2 December 2019 в 22:37

Это не совсем ответ на поставленный вопрос, но мне кажется, что вы делаете что-то нелегкое.

Конфигурация Sendmail была написана таким образом, чтобы упор был сделан на простоту и эффективность программного обеспечения, анализирующего эту конфигурацию, а не на простую настройку и обслуживание людьми. В последние десятилетия для этого просто не было веских причин.

Sendmail был ужасно загадочной реликвией 15 лет назад. Некоторые дистрибутивы Linux по-прежнему предоставляют его по умолчанию, и это нормально, если конфигурация по умолчанию работает для вас, но как только вы обнаружите, что делаете что-то, что занимает больше нескольких минут, вам лучше всего выбросить sendmail и установить современный MTA .

Около 15 лет назад qmail все еще мог быть разумной заменой, но почти так долго я считал postfix лучшим выбором. Документация с сайта postfix.org станет хорошей, если вы найдете нужную вам часть. В вашем случае для решения этой проблемы вам понадобится http://www.postfix.org/TLS_README.html .

Я понимаю, что вы, скорее всего, потратили некоторое время на решение нескольких проблем в sendmail уже, но вместо того, чтобы тратить больше времени на это, переключитесь при первой же возможности. Если вы когда-нибудь оглянетесь назад, то съежитесь.

1
ответ дан 2 December 2019 в 22:37

Теги

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