Implementing Variable Envelope Return Path (VERP) using Exchange

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.


Solution 1:

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

Solution 2:

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...