this has come up a few time recently and i think 3 is pretty difficult. the TCP header has no real space for this, you could look at this example but that will require you email server to understand this trick and i doubt any do that.
https://devcentral.f5.com/articles/accessing-tcp-options-from-irules
the other possibility is an application header (the HTTP headers you mentioned are not TCP headers they are application headers) but that is also not that straight forward. someone suggest the X-Originating-IP header and this might be possible but the SMTP protocol isn't that nicely accessible as the HTTP protocol so you will have to collect the email, make changes and pass it on. while not totally impossible it isn't easy and might break things.
as long as there isn't a clearly defined field as with HTTP this won't be something done easily.