Hey all,

I'm a long-time mutt user and I'm implementing a read-only IMAP
server for public-inbox.  It's my first time writing an IMAP
server.

I'm seeing mutt still issues plain (MSN) "FETCH" for
"BODY.PEEK[HEADER.FIELDS" and it does something with MSNs for
its header cache.

This is a bit confusing to me, since mutt clearly issues a
"UID FETCH 1:$MAX (UID FLAGS)" before the MSN "FETCH",
so I know mutt is aware of UIDs.  mutt also uses "UID FETCH"
for "BODY.PEEK[]" requests...

As as server implementor, MSNs are tricky and expensive since
they require extra state/storage.  A quick look at
imap/message.c in mutt makes me think it's the same on the
client-side, too ;)

public-inbox tries to fake MSNs w/o needing any persistent or
per-connection mapping.  I got it working well enough so mutt
can use its header cache for ~95% of the messages in a ~49K
message mailbox I'm testing.

The last 5% will be the hard part for the server, I think; so
I probably won't bother.  Instead, I'm thinking it's better if
IMAP clients (mutt included) abandoned MSNs entirely for UIDs.

I'm pretty busy with public-inbox as it is; but I could be
inclined to work on a patch to rip MSN use out of mutt entirely
if I feel like taking a break from public-inbox.

I haven't implemented or even looked at the CONDSTORE/QRESYNC
stuff, yet.  Maybe there's something there...

I'm using mutt 1.10.1-2.1 on Debian, but a quick look at
mutt.git confirms MSN "FETCH" is still used.

Anyways thanks for reading.

Reply via email to