O sendmail permite restringir as conversas TLS. Quero verificar se as mensagens enviadas para example.com são enviadas para um servidor que possui um certificado * .messagelabs.com. Quero me proteger contra falsificação de DNS e MitM. Se o messagelabs tivesse apenas um servidor, seria fácil:
TLS_Rcpt:example.com VERIFY:256+CN:mx.messagelabs.com
No entanto, o messagelabs possui muitos servidores e clusters de servidores diferentes com IPs e certificados exclusivos para o mesmo nome. Tudo bem, eu só quero verificar se o servidor para o qual estou entregando o e-mail está certificado para pertencer a messagelabs.
eu tentei
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
mas eu recebo erros como
CN mail31.messagelabs.com does not match .*.messagelabs.com
Como posso fazer isso? Esta é uma solicitação recorrente para nós (principalmente para configurações como TLS_Rcpt: example.com VERIFY: 256 + CN: *. Example.com), então eu estaria pronto para modificar o sendmail.cf, mas não consigo entender
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 (atualizando para 8.15.2 em breve).
fonte
Respostas:
Torne a loja sendmail.cf
${cn_subject}
com a parte do host incluída${cn1_subject}
.Torna o acabamento da implementação quase trivial.
entrada de acesso:
Correção sendmail.mc para suportar a entrada acima
Explicação:
Local_tls_rcpt
armazenamento do conjunto de regras${cn_subject}
com a parte "antes do primeiro ponto" removida${cn1_subject}
${cn1_subject}
disparado pelo prefixo CN1 na "parte extra" doTLS_req
conjunto de regrasScript de amostra para testá-lo
fonte
Esta não é exatamente uma resposta à pergunta apresentada, mas parece-me que você está fazendo as coisas da maneira mais difícil.
A configuração do Sendmail foi escrita de uma maneira que prioriza facilidade e eficiência para o software que analisa essa configuração, não para fácil configuração e manutenção por seres humanos. Simplesmente não há boas razões para fazer isso nas últimas décadas.
Sendmail era uma relíquia terrivelmente misteriosa há 15 anos. Algumas distribuições linux ainda a fornecem por padrão, e isso é bom se a configuração padrão funcionar para você, mas assim que você se encontrar fazendo algo que leva mais do que alguns minutos, é melhor jogar o sendmail e instalar um MTA moderno .
Há cerca de 15 anos, o qmail ainda pode ter sido um substituto sensato, mas por quase tanto tempo considerei o postfix uma opção melhor. A documentação do site postfix.org é boa quando você encontra o que precisa. No seu caso, você desejará http://www.postfix.org/TLS_README.html para esse problema.
Sei que você provavelmente já gastou algum tempo resolvendo alguns problemas no sendmail, mas, em vez de gastar mais tempo nesse buraco, mude na primeira oportunidade. Se você olhar para trás, vai se encolher.
fonte