This is not a JavaMail problem. Although it may be in the RFCs that you can this, the reality is that Google/Microsoft/Yahoo are not going to let it happen. They will simply overwrite what ever address you put in the
Return-Path header with the address provided in the
MAIL FROM. Try sending messages through various providers and compare the headers sent with those received by the recipient.
Interestingly, I just tried sending an email with an alternate address in the
From header through Gmail (which I do all the time with my home email server), and I found that Google overwrote it with the my
MAIL FROM address, and added a
X-Google-Original-From header with the
From address that I provided.
If you want to experiment a bit, set-up your own local
test mail server (sendmail, exim, etc.) where you can define the policies, and see what behaviour setting the various headers causes.