The “Interface Not Supported” error occured first with ORF version 4.0.4, on a very limited number of systems, but it took us weeks to find and fix the problem. This post explains the technical background of the issues.
Although not mentioned in the ORF Change Log, ORF version 4.0.4 changed the way how the ORF SMTP Module and the ORF Service communicates. Previously, we were using named memory mapped files to pass email content around, but due to the nature of memory mapped files, this was not entirely reliable. We decided to change the transfer protocol to use IStream, so the ORF 4.0.4 SMTP Module actually passes two streams to the ORF Service, one for reading the email content and another for writing. As the COM marshalling of IStream is supported by Windows in every version and it is also quite performance-wise, we were happy that we found the perfect alternative to memory mapped files.
That is, until we started getting reports about decreased filtering performance and lots “Interface not supported” errors in the ORF log. It was discovered quickly that the issue occurred when the ORF Service failed to query IStream reference from the data got from SMTP Module, i.e. the stream did not arrive for reason. Of course, the issue did not reproduce on our test systems, so we had to compile special ORF versions and write test tools to gather more data. With the help of the customers who experienced the issue (thank you!), one of our test tools finally gave us results that helped to explain the issue: a CoMarshalInterface() call had failed with “Interface not registered” error. A quick check at the customer server revealed that the IStream interface registration was simply missing from the registry, the HKEY_CLASSES_ROOT\Interface\{0000000C-0000-0000-C000-000000000046} key did not exist and this effectively broke the IStream marshalling of Windows. The fix was very easy: we just had to re-register the broken Windows interfaces using the „regsvr32 ole32.dll” command.
Apparently, we are not the only one who ran into this issue. Most sources blame a specific version of Nero for removing these keys, but all of the customers who experienced the issue confirmed they never had Nero installed on their systems, so watch your step: there may be some software out there that does the same „magic”.