Keep Return-Path header in Postfix

karlsfre
karlsfre used Ask the Experts™
on
We use Postfix to send emails from Java (Tomcat). We want to give each outgoing message a unique Return-Path header, so that our system automatically can register bounced email addresses.

For example, when I send an email to test@somewhere.com I want to use a Return-Path as 1234-ieh9fj83oiu@bounce.mydomain.com. And when I send an email to test2@somewhere-else.com I want to use a Return-Path as 1235-oijdfoijdfj33@bounce.mydomain.com.

I set the unique Return-Path header in the email in Java, before passing it on to Postfix through an SMTP connection. I have logged the outgoing message, and it has the correct (unique) "Return-Path" address.

However, when the email arrives to the recipient the Return-Path is set as support@mydomain.com. This is the email address used in From. It seems that Postfix automatically resets our custom Return-Path header with the From header.

I believe this is in line with the SMTP guidelines, when an SMTP server gateway sends an email it should reset the Return-Path header.

How can I configure Postfix so that it does NOT change the Return-Path header for my own emails?
Comment
Watch Question

Do more with

Expert Office
EXPERT OFFICE® is a registered trademark of EXPERTS EXCHANGE®
Commented:
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.

Author

Commented:
Thanks a lot,

Just for reference, if someone else is looking to send emails from Java via SMTP, use com.sun.mail.smtp.SMTPMessage instead of MimeMessage, that way you can set the Envelope From. See example code below.

SMTPMessage m = new SMTPMessage();
m.setEnvelopeFrom(bounceAddress);

Open in new window

Do more with

Expert Office
Submit tech questions to Ask the Experts™ at any time to receive solutions, advice, and new ideas from leading industry professionals.

Start 7-Day Free Trial