[Twisted-Python] imap and noop
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