Bem-vindo ao Serverfault! :-)
Você configurou explicitamente o SendMail para usar o TLS? Caso contrário, o SendMail ainda tentará executar operações TLS oportunistas com um certificado de cliente de zero bytes. Eu suponho que isso é o que você está vendo? Para mais informações sobre isso (estranheza?) Confira a excelente resposta do @ MadHatter aqui: link
Então, com isso dito, responderei às suas perguntas na ordem em que foram feitas:
- Why is sendmail sending the client certificate to outlook.com as part of STARTTLS?
Quando dois MTAs estão tentando estabelecer um túnel seguro para STARTTLS, é normal que eles negociem informações de segurança e troquem certificados públicos para poder criptografar informações com segurança entre si. Se o sendmail não fornecesse um certificado de cliente para outlook.com, os servidores de correio outlook.com não teriam uma maneira de criptografar respostas / confirmações de volta ao sendmail.
- Is there a way that I can prevent sendmail from sending client certificates to servers outside our domain, even if the server requests it? From the experiments I've done, outlook.com will accept the message if I simply ignore the certificate request and send the message.
Você tem algumas opções:
Opção nº 1: implemente uma regra de exceção por servidor / por domínio. Isso pode ser feito adicionando Try_TLS:<broken.server> NO
à sua tabela de acesso. Parece que você já está fazendo isso, mas é importante observar que a parte "broken.server" pode ser um IP, um registro MX (microsoft-com.mail.protection.outlook.com) ou partial registro MX (outlook.com).
Opção nº 2: implemente uma regra de ignorar todos os domínios. Isso pode ser feito adicionando Try_TLS: NO
à sua tabela de acesso (não é necessário especificar IPs).
Tecnicamente , você também pode hackear o arquivo sendmail.mc para evitar que o sendmail verifique a capacidade TLS. Eu não recomendaria isso, já que requer mudanças delicadas.