I second the IMAP suggestion, specially if the PHP implementation supports IDLE. You can leave the script running and it will get notification when a new message arrives.
To answer you original question, I got mine to work by first adding an alias from the virtual domain to a local user:
example@virtualdomain.com -> local_user (no domain on this one), and then adding the local_user to the /etc/aliases file. I should mention I don't use the MySQL backend, just flat files.
Hope that makes sense, let me know otherwise.
edit: Haha, should remember to refresh before replying.
edit2: Heh, and now I realize you figured it out from a reply I had given someone else here. I had forgotten about that. Good times.