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