Mit sendmail können TLS-Konversationen eingeschränkt werden. Ich möchte überprüfen, ob an example.com gesendete Nachrichten an einen Server mit einem * .messagelabs.com-Zertifikat gesendet werden. Ich möchte mich vor DNS-Spoofing und MitM schützen. Wenn messagelabs nur einen Server hätte, wäre das einfach:
TLS_Rcpt:example.com VERIFY:256+CN:mx.messagelabs.com
Messagelabs verfügt jedoch über viele Server und Cluster verschiedener Server mit eindeutigen IP-Adressen und Zertifikaten für denselben Namen. Alles in Ordnung, ich möchte nur überprüfen, ob der Server, an den ich die E-Mail sende, für Messagelabs zertifiziert ist.
Ich habe versucht
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
aber ich bekomme fehler wie
CN mail31.messagelabs.com does not match .*.messagelabs.com
Wie kann ich das machen? Dies ist eine wiederkehrende Anfrage für uns (hauptsächlich für Konfigurationen wie TLS_Rcpt: example.com VERIFY: 256 + CN: *. Example.com), daher wäre ich bereit, sendmail.cf zu ändern, aber ich kann keinen Sinn daraus machen
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 (baldiges Upgrade auf 8.15.2).
quelle
Antworten:
Erstellen Sie den sendmail.cf-Speicher,
${cn_subject}
in dem der Hostteil entfernt ist${cn1_subject}
.Dies macht die Fertigstellung der Implementierung fast trivial.
Zugangseintrag:
sendmail.mc Fix zur Unterstützung des obigen Eintrags
Erläuterung:
Local_tls_rcpt
Regelsatzspeicher, in dem der${cn_subject}
Teil "vor dem ersten Punkt" entfernt wurde${cn1_subject}
${cn1_subject}
durch das CN1-Präfix ausgelösten "zusätzlichen Teils" desTLS_req
Regelsatzes hinzuBeispielskript zum Testen
quelle
Dies ist nicht gerade eine Antwort auf die gestellte Frage, aber es sieht für mich so aus, als würden Sie die Dinge auf die harte Tour machen.
Die Sendmail-Konfiguration wurde so geschrieben, dass Benutzerfreundlichkeit und Effizienz für die Software, die diese Konfiguration analysiert, Priorität haben, nicht für die einfache Konfiguration und Wartung durch Menschen. In den letzten Jahrzehnten gab es einfach keinen guten Grund dafür.
Sendmail war vor 15 Jahren ein schrecklich arkanes Relikt. Einige Linux-Distributionen bieten es weiterhin standardmäßig an, und das ist in Ordnung, wenn die Standardkonfiguration für Sie funktioniert. Sobald Sie jedoch feststellen, dass Sie etwas tun, das länger als ein paar Minuten dauert, sollten Sie sendmail rauswerfen und einen modernen MTA installieren .
Vor ungefähr 15 Jahren war qmail vielleicht noch ein vernünftiger Ersatz, aber fast so lange habe ich Postfix als bessere Wahl angesehen. Die Dokumentation auf der Website postfix.org ist gut, sobald Sie das gewünschte Bit gefunden haben. In Ihrem Fall benötigen Sie http://www.postfix.org/TLS_README.html für dieses Problem.
Mir ist klar, dass Sie wahrscheinlich bereits einige Zeit damit verbracht haben, einige Probleme in sendmail zu lösen, aber anstatt mehr Zeit in dieses Loch zu werfen, wechseln Sie zum frühestmöglichen Zeitpunkt. Wenn Sie jemals zurückblicken, werden Sie zusammenzucken.
quelle