sendmail permet de placer des restrictions sur les conversations TLS. Je souhaite vérifier que les messages envoyés à example.com sont envoyés à un serveur disposant d'un certificat * .messagelabs.com. Je veux me protéger contre l'usurpation DNS et MitM. Si messagelabs n'avait qu'un seul serveur, ce serait facile:
TLS_Rcpt:example.com VERIFY:256+CN:mx.messagelabs.com
Cependant, messagelabs a beaucoup de serveurs et de clusters de serveurs différents avec des adresses IP et des certificats uniques pour le même nom. Tout cela va bien, je veux juste vérifier que le serveur auquel je donne le courrier est certifié pour appartenir à messagelabs.
j'ai essayé
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
mais je reçois des erreurs comme
CN mail31.messagelabs.com does not match .*.messagelabs.com
Comment puis-je faire ceci? Il s'agit d'une demande récurrente pour nous (principalement pour des configurations comme TLS_Rcpt: example.com VERIFY: 256 + CN: *. Example.com), donc je serais prêt à modifier sendmail.cf, mais je ne peux pas comprendre
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 (mise à niveau vers 8.15.2 bientôt).
la source
Réponses:
Créez un magasin sendmail.cf
${cn_subject}
avec la partie hôte supprimée${cn1_subject}
.Cela rend la mise en œuvre presque triviale.
entrée d'accès:
correctif sendmail.mc pour prendre en charge l'entrée ci-dessus
Explication:
Local_tls_rcpt
magasin de règles${cn_subject}
avec la partie "avant le premier point" supprimée${cn1_subject}
${cn1_subject}
déclenchés par le préfixe CN1 dans la "partie supplémentaire" de l'TLS_req
ensemble de règlesExemple de script pour le tester
la source
Ce n'est pas exactement une réponse à la question posée, mais il me semble que vous faites les choses à la dure.
La configuration de Sendmail a été écrite d'une manière qui donne la priorité à la facilité et à l'efficacité du logiciel analysant cette configuration, et non à une configuration et une maintenance faciles par les humains. Il n'y a tout simplement aucune bonne raison de le faire au cours des dernières décennies.
Sendmail était une relique horriblement mystérieuse il y a 15 ans. Certaines distributions Linux le fournissent toujours par défaut, et c'est bien si la configuration par défaut fonctionne pour vous, mais dès que vous vous retrouvez à faire quelque chose qui prend plus de quelques minutes, il est préférable de jeter sendmail et d'installer un MTA moderne .
Il y a environ 15 ans, qmail était peut-être toujours un remplacement judicieux, mais pendant presque aussi longtemps, j'ai considéré postfix comme un meilleur choix. La documentation du site postfix.org est bonne une fois que vous avez trouvé le bit dont vous avez besoin. Dans votre cas, vous aurez besoin de http://www.postfix.org/TLS_README.html pour ce problème.
Je sais que vous aurez probablement déjà passé du temps à résoudre quelques problèmes dans sendmail, mais plutôt que de perdre plus de temps dans ce trou, changez de place à la première occasion. Si jamais vous regardez en arrière, vous grincerez des dents.
la source