Locally signed emails are permanently rejected due to invalid S/MIME signatures
Problem
Inbound, 8-bit encoded emails that are signed locally by S/MIME are converted into 7-bit encoded emails by NoSpamProxy and then rejected by the receiving email server because of an invalid certificate.
Analysis
RFC 5751 requires that all signed MIME parts of an email must have 7-bit encoding:
If a multipart/entity signed is ever to be transmitted over the standard Internet SMTP infrastructure or other transport that is constrained to 7-bit text, it MUST have transferred encoding applied so that it is represented as 7-bit text. MIME entities that are 7-bit data already need no transfer encoding. Entities such as 8-bit text and binary data can be encoded with quoted-printable or base-64 transfer encoding.
To ensure full compliance with RFC 5751, NoSpamProxy converts the 8-bit encoding of the email into a 7-bit encoding.
However, because the signing was applied locally and not by NoSpamProxy, the conversion changes the hash value of the email and thus invalidates the signature. Accordingly, NoSpamProxy will permanently reject the email from version 13.2.20258.1435.
This scenario only occurs if the “Remove attached signature from S/MIME-signed emails (recommended)” option has been disabled in the NoSpamProxy rulebook and the email client sends 8-bit encoded emails.
Workarounds
Workaround 1: Enable opaque signing
Microsoft Outlook
Configure your email client to use the opaque signing method when applying the signature. This method summarizes the signature and message into a single binary file so that the signature remains intact when the email gatewaysmodify the email message.
Do the following:
- Open Microsoft Outlook.
- Go to File > Options > Trust Center Settings > Email Security.
- Remove the check mark for Send clear text signed message when sending signed messages
- Click OK.
By disabling this option, you have enabled opaque signing.
Microsoft 365/Outlook on the Web, Exchange Server 2013, Exchange Server 2016, Exchange Server 2019, Exchange Online
You can also configure opaque signing using PowerShell:
Set-SmimeConfig -OWAClearSign $false
For more information click here.
Workaround 2: Remove local signatures
Configure NoSpamProxy to remove locally applied signatures.
- Go to Configuration > Rules.
- Open the appropriate rule for inbound emails.
- Go to the Actions tab, open the S/MIME and PGP validation as well as encryption action, and go to the Validation options tab.
- Place the check mark for Remove attached signature from S/MIME-signed emails (recommended).
- Click Save and Close.