Another option for improving fetchmail performance may be to make it parallelise IMAP fetches and local deliveries. At the moment, fetchmail retrieves a message from the server, delivers it to the local MTA, then deletes it from the server; it may be more efficient to fetch messages as fast as possible in a pipelined style and then sequentially deliver them to the local MTA at the same time, interleaving delete commands into the command stream as the local deliveries complete. (Note that you could do this with POP as well; it's just that IMAP's tagged-commands method of operation makes it particularly well suited to this.)