I've done it where the email comes into a mailbox associated with a queue. Built a plugin that fired on creation of a queueitem. On pattern match create the case, the annotation with email included associated to the case.
Sans queue, you could do the same on email create though this is less dependable as it relies on email router to get email into the system.