Though this has been written on before it is always good to review from time to time the subject of bounces. If you send any quantity of email, whether you use your own mail server or a service, the "quality" of your list is extremely important. If your list has a lot of bad emails then it you could be marked as a "bad" sender and lose reputation with the big-boy mail services.
THE PROBLEM: Returned emails do not have a standard format. Many initially believe that a "returned" email should be the whole email, which would be wonderful, but usually mail servers in the world either stripe down the email to almost nothing or just send back their own rendition. Overall, you can not rely on either the headers or the body of the bounced message to be able to reliably identify the original recipient, especially if you want to automate the process. Even if you add your own custom headers, it's likely that the bouncing server will strip them when it sends notification back to you.
The only piece of information that will remain intact in a bounce is the return-path email address because at a minimum the email will need to return to that email address. The only way to automate truly accurate bounce catching is to encode the recipient directly into the return path address itself. This would typically be done by overriding your server's default return path address for each outgoing message, using a unique value per recipient, like bounce-XXXXX@yourcompanydomain.com, where XXXXX is some encoded and/or obfuscated representation of the recipient's email address or some other internal identifier. This is VERPs, or Variable Envelope Return Path. Campaign Enterprise v12 uses VERPs to process bounced emails.
Be sure to check out the Campaign Enterprise Version 12 Documentation for more information on how bounce handling is done in Campaign Enterprise v12.