sendmail cho phép hạn chế một nơi đối với các cuộc hội thoại TLS. Tôi muốn kiểm tra xem các tin nhắn được gửi đến example.com có được gửi đến một máy chủ có chứng chỉ * .messagelabs.com không. Tôi muốn bảo vệ chống giả mạo DNS và MitM. Nếu messagelabs chỉ có một máy chủ thì sẽ dễ dàng:
TLS_Rcpt:example.com VERIFY:256+CN:mx.messagelabs.com
Tuy nhiên messagelabs có rất nhiều máy chủ và cụm máy chủ khác nhau với IP và certs duy nhất cho cùng một tên. Tất cả đều ổn, tôi chỉ muốn kiểm tra xem máy chủ mà tôi đang gửi thư có được chứng nhận thuộc về messagelabs không.
Tôi đã thử
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
nhưng tôi gặp lỗi như
CN mail31.messagelabs.com does not match .*.messagelabs.com
Tôi có thể làm cái này như thế nào? Đây là một yêu cầu định kỳ cho chúng tôi (chủ yếu là cho các cấu hình như TLS_Rcpt: example.com XÁC MINH: 256 + CN: *. Example.com), vì vậy tôi đã sẵn sàng sửa đổi sendmail.cf, nhưng tôi không thể hiểu
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 (sớm nâng cấp lên 8.15.2).