O sendmail permite colocar restrições nas conversas TLS. Desejo 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, só quero verificar se o servidor para o qual estou enviando o e-mail é certificado como pertencente 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 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 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).