Best options for realtime compression? (btrfs?)

When I look in the forum for compression btrfs seems to come up quite a bit. The use case I have is I use pop3 for my email and I literally have decades of email - and yes have deleted/cleaned up quite a bit. Despite my cleaning it is still taking up quite a bit of space, and if i gzip it that reduces it to less than 1/6th of what it is uncompressed, drive space I could really use.
So I am trying to find the best way to reduce the size and filesystem compression seems to be it? I wanted to see if #1) FS level compression was the best option or is there something else i should consider and #2) If FS is indeed the best way which FS and perhaps pointers on how to get started? (would I need to create a template using that fs or can it be done just for an appvm etc).

Filesystem-level compression is the most practical but not the most space-efficient option, and you can implement it easily by converting your data partition from ext4 to btrfs.

I use ZFS so the block storage device is what is being compressed.

This question is not related to Qubes OS as your mail are highly likely to be only inside one VM, and you do not need to change Qubes OS filesystem at all.

Find out whether your mail client does its own compression. If your mail client does nothing then you can go on.

Depending on your use case you may only need to create a btrfs block device in your specific VM and mount them before you start your mail client. remember to add compression=zstd in mount options.

If you store all the mails in private storage, also consider qvm-volume config ... revisions_to_keep 0 to disable keeping revision as your private storage must be too large that keeping revision would slow down the machine.