We're looking into implementing Variable Envelope Return Path (VERP) for improved bounce processing for our application.
Our current mail infrastructure is MS Exchange 2007 but are in the process of upgrading to 2010. We're also implementing Postini for spam filtering.
Exchange doesn't support sub-addressing (see also this question on disposable addresses) -- and VERP is somewhat of a specialized application of sub-addressing.
Are there any options for implementing VERP in Exchange without putting another non-Exchange SMTP relay in front of Exchange to pre-process incoming messages? Specifically could a transport rule be created that could match against the target (non-existing) recipient, store that recipient address in a special header added to the message, and redirect the message to a pre-created mailbox?
Note: we have developer resources available if custom code could be used somehow.
Certainly, out of the box, there is no support for VERP in Exchange 2007/2010. As you know. I don't believe you'll be able to create a transport rule, even with PowerShell, to do what you want. I believe the closest you will get is building your own Transport Agent. You can find the Exchange SDK at msdn.microsoft.com. If your goal is to determine who a message bounced for, you may be better off parsing the protocol logs. Protocol logging must be turned on, and has separate send/receive logs. Good luck, Paul
Exchange sucks at this. Linux mail software is free. Install it on a box, configure a sub-domain for all your application specific mail you send out. (Like myapp.mycompany.tld, so all your mail comes from [email protected])
It would be fairly easy to write (or get someone to write) a quick and dirty app that would receive and process the bounce messages and notify your app using something like SOAP.
If you are a windows-only environment, it's no fun breaking away to run a one-off Linux server, but I am unaware of a way to do this with Exchange.
Another option might be to embed a unique string of characters in the header, subject or body of every message. Use X-MyApp-Id: blah. Of course this may trip more spam filters...
We do this by parsing the message tracking logs and having a rule that deletes the bounce messages before they are sent out. THis works if your sending app can create a VERP return-path. It is not the SMTP part of exchange that can't do VERP it is the mailbox portion that can't handle the wild cards to deposit the bounce messages in a mailbox. If you use the logs you don't have to send the bounce message which cuts down on your mail traffic. The logs are csv files so they load somewhat neatly into a database and then you parse out the return path field for your VERP record id and use the reason code to mark as hard or soft bounce. The issue we have is that this works great if your app uses smtp to connect to the exchaange server. For some reason, if you use the pickup directory exchange replaces your verp return-path with the from address and you lose the ability to do this. Still trying to figure this out.