sendmail ช่วยให้ข้อ จำกัด สถานที่หนึ่งในการสนทนา TLS ฉันต้องการตรวจสอบว่าข้อความที่ส่งถึง example.com ถูกส่งไปยังเซิร์ฟเวอร์ที่มีใบรับรอง * .messagelabs.com ฉันต้องการป้องกันการปลอมแปลง DNS และ MitM หาก messagelabs มีเซิร์ฟเวอร์เพียงเซิร์ฟเวอร์เดียวที่ง่าย:
TLS_Rcpt:example.com VERIFY:256+CN:mx.messagelabs.com
อย่างไรก็ตาม messagelabs มีเซิร์ฟเวอร์และคลัสเตอร์ของเซิร์ฟเวอร์ต่าง ๆ จำนวนมากที่มี IP และ certs เฉพาะสำหรับชื่อเดียวกัน ทั้งหมดที่ฉันต้องการตรวจสอบว่าเซิร์ฟเวอร์ที่ฉันให้เมลนั้นได้รับการรับรองว่าเป็นของ messagelabs
ฉันเหนื่อย
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 เร็ว ๆ นี้)