I think my brain has been permanently deranged by too much exposure
to the OSI Reference Model. The fact that you have a process on your
system whose main job is to be an MTA, and another process whose
main job is to be a UA doesn't prove that the first process is precisely
an MTA and that the second is precisely a UA and that the interprocess
communication between them is the MTA-UA interface. It is quite
possible for the job of the UA to be shared between the first and
second process, and for the MTA-UA interface to actually be in the
internals of the process which is mostly an MTA.
My interest in letting MTAs change things stemmed from a desire to change
code for the process which is mostly-an-MTA. Once one accepts the fact
that part of the code in there is UA code this ceases to be an issue.
In fact I accept that that UA code in the mostly-an-MTA process can do
anything it likes before handing over to the mostly-a-UA process.
Given this improved understanding of the difference between an MTA and
a UA, I agree with Craig Everhart: MTAs should leave the message alone.
Also all of my previous messages are completely confused. I suggest
rmm `pick -from smart`
Oh, you already did that ...