sendmail разрешает одно ограничение для TLS-разговоров. Я хочу проверить, что сообщения, отправленные на example.com, отправляются на сервер, имеющий сертификат * .messagelabs.com. Я хочу защитить от DNS-спуфинга и MitM. Если бы у Messagelabs был только один сервер, это было бы просто:
TLS_Rcpt:example.com VERIFY:256+CN:mx.messagelabs.com
Однако у Messagelabs есть много серверов и кластеров разных серверов с уникальными IP-адресами и сертификатами для одного и того же имени. Все в порядке, я просто хочу проверить, что сервер, на который я отправляю почту, сертифицирован как принадлежащий ярлыкам.
я пытался
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).
источник
Ответы:
Создайте хранилище sendmail.cf
${cn_subject}
с удаленной частью хоста${cn1_subject}
.Это делает завершение реализации почти тривиальным.
доступ к записи:
исправление sendmail.mc для поддержки вышеуказанной записи
Объяснение:
Local_tls_rcpt
хранилище${cn_subject}
с набором правил с разделом «до первой точки»${cn1_subject}
${cn1_subject}
срабатывания по префиксу CN1 в «дополнительной части»TLS_req
набора правилПример скрипта для тестирования
источник
Это не совсем ответ на поставленный вопрос, но мне кажется, что вы делаете что-то нелегко.
Конфигурация Sendmail была написана таким образом, чтобы отдавать предпочтение простоте и эффективности для программного обеспечения, выполняющего разбор этой конфигурации, а не для простой настройки и обслуживания людьми. В последние десятилетия просто не было веских причин для этого.
Sendmail был ужасно загадочной реликвией 15 лет назад. Некоторые дистрибутивы Linux по-прежнему предоставляют его по умолчанию, и это нормально, если конфигурация по умолчанию работает для вас, но как только вы обнаружите, что делаете что-то, что занимает более нескольких минут, лучше всего выбросить sendmail и установить современный MTA ,
Около 15 лет назад qmail, возможно, все еще был разумной заменой, но почти так долго я считал postfix лучшим выбором. Документация с сайта postfix.org хороша, когда вы найдете то, что вам нужно. В вашем случае вам понадобится http://www.postfix.org/TLS_README.html для решения этой проблемы.
Я понимаю, что вы, скорее всего, уже потратили некоторое время на решение нескольких проблем в sendmail, но вместо того, чтобы тратить больше времени на эту дыру, переключитесь при первой же возможности. Если вы когда-нибудь оглянетесь назад, вы съежитесь
источник