I blogged earlier about an issue with cfpop when doing a "getall" on mail. This issue can be fixed by getting just the headers and then looping over and grabbing each message. I decided to use the mail message UID feature to get the individual email message since I figured this was safer than just using the messages number index.
However, the speed was incredibly slow. Michael Dinowitz alerted me to an old bug that explains the problem - when you fetch a message by UID, CF actually grabs all the messages and then parses each message to find the UID.
What I'm curious about, and I'll need to test to find out, is if new emails arrive, do they always end up at the "end" of the stack? If so, than it is safe to get mail message #1, read it, and delete it, and then fetch #1 again, which would have been the old #2.