ZFS has support for compression on the file system ( lzjb | gzip | gzip-N | zle ). gzip eats CPU even at levels as low as 3.
From the zfs man page
The lzjb compression algorithm is optimized for performance while
providing decent data compression. You can specify the gzip level by
using the value gzip-N where N is an integer from 1 (fastest) to
9 (best compression ratio).
The cost of CPU to support compression (gzip) vs the Cost of Disk if mboxes are not compressed?
The other interesting feature ZFS (OpenSolaris) has is de-duplication, it detects if the block which is about to be written, is the same as another block and instead of writing the block it puts a pointer to the already existing block, saving disk space. Only problem with this is you would need to filter out headers which are different even when the to/body is the same.
Cheers