Depending on who will be judging your code, if its someone that does not know any better, I would do what I wrote below. If they understand what they are asking for, you may want to find out why they want it to be 100% Zimlet. If it's just for integration and security, option 2 (see below) should work just fine and you will finish the project much faster. Use the regex patter described above to match and have it call the form page in a canvas and away you go.
If you are just filling out a form and not interacting with the rest of zimbra, you may want to just use zimbra as a wrapper. Create your webform using .jsp, serve it up, create a canvas window and pull it in. Then when you submit the form have it talk to the server that will host the application.
There are two possible post options also.
1. have the browser do the post - this is the easiest
2. have the server do the post.
Option 2 is great if you want to have zimbra manage your security, you can keep the second server behind a firewall. In my case I have a LAMP server and my zimbra server. Option works great inside the firewall, but my LAMP server is not open to the outside internet, in this case I would use option number 2. Another developer JTroxel had a tough time getting it to work and Satishs a Zimbra Employee posted some code that will make it work.
Here is that thread.
Post and params
I've roughed in some code to use rest and curl to get data from the server. My form gets some info from the email using obj.body, but to get the attachments from the server, I went with just grabbing the whole thing.
http://wiki.zimbra.com/index.php?title=Zimbra_to_PHP
Also, if you figure out how to do tab order in the canvas, can you let me know. Thats my next hurdle.
Hope this helps.