[Chandler-dev] Chandler IMAP server parcel
Brian Kirsch
bkirsch at osafoundation.org
Thu Aug 17 12:42:58 PDT 2006
Hi Travis,
So I finally got some free moments to review your IMAP Server parcel.
Overall it looks very good. I did encounter a major error on OS X.
I downloaded the parcel from SVN. Changed all references from
OSAFMessageFactory to ChandlerMessageFactory as that class has
now been renamed and placed the parcel on the PARCELPATH.
When trying to connect to the IMAP Server on port 8143 Thunderbird
said the server did not implement the IMAP4 protocol.
Doing a telnet session ie. > telnet localhost 8143
revealed that the IMAP Server is running but when sending commands to
it, the connection is immediately closed.
So for example, sending a "1 LOGIN chandler chandler" results in a
connection closed from the server instead of a login attempt.
I suggest giving your parcel a try on a OS X computer and let me
know if you see the same error I am.
Thanks,
Brian
Travis Vachon wrote:
> Hi All
>
> Continuing this thread, I've incorporated Andi's suggestions, and the
> updated module is now available via svn at
> svn+ssh://<<username>>@svn.osafoundation.org/svn/sandbox/travis/imapserver
>
>
> Also, John mentioned putting together a code review after alpha 3
> settles down, which sounds perfect. Thanks!
>
> -Travis
>
> Grant Baillie wrote:
>> Hey, Andi
>>
>> Thanks for looking at that code: Most of your comments are right on
>> the money. IMAP has restrictions on what UIDs can be, though: see below.
>>
>> On 7 Jul, 2006, at 11:00, Andi Vajda wrote:
>>
>>> ...
>>> validityUID = schema.One(
>>> schema.Integer,
>>> doc = 'The unique id number of this mailbox.',
>>> initialValue = random.randint(1000000, 9999999),
>>> ) #@# why not use a UUID ?
>>> #@# from chandlerdb.util.c import UUID()
>>> #@# initialValue = UUID()
>>> #@# also, maybe this should be in __init__() so that all
>>> mailboxes
>>> #@# don't endup with the same UID
>>> #@# (an initial value is not required, by the way)
>>
>> In IMAP, a mailbox uid (a.k.a. "UIDVALIDITY value") has to be a
>> non-zero 32-bit unsigned value. It's also supposed to be unique for
>> the mailbox at that path (i.e. deleting & recreating the mailbox
>> should give a new UID). So, a UUID (128 bits IIRC) won't work here:
>> Most implementations use a timestamp (an increasing sequence of
>> integers is also possible).
>>
>> However, as you point out, an initialValue isn't really required,
>> either, and doesn't have the right behaviour w.r.t. deletion and
>> recreation. Also, a random int could theoretically collide. Maybe the
>> best thing is to override __init__ to make validityUID a computed
>> value (like a timestamp).
>>
>> A similar comment applies to your comments about UUIDs for uidNext &
>> UIDs: these also have to be 32-bit positive unsigned ints, and have
>> the additionial requirement of increasing monotonically as messages
>> are added to the mailbox.
>>
>> --Grant
>>
>>
>> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
>>
>> Open Source Applications Foundation "chandler-dev" mailing list
>> http://lists.osafoundation.org/mailman/listinfo/chandler-dev
>
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
>
> Open Source Applications Foundation "chandler-dev" mailing list
> http://lists.osafoundation.org/mailman/listinfo/chandler-dev
--
Brian Kirsch
Internationalization Architect / Mail Service Engineer
Open Source Applications Foundation
543 Howard Street 5th Floor
San Francisco, CA 94105
http://www.osafoundation.org
More information about the chandler-dev
mailing list