problem with pop3d, messages can be downloaded multiple times
Ken Murchison
murch at andrew.cmu.edu
Wed Dec 7 20:57:10 EST 2005
Joseph Brennan wrote:
> Some more on this.
>
> When a pop client does "leave on server", it has to compare what's on
> the server with a database it maintains locally. The key is something
> called UIDL, a unique identifier per message maintained by the server.
> The client sends a UIDL command and gets back a list of UIDLs.
>
> This report <http://www.irbs.net/internet/info-cyrus/0402/0489.html>
> alludes to Outlook 2002 not handling the case where UIDLs are of varying
> length. However they are allowed to be varying length. The standard
> (RFC 1939) allows length of "one to 70 characters" and the example given
> in RFC 1939 actually shows two UIDLs of different lengths:
>
> C: UIDL
> S: +OK
> S: 1 whqtswO00WBw418f9t5JxYwZ
> S: 2 QhdPYR:00WBw1Ph7x7
>
> In the response each line has message number, space, UIDL.
>
> U Wash seems to give UIDLs always of the same length (this is from
> our U Wash pop3 server):
>
> uidl
> +OK Unique-ID listing follows
> 1 4304a6fc00000001
> 2 4304a6fc00000002
> 3 4304a6fc00000003
> 4 4304a6fc00000004
> 5 4304a6fc00000005
> 6 4304a6fc00000006
> 7 4304a6fc00000007
> 8 4304a6fc00000008
> 9 4304a6fc00000009
> 10 4304a6fc0000000a
> 11 4304a6fc0000000b
> 12 4304a6fc0000000c
>
> Cyrus gives UIDLs that can vary in length (our Cyrus server):
>
> uidl
> +OK unique-id listing follows
> 1 1125515674.1
> 2 1125515674.2
> 3 1125515674.3
> 4 1125515674.4
> 5 1125515674.5
> 6 1125515674.6
> 7 1125515674.7
> 8 1125515674.8
> 9 1125515674.9
> 10 1125515674.10
> 11 1125515674.11
> 12 1125515674.13
>
> So if Outlook cannot handle varying length, it breaks here, but the
> standard definitely allows varying length.
If you can determine that its just a problem with varying length, I can
change the output so that the UIDVALIDITY.UID format that we use for
UIDL is padded with zeros to make it a fixed length (something like
%010u.%010u).
I don't have the time to determine if this truely is the problem. I'm
tired of working around client bugs caused by programmers either looking
at protocol dumps or only programming against one server rather than
reading specs.
Cyrus' UIDL output is definitely compliant with RFC 1939.
Ironically, we changed the format to be UIDVALIDITY.UID to work around
another Outlook bug (as reported by a former Cyrus developer).
--
Kenneth Murchison
Systems Programmer
Carnegie Mellon University
More information about the Info-cyrus
mailing list