Hello everyone.....
I Made some tests in zlib plugin, and in ostream file (ostream-zlib.c) in o_stream_zlib_sendv function, have it: stream->ostream.offset += bytes; In struct mail_save_context, have saved_physical_size and it can be updated, acording with the observation. /* if non-zero, overrides the physical size that should be saved. for example when using zlib plugin, this would contain the mail's uncompressed size. */ uoff_t saved_physical_size; in file zlib-plugin.c in zlib_mail_save_compress_finish function, have it: ctx->saved_physical_size = ctx->output->offset; It's a update to offset (the size of email) in zlib, but if you update this value with a new number, the W flag in email is NOT updated. This is the original file, without update the or increase offset. 1273155226.M512158P16310.brc,S=435,W=390:2,S This is the file updated with 5000b more. 1273155226.M512158P16310.brc,S=5435,W=390:2,S The S is updated, but W not. OK, this not matter in zlib plugin, because the physical size is the email uncompressed, but if you use the zlib as example, and you use this value (saved_physical_size) to update your saved email size, it can't update the W flag, and the email will not be open, because the W size is wrong.