sendmail pozwala na jedno miejsce na ograniczenia w rozmowach TLS. Chcę sprawdzić, czy wiadomości wysyłane do example.com są wysyłane na serwer, który ma certyfikat * .messagelabs.com. Chcę chronić przed fałszowaniem DNS i MitM. Jeśli messagelabs miałby tylko jeden serwer, byłoby to łatwe:
TLS_Rcpt:example.com VERIFY:256+CN:mx.messagelabs.com
Jednak messagelabs ma wiele serwerów i klastrów różnych serwerów z unikalnymi adresami IP i certyfikatami dla tej samej nazwy. Wszystko w porządku, chcę tylko sprawdzić, czy serwer, na który wysyłam pocztę, jest certyfikowany jako należący do messagelabs.
próbowałem
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
ale dostaję błędy jak
CN mail31.messagelabs.com does not match .*.messagelabs.com
W jaki sposób mogę to zrobić? To jest dla nas powtarzające się żądanie (głównie dla konfiguracji takich jak TLS_Rcpt: example.com VERIFY: 256 + CN: *. Example.com), więc byłbym gotowy zmodyfikować sendmail.cf, ale nie mam sensu
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 (wkrótce aktualizacja do wersji 8.15.2)