Skip to main content

compress_spool – Dynamic Spool Compression

Last updated March 2020

One of the principle bottlenecks in handling a large amount of inbound mail is writing spool messages to disk on reception and then reading them back from disk again when they need to be delivered. The spool compression module attempts to assist in the IO demands of large messages by compressing them prior to writing them to disk. This module is primarily useful on systems which have IO bottlenecks but CPU to spare.


This module will fail to load if you set the configuration option Use_MMAP to true. For more information about this option, see use_mmap.


This module is loaded automatically as required and does not need to be explicitly included. Include it if you wish to change the default values.

The following is an example configuration that enables compression of spool entries over 32k in size:

compress_spool {
  compress = "bzip2"
  minimum_size = 32768
  read_only = 1

In this example, messages greater than or equal to 32768 will be stored using bzip2 compression.

The following are the configuration options defined within this module:


Messages greater than or equal to the minimum size will be stored with compression. Anything under the minimum_size will be spooled directly to disk uncompressed. Default value is 4096.


Default value is 0.


The default compression algorithm is gzip. The gzipio module is loaded automatically as required and does not need to be explicitly included.

bzip2 compression is also available. The "bzip2io {}" stanza is not necessary as it loads on demand when the compress spool module attempts to use the "bzip2" io wrapper.


This module compresses the spool messages in place. If you enable this module, you MUST be certain that the queue is empty before you disable it, or else you risk sending compressed messages without decompressing them.

Was this page helpful?