Eudora keeps track of the UIDs of messages it knows about in a file, I think called "lmos.dat". If this file were damaged, corrupted, or deleted, Eudora would redownload messages.
Also, if the X-UIDL headers in the spool file (on the server) were stripped, Qpopper would regenerate the UID. Unless no_status is set, Qpopper includes a random element in the UID generation. Thus, the same message will get a different UID and hence be redownloaded. (When no_status is set, Qpopper doesn't include the random number, and UIDs are repeatable. But there is also a chance of generating the same UID for different messages, if the headers are identical.) If a version of Qpopper prior to 3.0 is run with NO_STATUS compiled in, and the server is subsequently upgraded to 3.0 or later, the UIDs for the old messages will be different unless Qpopper has old_style_uids and no_status set.
