tracking received emails like basecamp or github

I have an application which I configured to send and receive email. Both processes work at the basic level. The application can send email to users. Users can send email back to the application where I use the mail_fetcher plugin to poll the inbox.

My problem is i am trying to determine the best way to 'track' these emails so that when they are retrieved from the mail server I can process them correctly.

For example:

Application can send email to a user so that user can reply and update a message on a specific web page in the application. At this point i need to know the message id when the email is sent from the app so i can persist it and use it as cross-reference when the reply comes back (in the case of a threaded message situation).

Ive tried setting custom header parameters but these get stripped coming back from the user.

Should i simply use some form of unique identifier on the subject line? reply-to? (although i would assume this would require dynamic email inboxes), or in the message body itself?

I have searched everywhere and am even looking for other open source apps that do this so i can understand a clean way to proceed. Any help would be most appreciated.