What I did was create an openvpn connection from my home machine to my linode. Let's say it has IP address 10.20.30.40 (home) and 10.20.30.50 (linode). Now my home machine runs an MTA as normal, and uses 10.20.30.50 as a smart host so all outgoing mail goes via linode. The linode is the MX for my mail and rewrites incoming mail to go to home. I use a table of users I want to forward mail for, so that mail for an invalid user does not make it home and then bounce; I just refuse to accept it on linode. Stops you doing spam backscatter.
If you have IPv6 (whether tunnel or ISP provided) then you can do the same thing over IPv6 and not need the OpenVPN tunnel.
linode rules are simple for postfix. I added a transport map entry
home.MYDOMAIN smtp:my_home_machine
In main.cf I added
virtual_maps = hash:/etc/postfix/MYDOMAIN
And now in MYDOMAIN I can do lines such as
user@MYDOMAIN
user@home.MYDOMAINRemember to allow "home" to relay via postfix. Remember to set your home machine to accept mail addressed to
user@home.MYDOMAIN and send out mail with user@MYDOMAIN.
I think that's pretty much it.