Modify Not Junk behavior

We have our ZCS sitting behind an external MTA with Anti-Spam filtering going on before messages hit Zimbra. What I really need to do is figure out a way of modifying the system so that after a message is falsely marked as spam and placed in the Junk folder, when the user corrects the system by hitting "Not Junk" from the UI I need Zimbra to write a header to the message, put the message back in an envelope and re-inject the message back to the MTA for reprocessing. Any ideas out there?

I have thought about trying to create a message filter and setting zimbraMailTransport for the global HAM account, but I'm not sure this would work.

The MTA is just that. It talks SMTP. I need Zimbra to send the message back to it via SMTP and then the logic in the MTA can determine if it needs to deliver back to the Zimbra server to be put in the Inbox, or to a different server elsewhere which is waiting for these messages.

We have our ZCS sitting behind an external MTA with Anti-Spam filtering going on before messages hit Zimbra. What I really need to do is figure out a way of modifying the system so that after a message is falsely marked as spam and placed in the Junk folder, when the user corrects the system by hitting "Not Junk" from the UI I need Zimbra to write a header to the message, put the message back in an envelope and re-inject the message back to the MTA for reprocessing. Any ideas out there?

I have thought about trying to create a message filter and setting zimbraMailTransport for the global HAM account, but I'm not sure this would work.

fetchmail is your friend ;-)

Fetchmail can keep track of what items have been grabbed before. Anything in the HAM folder by definition was misclassified (no header rewrite needed), and you can fetch it off of the server, and then use a tool like formail to do any rewriting, or just shove it back into the smtp queue. You can add a entry in a crontab to force fetchmail to run at a particular interval.

Your smtp filter will have to know not to try and re-deliver ham email messages once they have been sent.