[Twisted-Python] imap and noop

Darren Syzling dsyzling at gmail.com
Wed Jul 8 10:33:49 EDT 2009

I'm new to twisted and was experimenting trying to create an imap server 
based on the example within Twisted Network Programming Essentials. My 
test client is Thunderbird.

I'm wondering if anyone has had any experience handling the 'noop' 
command here's my scenario:
- I have two unread messages in a folder, I open thunderbird, select 
this folder and then select trash - trash has no messages.
- Each folder is selected and fetched with a uid:*
- My server correctly responds.
- Each time I now select the trash folder since it didn't have any 
messages to start with Thunderbird continues to send noops. I think it's 
waiting for my server to respond with exists or recent.
- Ok so I continue, I read and delete the two messages in my folder, 
Thunderbird issues copy commands, I dutifully flag the messages in the 
folder as \Deleted and the messages are added (via addMessage) to the 
Trash folder with the correct flags - \Seen.
- But now if I select the Trash folder thunderbird just sends noop - 
again it looks like it wants the server to send back exists or recent to 
indicate there are now messages in that folder - even though it's just 
copied stuff to the folder.

If in the above scenario I don't select the trash folder first and 
messages are deleted everything works fine - but in that case the client 
is sending fetch uid:*. It seems that if Thunderbird detects no messages 
in a folder it will noop until the server responds with an update.

Anyone seen or worked around this? Are there hooks in the imap framework 
to allow a mailbox or my mailserver to respond to noops? I don't appear 
to have any mailbox listeners subscribed and I tried overriding the noop 
for my derived IMAP4Server protocol derived class - but to no avail.


More information about the Twisted-Python mailing list