[Twisted-Python] imap and noop
Darren Syzling
dsyzling at gmail.com
Wed Jul 8 09:32:37 MDT 2009
Jean-Paul Calderone wrote:
>
> You may want to use the IMailboxListener implementation on IMAP4Server to
> handle this case (IMAP4's complicated, I'm not sure this is the right
> direction to pursue, but it's *a* direction :).
>
I'm glad you said that I thought I was going mad, I'm mired in stateful
conversations between client and server. This started out as a simple
internal test tool. I spiked it and thought ok that's simple I can
read/view messages, the code looked straight forward. Store some state
for each mailbox pickle to a file for simplicity. But then I got deeper
into the whole delete to trash (which is in fact copy) and that's when
it all went horribly wrong. Thunderbird can start multiple sessions
which creates multiple mailbox instances server side and that throws the
whole state management issue up in the air. So I went stateless and
re-read the pickle file on each mailbox entry point - ugly but it
improved consistency and made the whole thing easier to reason. But the
noop has thrown me because this may expect me to respond to the
individual session (mailbox instance) - something you're alluding to
below about tracking the IMAP4Server protocol.
> The modeChanged, flagsChanged, and newMessages methods on IMAP4Server are
> intended for use by your mailbox implementation. In this case, it sounds
> like you want to have your trash mailbox call newMessages when the messages
> are copied into it. This requires a bit of legwork on your part, keeping
> track of the IMAP4Server protocol (or possibly more than one!) from the
> mailbox code, but the result should be that when Thunderbird sends those
> NOOPs, the server responds with one or both of EXISTS or RECENT (untagged).
>
Thanks I'll have a poke around and see how this looks. I really ought to
cap my time on this, it was only an internal test helper. I may end up
telling my test users - 'ah yeah well, just close Thunderbird, restart
and sign in and those messages will magically appear.' Although knowing
me it will niggle at me until I've solved it.
Darren
More information about the Twisted-Python
mailing list