sendmail le permite a uno colocar restricciones en las conversaciones de TLS. Quiero verificar que los mensajes enviados a example.com se envíen a un servidor que tenga un certificado * .messagelabs.com. Quiero proteger contra la falsificación de DNS y MitM. Si messagelabs solo tuviera un servidor, eso sería fácil:
TLS_Rcpt:example.com VERIFY:256+CN:mx.messagelabs.com
Sin embargo, messagelabs tiene muchos servidores y clústeres de diferentes servidores con IP y certificados únicos para el mismo nombre. Todo eso está bien, solo quiero verificar que el servidor al que le estoy enviando el correo está certificado para pertenecer a messagelabs.
Yo he tratado
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
pero obtengo errores como
CN mail31.messagelabs.com does not match .*.messagelabs.com
¿Cómo puedo hacer esto? Esta es una solicitud recurrente para nosotros (principalmente para configuraciones como TLS_Rcpt: example.com VERIFY: 256 + CN: *. Example.com), por lo que estaría listo para modificar sendmail.cf, pero no puedo 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 (actualización a 8.15.2 pronto).
fuente
Respuestas:
Haga que sendmail.cf almacene
${cn_subject}
con la parte del host despojada${cn1_subject}
.Hace que terminar la implementación sea casi trivial.
entrada de acceso:
sendmail.mc corregido para admitir la entrada anterior
Explicación:
Local_tls_rcpt
una tienda de conjunto de reglas${cn_subject}
con la parte "antes del primer punto" despojado${cn1_subject}
${cn1_subject}
activadas por el prefijo CN1 en la "parte adicional" delTLS_req
conjunto de reglasScript de muestra para probarlo
fuente
Esta no es exactamente una respuesta a la pregunta planteada, pero me parece que estás haciendo las cosas de la manera difícil.
La configuración de Sendmail fue escrita de una manera que prioriza la facilidad y la eficiencia para el software que analiza esa configuración, no para una fácil configuración y mantenimiento por parte de los humanos. Simplemente no ha habido una buena razón para hacerlo en las últimas décadas.
Sendmail era una reliquia horriblemente arcana hace 15 años. Algunas distribuciones de Linux todavía lo proporcionan de manera predeterminada, y eso está bien si la configuración predeterminada funciona para usted, pero tan pronto como se encuentre haciendo algo que tome más de unos minutos, es mejor tirar sendmail e instalar un MTA moderno .
Hace unos 15 años, qmail aún podría haber sido un reemplazo razonable, pero durante casi ese tiempo he considerado que postfix es una mejor opción. La documentación del sitio postfix.org es buena una vez que encuentre el bit que necesita. En su caso, querrá http://www.postfix.org/TLS_README.html para este problema.
Me doy cuenta de que es probable que ya haya pasado algún tiempo resolviendo algunos problemas en sendmail, pero en lugar de perder más tiempo en ese agujero, cambie lo antes posible. Si alguna vez miras hacia atrás, te encogerás.
fuente