Return path is something that the MTA (in your case postfix) will always replace with whatever it received in the MAIL FROM: during the SMTP exchange, and not what the headers say.
So can you Java smtp api actually specify the from address (the "envelope from", not the "From:" header)? Your trick is to put your code into the api in a way that makes it put that into MAIL FROM: during the smtp conversation.
The from in the mail headers aren't used (sometimes they are adjusted) by the MTA.
You might also try adding a X-Errors-To: and Reply-To: headers. Some MTA's will use them.