One issue that has annoyed me for quite a while, is the large amount of data nnimap needs to download every time I do 'g'. So I looked at the *imap-log* and found 13:40:29 11913 LIST "" "*" 13:40:31 11914 SELECT "INBOX" 13:40:32 11915 UID FETCH 1:* FLAGS 13:40:34 11916 UID FETCH 254986,255345,260617,261796,278644,278651,278659,278693,279436,279440,279627,280724,280727,280845,280847,280964,289681,290732,291103,292263,292277,294090,294688,295152,295802,295814,295831,295842,295943,296193,296201,296208,296287,296307:296308,296318,296863,296866,296930,296940,297782,298610,298649,298827,299314,299321,299968,299994,300594,300786,301132,302623:302624,302629,302641,302704,302908,303061,303193,303313,303504,303508,304227,304521,305071,305355:305356,305411,305414:305415,305525,306413,306428,306437,306447,306449,306457,306649,306727,307813,308448,308453,308553,308558,308562:308563,309365,310001,310289,310292,311762,311768,311774,311809,311813,311863,311914:311915,311918,311921,311944,311968,311977,311985,311991,312472,312618,312620,312629,312815,31285 0,312957,313150:313151 (UID BODY.PEEK[HEADER] BODY.PEEK[1]) 13:40:57 11917 UID COPY 313150:313151 "INBOX.lister.system" 13:40:59 11918 UID STORE 313150:313151 +FLAGS.SILENT (\Deleted) 13:40:59 11919 UID EXPUNGE 313150:313151 [etc] which doesn't look right at all. One problem is of course the number of old messages which nnimap wants to inspect over and over again. Probably my own fault, since I tend to leave a number of unread messages in my INBOX for later processing. But my main problem with the above is the "BODY.PEEK[1]". For me, this is almost the same as "BODY.PEEK[]" since most of the messages I receive consist of a single body part. Yes, I'm lucky. But that means that every 'g' will download the same set of unread messages over and over again, instead of just fetching the headers. Looking at nnimap.el, I see: (defun nnimap-fetch-inbox (articles) (erase-buffer) (nnimap-wait-for-response (nnimap-send-command "UID FETCH %s %s" (nnimap-article-ranges articles) (format "(UID %s%s)" (format (if (nnimap-ver4-p) "BODY.PEEK[HEADER] BODY.PEEK" "RFC822.PEEK")) (if nnimap-split-download-body-default "[]" "[1]"))) t)) Which doesn't look right at all. Looks like nnimap-split-download-body-default selects between downloading one part or all parts. Ah, I got it. This is due to the attempt to support both nnimap-ver4-p and others. It will actually work for the non nnimap-ver4-p servers. I'm attaching a patch which fixes this for me. Bjørn