サンプルプログラムを作って、暗号化がうまくいかない原因を調べてみたところ、乱数生成器がうまく初期化されていなかったからのようです。確かにcrypto/rand/rand_win.cを見るとCE周りのifdefが沢山入っています。試しにopensslコマンドを使っても以下のようにすれば暗号化できました。とりあえず、random.txtの中身は適当で。
openssl smime -encrypt -des3 -in test.txt -out \ encrypt.txt -rand random.txt newcert.pem
またmultipart/signedでない署名の方は、原因は不明ですが、サンプルプログラムから呼び出せばうまく動作しました。というわけで、一通り問題なく動作したということで良いのかな?
鍵や証明書の管理を手動でやるなら、少なくとも復号化と署名の検証に関しては、opensslコマンドをテンプレート中から@Executeで呼び出すという方法で出来る気がしますね。文字コード周りで問題が出るような気もしますけど(QMAIL側からエンコーディングを指定して読む方法が無いので)。