At the moment as soon as the message content needs to get altered we "copy" the whole MimeMessage (when it is shared between Mail instances). Thats a waste of resources, when only the headers are modified (which is the case most of the time). We should better copy the headers into memory if needed and do the modification there. Then when write back the MimeMessage into the queue/store/etc we would just read the headers from memory and skip to read them from the MimeMessageSource.
That would be a way more efficient,