The MIME standard (RFC 2046) provides the message/partial content type for breaking up messages into smaller parts. This is useful when messages have to traverse networks with size limits. It can also be useful when sending over networks subject to connection drops, as a form of "check-pointing" of the sending of a message, since a connection drop during transmission of a fragment of a message will require resending only of that fragment, rather than of the entire message. Information is included in each part so that the message can be automatically reassembled once it arrives at its destination.
defragment channel option (used on channels other than the defragmentation channel) and the defragmentation channel itself provide the means to reassemble messages in the MTA. When a channel is marked
defragment, any message/partial messages queued to that channel will be placed in the defragmentation channel queue instead. The defragmentation channel maintains a database which is used to match the parts of each message up with each other. Once all the parts have arrived, the message is rebuilt and sent on its way.
The defragment database can optionally be stored on a filesystem accessible to multiple hosts (for instance, over NFS), and then shared by multiple hosts. Such sharing of the defragment database can be particularly useful for achieving appropriate and efficient message defragmentation in multi-tiered, multi-plexed deployments. See Multi-host defragmentation channel operation for further details.
All channels that perform local delivery or send messages on to hosts (e.g., LMTP back end Message Store hosts) or networks that cannot deal with fragmented messages should be marked with the
defragment channel option. In particular all
tcp_lmtpcs* channels should be marked with the
defragment channel option. The
defragment channel option will have no effect unless a defragmentation channel is also defined.
A defragmentation channel is produced automatically by initial configuration.