If I understand this correctly, what you have is an email message with multiple MIME parts. Some of those parts are other email messages that also have MIME attachments. This is what the tools in
MIME-tools (e.g.,
MIME::Parser) are designed to deal with.
May I suggest that you start with something simple? Start with a message that has a single attachment. Write some test code that does what you want (extract the attachment, compress it, re-construct a properly formatted message). Then work up to more complicated schemes like the one you show here.