| Forward to Updated design notes | Back to Fetchmail Home Page | $Date$ |
These notes are for the benefit of future hackers and maintainers. The following sections are both functional and narrative, read from beginning to end.
A direct ancestor of the fetchmail program was originally authored (under the name popclient) by Carl Harris <ceharris@mal.com>. I took over development in June 1996 and subsequently renamed the program `fetchmail' to reflect the addition of IMAP support and SMTP delivery. In early November 1996 Carl officially ended support for the last popclient versions.
Before accepting responsibility for the popclient sources from Carl, I had investigated and used and tinkered with every other UNIX remote-mail forwarder I could find, including fetchpop1.9, PopTart-0.9.3, get-mail, gwpop, pimp-1.0, pop-perl5-1.2, popc, popmail-1.6 and upop. My major goal was to get a header-rewrite feature like fetchmail's working so I wouldn't have reply problems anymore.
Despite having done a good bit of work on fetchpop1.9, when I found popclient I quickly concluded that it offered the solidest base for future development. I was convinced of this primarily by the presence of multiple-protocol support. The competition didn't do POP2/RPOP/APOP, and I was already having vague thoughts of maybe adding IMAP. (This would advance two other goals: learn IMAP and get comfortable writing TCP/IP client software.)
Until popclient 3.05 I was simply following out the implications of Carl's basic design. He already had daemon.c in the distribution, and I wanted daemon mode almost as badly as I wanted the header rewrite feature. The other things I added were bug fixes or minor extensions.
After 3.1, when I put in SMTP-forwarding support (more about this below) the nature of the project changed -- it became a carefully-thought-out attempt to render obsolete every other program in its class. The name change quickly followed.
MTAs ought to canonicalize the addresses of outgoing non-local mail so that From:, To:, Cc:, Bcc: and other address headers contain only fully qualified domain names. Failure to do so can break the reply function on many mailers. (Sendmail has an option to do this.)
This problem only becomes obvious when a reply is generated on a machine different from where the message was delivered. The two machines will have different local username spaces, potentially leading to misrouted mail.
m-a Matthias Andree <matthias.andree@gmx.de>
esr Eric S. Raymond <esr@thyrsus.com>
yangyanl Yangyan Li <yangyan.lee@gmail.com>
mojmir Mojmir Svoboda <mojmir.svoboda@2kczech.com>
bob Graham Wilson <graham@mknod.org>
rfunk Rob Funk <rfunk@funknet.net>