[Dovecot] SIS Implementation
WJCarpenter
bill-dovecot at carpenter.org
Sat Aug 15 03:39:40 EEST 2009
> I was thinking things like: upper vs. lowercase characters, different
> line wrapping lengths, possibly some other weird stuff.. I'd think
> that all digital signatures break if any of those change? Or do they
> really parse the headers and do calculate the signatures using the
> decoded base64?
Yes, you will have to perfectly preserve whatever is inside the base64
or q-p, but that's a different matter from needing to preserve the
base64 or q-p itself. base64 and q-p are just schemes for safely
transporting the message since there is some mild danger of losing the
8th bit.
These days, standardized digitial signature schemes take into account
legal transformations that can happen during message transmission. Most
of them have a canonicalization formula so that things still work.
However, in early days, various schemes didn't take that into account.
Luckily, MTAs typically didn't rearrange anything even if they were
legally allowed to.
So, I think you should regard all MIME parts as binary (after decoding
any base64, q-p, or whatever). If some of them happen to contain plain
text, so what? Just perfectly preserve every bit, possibly with
lossless compression for storage, and everything should work. (Because
the SMTP spec has the ridiculous requirement that mail be transmitted
with CRLF line endings, some mail systems do line-ending conversion to
the local convention. That's a nightmare; best to avoid it and just
store everything as binary.)
> Another issue is that the MIME structure (MIME part sizes, offsets)
> must match what got saved into dovecot's cache file, but that could be
> fixed with some extra code.
>
Right. I assumed that that area of code would need a lot of touching
anyhow. If you take my advice and basically discard the base64/q-p
encoding, you also can't depend on the MIME boundary being unambiguous
any more. But if you're reassembling things on the fly from an SIS
store, you can generate new MIME boundaries if you need them. All that
stuff is just wrapping paper. (Of course, you should check the MIME
specs to see what you can officially do, but I'm pretty sure most of the
things that are interesting to do were anticipated. Even if not, the
MIME specs only cover message transmission. You can do whatever you
want in your local store.)
More information about the dovecot
mailing list