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
----
Cyrus Home Page: http://asg.web.cmu.edu/cyrus
Cyrus Wiki/FAQ: http://cyruswiki.andrew.cmu.edu
List Archives/Info: http://asg.web.cmu.edu/cyrus/mailing-list.html