Eu tenho visto exatamente o mesmo comportamento no Outlook 2013 e no Outlook 2016, ambos falsamente relatando mensagens assinadas com várias partes assinadas pelo assinante como adulteradas, será o The Bat! v7 Professional (Windows) e Mac Mail (El Capitan) relatam as mesmas mensagens como válidas.
O problema é causado por muitos retornos de carro (CR) ou alimentação de linha (LF) ou uma combinação de ambos (CRLF) no final da carga útil da mensagem.
O final da carga útil da sua mensagem significa a final:
------=_NextPart_000_0005_01D0553F.10373AE0--
na mensagem não assinada / bruta que você postou.
Nem importa qual cliente envia a mensagem, o Outlook para o Outlook falhará como o Mac Mail para o Outlook.
Ver você usando o Windows Live Mail me leva a supor que isso afeta todos os clientes de e-mail usando o correio do Windows e / ou o back-end de criptografia.
Você pode até mesmo reproduzir isso confiavelmente enviando uma mensagem de várias partes usando nada além de telnet / ncat ...
Portanto, para ficar claro aqui, tenho quase 99% de certeza de que seus e-mails foram devidamente assinados com um certificado válido. É apenas a Microsoft fazendo coisas - de novo - de forma diferente.
Agora, não tenho ideia do que o interruptor -b fazia internamente na assinatura-milter, mas tenho certeza que ele se certificou de que a sua carga tenha escapado adequadamente antes de assiná-lo.
"Did" simplesmente porque esta opção parece ter sido descartada na versão atual (executando o milter de assinatura Versão 20150308 aqui) que apenas exibe
option -b is ignored for compatibily reasons, you may remove it safely
quando executado com este argumento, e correios, claro, ainda não são validados no Outlook.
Assim, a solução mais óbvia parece ser a de enviar os e-mails através de um milter adicional antes de enviá-los para o assinante milter.
Como eu já tenho um milter in-loco personalizado (escrito em python usando o libmilter), eu poderia simplesmente adotar meu código para cuidar disso:
...
if mail.is_multipart():
logging.debug("Stripping tailing line feeds (if any) from multi-part payload")
new_body = new_body.rstrip()
workflow["repl_body"] = new_body
return workflow
Assim, o Outlook finalmente pára de reclamar de nada.
Felicidades