Brian Candler wrote:
(1) According to the RFCs, RETR and TOP should not make any different
change to the mailbox state.
First, there's a difference between not mentioning it and saying they
should not change the state of the mailbox. RFC 1939 doesn't mention it,
which means that implementations can do whatever they want with the state.
RFC 1460 (when LAST still existed) does mention RETR changing the state of
what messages have been seen, but doesn't say that about TOP.
(2) There is no concept of "seen flag" in the POP3 protocol at all, at
least since 1994.
Exactly. This is a bug in the protocol from fetchmail's point of view, and
the entire reason for using TOP n 99999999. Mailboxes DO have a concept
of a "seen flag" which many servers use. (See the current voice mail
example.) So far, all servers I know of that support both TOP and a seen
flag in the mailbox do not set the seen flag for TOP but do set it for
RETR.
(3) If the protocol exchange "craps out" as it says, then the server
should not update the mailbox state anyway (RFC1939 section 6).
Unfortunately experience has shown that that particular directive is not
followed enough, so fetchmail errs on the side of reliability.
(4) "marking the seen flag is the only way to prevent the message from
being re-fetched on subsequent runs" is untrue. UIDL prevents the
message from being re-fetched on subsequent runs. That's been the case
since RFC1725.
True, but writing it into an RFC doesn't make it happen. Not all servers
support UIDL, and I know ESR isn't really comfortable with the UIDL code
in fetchmail.
This might, however, be a good argument for using TOP instead of RETR if
the server supports UIDL, even if the keep flag is set.
So I can see no _valid_ justification for using "TOP n 99999999" instead
of "RETR n".
Validity is apparently in the eye of the beholder.
--
==============================| "A slice of life isn't the whole cake
Rob Funk <rfunk(_at_)funknet(_dot_)net> | One tooth will never make a full
grin"
http://www.funknet.net/rfunk | -- Chris Mars, "Stuck in Rewind"