Features To Consider * Generate bounce messages when delivery is refused. See RFC1891, RFC1892. * Use the libmd functions for md5 under Free BSD? (Low priority.) * More log levels? * Allow an explicit "append" option to specify what rewrite appends? (For when user's pop3 host isn't the same as his SMTP host.) * Allow -c -F to work to flush messages without retrieval. * Read from /etc/fetchmailrc before ~/.fetchmailrc? * Do is_host_alias checks by comparing IP addresses rather than names? * Make the antispam response configurable. Other TO-DO items: * Get with Craig Metz to write a draft RFC on RFC1938 support in IMAP. Release Notes: ------------------------------------------------------------------------------ fetchmail-4.3.7 () * Corrected OTP support from Craig Metz. * Fixed a minor bug in the IMAP re-polling logic. * Thomas Pitre's extensive changes to multidrop: - Seek for the true sender of a mail which is not necessarily in the From: header. (see comments in the code for more explicit details). This one is particularly important with list distributions... - Respect the Resent-To/-Cc/-Bcc precedence over the To/Cc/Bcc headers for recipient delivery. So avoid resending a message to a person who just resent a mail to some other addresses. - Fix a bug in find_server_names() wich caused recipient addresses to figure twice in the recipient address list. - Modified parse_received() to let full adress from the Received header to pass through so local domains can be used (now has same policy as in the find_server_names() function). - Fixed memory leaks from readheaders(). - Made some strcmp() be strcasecmp() as it should be because it didn't work correctly in some cases. - Modified reply_hack() to meet the needs of above modifications. Thomas says these changes have been tested for two weeks in a production multidrop environment. * Doug Muth's runfetchmail version 1.1. * Minor port patches from Philippe De Muyter. * Patch by Chun-Chung Chen to handle quotes in .netrc * IPv6 and IPSEC support patches from Craig Metz. fetchmail-4.3.6 (Fri Jan 23 00:25:57 EST 1998) * Improved RPM packaging with correct grouping and an icon. * Fixed another minor bug in handling of `expunge 0'. * Kent Robotti sent a new version of fetchsetup. * Scott Burson's tweak to allow USER=postmaster to work. * Byrial Jensen's fix to handle NULs in mail correctly. * Vojtech Pavlik's fix for simultaneous %F and %T. * IMAP code can now deal with untagged responses during CAPABILITY (at least one server issues the motd in a bunch of "* OK {ALERT]" lines in response to the first command after connecting.) * New --smtpaddress option from Henning P. Schmiedehausen allows you to force the hostname used in MAIL FROM lines. * If link can't find the bind library, force `no dns' on all connections. * Change name of ordinary-user lockfile so .fetchmail can be used as a logging directory. * Close pipe to MDA when we get a nonresponse timeout. This should prevent MDA zombies from piling up when we have errors. * Treat Netscape's "X-Mozilla-Status" lines like "Status:" lines. * More informative error messages on timeout. There are 269 people on fetchmail-friends and 123 on fetchmail-announce. fetchmail-4.3.5 (Mon Dec 15 06:07:08 EST 1997) * Added Kent Robotti's fetchsetup configuration script. * Corrected buggy handling of `expunge 0'. * RFC 1731 GSSAPI support from Brendan Cully . * We no longer reveal the remotename in fetchmail's Received line, as this may be sensitive information. There are 264 people on fetchmail-friends and 106 on fetchmail-announce. fetchmail-4.3.4 (Fri Dec 5 12:39:31 EST 1997) * Yet another attempt on the Compuserve RPA moving target. * Fix ETRN code to poll for the fetchmail host if there's no -S option. * Allow `--quit' to be given with other options to shut down a running daemon before anything else gets done (suggested by Greg Stark). * Added Gordon Matzigkeit's warning about -F to the man page. * Improved POP3 protocol-synchronization error messages. * Allow fetchmail to proceed even if DNS is down or unavailable, if all multidrop entries have `no dns'. * Added Robert de Bath's "fetchspool" script to contrib. * Use strftime(3) to gen a proper RFC822 date into fetchmail's Received header. There are 272 people on fetchmail-friends and 96 on fetchmail-announce. fetchmail-4.3.3 (Sat Nov 22 01:51:41 EST 1997) * Robert Hardy 's patch to use IMAP EXAMINE in check mode. * Alexander Kourakos's patch for cleaner handling of group addresses. * Fixed expansion of MDA %-escapes (thanks Wez Furlong ). * Deal with the possibility that IMAP NOOP issued on rescan might not get an EXISTS response (thanks to Jonathan T. Agnew ). * contrib/runfetchmail copyright now meets Debian Free Software Guidelines. * RPA code is changed to track a change I'm told CompuServe made on the weekend of November 15. * Set %p 3000 in the lexer source to fix the Solaris 2.4 build. * Changed the summary status message emitted by a foreground run. The old user@host produced odd results under some virtual-domain setups, so it's "user at host" now. There are 281 people on fetchmail-friends and 83 on fetchmail-announce. fetchmail-4.3.2 (Wed Oct 22 20:30:14 EDT 1997) * More slow-UIDL patches from Wolfgang Wander. * Yet another attempt to fix IMAP-K4. This one, my beta-testers say, works. * Only re-poll on actual dispatches (not just fetches). * Monitor patch for newer kernels by Keith Rohrer . * Handle repolling multiple folders correctly. There are 261 people on fetchmail-friends and 64 on fetchmail-announce. fetchmail-4.3.1 (Mon Oct 13 17:12:40 EDT 1997) * Minor portation fixes for early AIX versions and NextSTEP. * Fixed a bad interaction between --limit and the repoll feature. * = is now optional in global options. * Code for parsing Received headers now strips out RFC822 routes. * Fixed processing of -S/-r arguments so giving a comma-separated list works. * Don't query for the fetchmail host machine by default in ETRN mode. * Added skip prefix clause on `envelope' option * Don't use TCP/IP for DNS queries, it interacts badly with diald. * Allow usernames up to 40 chars long a la RFC1939. * Fixed IMAP-K4 authorization sequence. * Added --invisible option. Note: you can now either make fetchmail generate a Received header (the default) *or* spoof your listener into thinking fetchmail connected from the mailserver machine, *but not both*. There are 269 people on fetchmail-friends and 40 on fetchmail-announce. ------------------------------------------------------------------------------ fetchmail-4.3.0 (Mon Oct 6 16:44:38 EDT 1997) * Rearranged IMAP authentication so CAPABILITY is done first, * FAQ update, including a major new item on how to protect your password. * Added code to have %F in an MDA string expand to the From address * Added code to prevent buffer spamming via the MDA %T/%s escape. * Luca Olivetti's --qvirtual option patch for qmail users. * Fixed a bug in the code that was supposed to suppress expansion of RFC822 groupnames. (Thanks to Santiago Vila Doncel for pointing this out) * It's now possible to explicitly configure out POP3, IMAP, or ETRN. * We no longer get the hostname for address rewrites and log messages from the server greeting line, instead it's the server's canonical DNS name. * Improved UID handling for RFC1725 POP3 servers coping with a line hit. * Created fetchmail-announce list. There are 281 people on fetchmail-friends and 8 on fetchmail-announce. fetchmail-4.2.9 (Tue Sep 30 18:21:35 EDT 1997) * Don't byte-stuff when writing to an MDA. * IMAP mode now does smart re-polling, eliminating connection/authentication overhead when messages are being delivered to the server mailbox while the poll is in progress. * Fetchmail's synthetic Received line is now inserted just before the first existing Received line and *after* any From headers shipped up by the server. This fixes odd problems with some sensitive sendmails. * Compuserve RPA authentication support. * Fixed a bug that screwed up message size queries on some IMAP2bis servers. There are 285 people on the fetchmail-friends list. fetchmail-4.2.8 (Sun Sep 28 16:59:59 EDT 1997) * Fixed a bug in POP2 compilation introduced sometime after 4.0.8. * Only emit length-mismatch messages in verbose mode. * POP3 lock busy error is now treated as authorization failure (Greg Stark) * Kerberos error is now treated as authorization failure (Greg Stark) * New --expunge option allows you to better control resource use under IMAP. There are 285 people on the fetchmail-friends list. fetchmail-4.2.7 (Fri Sep 26 11:21:15 EDT 1997) * Full OTP support with Craig Metz's libopie 2.32 or higher. * Major upgrade of FAQ with a procedure for diagnosing mangled-mail problems. * Emit fetchmail's Received with stuffline so stripcr/forcecr are implemented. There are 284 people on the fetchmail-friends list. fetchmail-4.2.6 (Wed Sep 24 17:37:13 EDT 1997) * Prevent bad matches on Received line due to hostnames ending "for" and "by". * Improved bug-tracking header, now also emitted when using an MDA. * Cope with Post Office/NT's brain-dead habit of prepending bogus LIST items with a -1 length. * Return of the size consistency check; this time it works for POP3 too. There are 283 people on the fetchmail-friends list. fetchmail-4.2.5 (Mon Sep 22 23:38:46 EDT 1997) * Greg Stark's patch for better autoconfiguration on mixed libc5/libc6 systems. * We no longer mess with CFLAGS/LDFLAGS to get Kerberos support linked. * fetchmail now generates its own Received header for bug-tracking. * Improved handling of IMAP4rev1 CAPABILITY response. * Better code to avoid buffer overruns on long To/Cc/Bcc headers. There are 284 people on the fetchmail-friends list. fetchmail-4.2.4 (Fri Sep 19 19:48:50 EDT 1997) * Small compilation cleanups, thanks to Florian laRoche. * Removed the length consistency check, it mysteriously fails under POP3. * Added Alexander Kourakos's patch to improve address rewriting. * Added Wilfried Teiken's patch allowing the password to be piped in. There are 287 people on the fetchmail-friends list. fetchmail-4.2.3 (Thu Sep 18 16:19:10 EDT 1997) * Fix a bug in IMAP message-size retrieval. * Yet another try at getting the size-consistency check right. There are 286 people on the fetchmail-friends list. fetchmail-4.2.2 (Wed Sep 17 22:56:05 EDT 1997) * Re-enable --limit under IMAP (bug introduced in 4.2.0). * Autoconfigure root-mode PID-file directory to /etc if no /var/run. * ETRN mode no longer tries to flush queue for "localhost". * Introduced new DNS error return 11 to indicate DNS failure at startup. * More portation tweaks for unusual Unixes. * Make sure any X-Fetchmail-Error: line is properly terminated. There are 289 people on the fetchmail-friends list. fetchmail-4.2.1 (Tue Sep 16 12:26:57 EDT 1997) * Type and inclusion changes to eliminate warnings on weird Unixes. * Detect and warn about servers like M$ Exchange that get lengths wrong. There are 285 people on the fetchmail-friends list. ------------------------------------------------------------------------------ fetchmail-4.2.0 (Sun Sep 14 16:31:58 EDT 1997) * Driver code changed so delimited protocols don't rely on message lengths being correct (this means #@!%^# brain-dead Microsoft Exchange will work). There are 285 people on the fetchmail-friends list. fetchmail-4.1.8 (Thu Sep 11 16:20:15 EDT 1997) * Fix nasty single-char-adddress bug in multidrop mode. * Fixed cosmetic bug in ETRN mode -v output! * Added warning about broken Microsoft Exchange server to FAQ. * Will Renkel supplied an implementation of inet_aton(). There are 286 people on the fetchmail-friends list. fetchmail-4.1.7 (Tue Sep 9 16:55:04 EDT 1997) * Now works with Cyrus IMAP server. * Will build OK even if local environment lacks strstr(3). There are 283 people on the fetchmail-friends list. fetchmail-4.1.6 (Sat Sep 6 13:11:59 EDT 1997) * Correct autoconfiguration machinery for Amiga (thanks to Steffen Opel). * Append hostname to fallback address in multidrop mode correctly. * Suppress append of smtphost name to RCPT TO address when it has a @ already. There are 285 people on the fetchmail-friends list. fetchmail-4.1.5 (Fri Sep 5 15:06:13 EDT 1997) * Prevent core dumps on messages with no destination lines. * Decorate RCPT TO names with smtphost. * Have AUTO mode croak on SMTP error. * Fall back on localhost if smtphost is defaulted and `hostname` is not DNS-accessible. There are 286 people on the fetchmail-friends list. fetchmail-4.1.4 (Thu Sep 4 15:41:05 EDT 1997) * Autoconfigure correctly for systems that lack inet_aton(). *
The code in the fetchmail distribution is Copyright 1997 by Eric S. Raymond.
Portions are also copyrighted by Carl Harris, 1993 and 1995.  Copyright
retained for the purpose of protecting free redistribution of source.

The MD5 support is copyright by RSA Data Security, Inc.  See the header
comment of the md5.c module for license terms.

			NO-VIRUS CLAUSE

The intent of this license is to protect free redistribution and reuse of the
source of the licensed distribution, not to prejudice the authorship
rights of programmers of other code to control their original inventions.

No portion of this license is to be interpreted as forbidding the reuse of
this code or its constituent parts, algorithms, or inventions in commercial
products.

Nor shall such inclusion be construed to require the GPLing or disclosure of
any portions of said commercial products other than those falling under
the copyright of the licensed distribution.

-------------------------------------------------------------------------------
		    GNU GENERAL PUBLIC LICENSE
		       Version 2, June 1991

 Copyright (C) 1989, 1991 Free Software Foundation, Inc.
                          675 Mass Ave, Cambridge, MA 02139, USA
 Everyone is permitted to copy and distribute verbatim copies
 of this license document, but changing it is not allowed.

			    Preamble

  The licenses for most software are designed to take away your
freedom to share and change it.  By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users.  This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it.  (Some other Free Software Foundation software is covered by
the GNU Library General Public License instead.)  You can apply it to
your programs, too.

  When we speak of free software, we are referring to freedom, not
price.  Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.

  To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.

  For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have.  You must make sure that they, too, receive or can get the
source code.  And you must show them these terms so they know their
rights.

  We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.

  Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software.  If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.

  Finally, any free program is threatened constantly by software
patents.  We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary.  To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.

  The precise terms and conditions for copying, distribution and
modification follow.

		    GNU GENERAL PUBLIC LICENSE
   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION

  0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License.  The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language.  (Hereinafter, translation is included without limitation in
the term "modification".)  Each licensee is addressed as "you".

Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope.  The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.

  1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.

You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.

  2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:

    a) You must cause the modified files to carry prominent notices
    stating that you changed the files and the date of any change.

    b) You must cause any work that you distribute or publish, that in
    whole or in part contains or is derived from the Program or any
    part thereof, to be licensed as a whole at no charge to all third
    parties under the terms of this License.

    c) If the modified program normally reads commands interactively
    when run, you must cause it, when started running for such
    interactive use in the most ordinary way, to print or display an
    announcement including an appropriate copyright notice and a
    notice that there is no warranty (or else, saying that you provide
    a warranty) and that users may redistribute the program under
    these conditions, and telling the user how to view a copy of this
    License.  (Exception: if the Program itself is interactive but
    does not normally print such an announcement, your work based on
    the Program is not required to print an announcement.)

These requirements apply to the modified work as a whole.  If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works.  But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.

Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.

In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.

  3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:

    a) Accompany it with the complete corresponding machine-readable
    source code, which must be distributed under the terms of Sections
    1 and 2 above on a medium customarily used for software interchange; or,

    b) Accompany it with a written offer, valid for at least three
    years, to give any third party, for a charge no more than your
    cost of physically performing source distribution, a complete
    machine-readable copy of the corresponding source code, to be
    distributed under the terms of Sections 1 and 2 above on a medium
    customarily used for software interchange; or,

    c) Accompany it with the information you received as to the offer
    to distribute corresponding source code.  (This alternative is
    allowed only for noncommercial distribution and only if you
    received the program in object code or executable form with such
    an offer, in accord with Subsection b above.)

The source code for a work means the preferred form of the work for
making modifications to it.  For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable.  However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.

If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.

  4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License.  Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.

  5. You are not required to accept this License, since you have not
signed it.  However, nothing else grants you permission to modify or
distribute the Program or its derivative works.  These actions are
prohibited by law if you do not accept this License.  Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.

  6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions.  You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.

  7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License.  If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all.  For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.

If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.

It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices.  Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.

This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.

  8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded.  In such case, this License incorporates
the limitation as if written in the body of this License.

  9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time.  Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.

Each version is given a distinguishing version number.  If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation.  If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.

  10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission.  For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this.  Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.

			    NO WARRANTY

  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.

  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
-------------------------------------------------------------------------------
ncrease. * Almost all error messages that might be emitted in daemon mode now go through the error() subroutine. This is a first step towards allowing a daemon-mode fetchmail to use syslog. * SIGUSR1 is now used for wakeup rather than SIGHUP. This eliminates any possible confusion about fetchmail's behavior at logout time. * Received line parsing for envelope addresses now matches MX as well as canonical DNS addresses, making multidrop routing slightly more reliable. * Added --fetchlimit option to limit number of messages fetched in a single poll. bugs -- * Fixed a FreeBSD compilation glitch involving SIGCLD (thanks to Masafumi NAKANE). * Added some port patches for NEXTSTEP. * SIGCHLD used everywhere now, not SIGCLD (this was strictly a cosmetic bug). * Prevent occasional hangs when fetchmail was terminated by signal. There are 168 people on the fetchmail-friends list. ------------------------------------------------------------------------------ fetchmail-2.2 (Mon Dec 9 00:15:01 EST 1996): features -- * If SMTP returns 571 (unsolicited mail refused) to a MAIL FROM, the address is excluded by the local sendmail's spam filter. Drop the mail. (This is the only circumstance in which mail is thrown away.) * The header your mailserver uses to convey envelope addresses is no longer wired to `X-Envelope-Header'. You can now specify it with the `envelope' option in .fetchmailrc. (This header is not RFC822 standard, and we have a report of an ISP using X-Frontier-To). bugs -- * Fixed a startup-time core dump introduced by 2.1's aka-list feature. * Fixed a bug in non-implicit mode (poll specified host), also due to aka. * Various minor portability fixes for Suns. Adding #include in fetchmail.c was the most significant one. * Avoid using -lresolv when possible, some Linux versions are badly broken. * Fix error in MX record handling that was causing multidrop problems. * Disable daemon SIGCHLD handler while an MDA is running, to avoid snafus. Thanks to Dave Bodenstab for spotting this obscure bug. 156 people on the contact list. ------------------------------------------------------------------------------ fetchmail-2.1 (Thu Nov 28 11:07:48 EST 1996): features -- * Added FAQ file. * Try to pass envelope From to the listener so that logging and procmail processing works right. If that fails, fall back on calling-user. * Added `set logfile = ' option to rc syntax. * We now use X-Envelope-To headers and parse the Received lines. If X-Envelope-To is found, OK; otherwise we look for a `Received for' line; either is treated as a true envelope address. If neither of these are found we go to the To/Cc/Bcc header addresses. * Added `*' as a wildcard option for multidrop to ... here. This will allow names to be local names to be passed through from a multi-drop box on a mailserver * Added an `aka' option to allow users to declare mailserver aliases at start of run, so DNS does less work. During a run, cache host matches on the aka list so no potential alias has to be DNS-checked more than once. A server being polled explicitly may be referred to by any of its aliaseses. bugs -- * Nalin Dahyabhai's fix patch for MIT Kerberos V4 support. * Fixed a fencepost error in the APOP code that was causing a core dump. * Skip flag wasn't getting reset on poll hosts following a skipped one. * Include remote name in saved UID mappings so multiple POP accounts on the same server won't get their UIDs confused. 138 people on the contact list. ------------------------------------------------------------------------------ fetchmail-2.0 (Mon Nov 18 00:32:17 EST 1996): * Fix typo in setitimer call setup that caused obscure bugs under FreeBSD. * Accept Apparently-To if there is no To header. * Include Cameron McPherson's patch for handling multi-line SMTP responses. * Don't try to feed listener the header From any more. pl 1.9.9 (Mon Nov 11 10:40:14 EST 1996): * Accept Resent-From & Apparently-From a la RFC822. * Include file fixes for Solaris 2.5 and FreeBSD 2.2. * Improved error notification on SMTP and no-matching-local-address errors. * Delivery to multidrop mailboxes now always aborts on DNS errors. * Batch limit option prevents long delivery delays on smail/qmail. * Configuration now handles -lresolv and non-Linux bind libraries correctly. pl 1.9.8 (Wed Nov 6 16:40:34 EST 1996): * Don't append spurious NUL to the headers, qmail actually notices it. * Fatal bug in multidrop code fixed. * Fail cleanly, instead of core-dumping, on mail lacking an RFC822 From line. * Don't try to keep the SMTP socket open across poll cycles. pl 1.9.7 (Fri Nov 1 10:02:34 EST 1996): * %s is back. Seems some popular MDAs actually choke on name arguments. * We can handle responses longer than the socket atomic read length now. pl 1.9.6 (Thu Oct 31 00:07:23 EST 1996): * Make rewrite option handle multiple comma-separated local names correctly. * Fix yet another fatal error in MDA argument list construction. * Reset timeout every time input is received. * Correct localname detection when --norewrite is on. pl 1.9.5 (Tue Oct 29 20:07:41 EST 1996): * Added -N, --nodetach option for debugging purposes. * Use interval timers for poll-interval sleep and nonresponse timeout. * fetchmail -q no longer parses the configuration file. * Configuration file grammar is slightly cleaned up and improved. pl 1.9.4 (Mon Oct 28 20:58:48 EST 1994): * Correct status interpretation in closemailpipe() (thanks to Neil Harkins). * Tweak SMTP forwarding to only open one listener per SMTP host in daemon mode. pl 1.9.3 (Sun Oct 27 22:35:33 EST 1996): * Handle nested parens in RFC822 comments. * More gcc -Wall cleanup. * Improved installation docs. * Don't query DNS on startup unless needed for Kerberos or multidrop mailboxes. pl 1.9.2 (Sun Oct 27 01:10:30 EST 1996): * Fix initialization-time core dump when running as root * Fix fatal error in MDA argument-list construction. 118 people on the contact list. ------------------------------------------------------------------------------ fetchmail-1.9 (Fri Oct 25 23:02:26 EDT 1996): We've hit the century mark -- exactly 100 people on the fetchmail-friends list. features -- * FEATURE FREEZE IS NOW IN EFFECT! No new features until after 2.0. Thanks to everybody who contributed ideas and criticism. * It is now possible to specify multiple local recipients by giving a list of names following "to" or "is". Each local recipient is checked for in the To:, Cc: and Bcc: headers of each message; if a match is found, the message is sent to that local recipient. This makes it possible to do mailing lists and multidrop mailboxes. See the man page for details (and note the caveat in the BUGS AND KNOWN PROBLEMS section). * It is possible to specify a size limit for retrieved messages. I resisted doing this because I don't want fetchmail to be in the filtering game, but too many Europeans begged for it because their telecomms monopolies are price-gouging them on per-second phone charges. I will ignore, or be extremely rude to, anyone who takes this feature as a license to beg me for kill files or any other form of content-based filtering. Use procmail on your server if you want that. * If you use an MDA, the internal changes to support multi-drop mailboxes require that you *remove* the %s at the end of your MDA string. Local delivery addresses will be appended to the end of the command in the obvious way. * The first message from a query now includes the number of old messages when this can be determined (that is not under POP2). * POP3 UID support really works now. I make rude noises at the POP3 mavens who forced us to this with RFC1725, but thank Al Longyear for fixing and verifying my slightly buggy implementation. * Kerberos V4 support ditto. Thanks to Chris Hanson for this feature. * When there's a daemon fetchmail in background, running fetchmail in foreground without --quit now tries to wake the daemon and force it to poll immediately. * Add option to set server nonresponse timeout. * Password is no longer displayed in verbose mode. * You may use C-like escapes to embed non-printables in passwords and other strings. Fetchmail -V will display them in a printable form. * Program now tries to set itself to the ID of the local user before running an MDA, and reset to root afterwards. This will work on any system with seteuid(2), including Linux and the BSDs. bugs -- * Default user name to deliver to is now the calling user, unless program is running as root in which case it is the remote user name (default can be overridden with an `is' or `to' declaration). In versions up to 1.7 it was the calling user; in 1.8 the remote user ID. This created some confusion. * Accept RFC822 headers with a tab after the colon. * You now see a "skipping" message for each message not retrieved. * --keep no longer overrides --flush. * Rewrite "To: jrh (J. Random Hacker)" correctly. * Find "nnn octets" anywhere on a POP3 server's RETR response line. * Fixed various bugs in --check. It now reports PS_SUCCESS only if there is new mail waiting. * Under Linux, if fetchmail is run in daemon mode with the network inaccessible, each poll leaves a socket allocated but in CLOSE state (this is visible in netstat(1)'s output). These sockets aren't garbage-collected until fetchmail exits. When whatever kernel table is involved fills up, fetchmail can no longer run even if the network is up. To avoid this, fetchmail now commits seppuku after some number of unsuccessful socket opens. * Don't try using FLAGS.SILENT, some allegedly IMAP2bis servers seem to choke on it. ------------------------------------------------------------------------------ fetchmail-1.8 (Fri Oct 11 15:08:10 EDT 1996): features -- * Use kill(0, pid) to make lock handling a bit smarter (thanks to Johan Vromans for the suggestion). * Arrange for timeout of client after 5 minutes if connection to server is dropped (thanks to Gaspar Sinai ). * All pretensions to RPOP support have been dropped. Yes, this is a feature, RPOP is very vulnerable to spoofing! Use APOP instead. * Normal start-of-read message now displays the byte (excuse me, "octet") size of the message. Yes, 3schwend, you can stop noodging me now :-). * Normal progress notifications now take only 1 line per message, not 2. * Linux packagers: building fetchmail now generates an RPM specfile for it. * Kerberos V4 support via KPOP protocol (thanks to Chris Hanson). * New --check option for asking server whether there is mail without actually retrieving or deleting it. * UID support is back by popular demand. Bletch. * Permit spaces in IMAP passwords (ship them as quoted strings). bugs -- * Fix buggy getopt specification of P and p options. * Fix uninitialized-variable bug that was hanging second IMAP queries. ------------------------------------------------------------------------------ fetchmail-1.7 (Tue Oct 8 11:32:44 EDT 1996): features -- * Noise words for rcfile syntax make English-like syntax possible. * Make configure more GNUish; it understands --prefix and other standard autoconf options now (see INSTALL for details) * Better documentation of the new .fetchmailrc extensions and the slightly stricter rules for ordering options. * Expanded installation instructions including how to test for correct operation without losing mail to misconfigured MDAs, alias loops, etc. bugs -- * You may have to rearrange the order of options in your .fetchmailrc. The grammar for the new multiple-user syntax requires that server options (protocol and port) come before any user options. * Fixed core dump bug that was screwing configurations with no .fetchmailrc. * Fixed broken 'p' option. * `norewrite' and `rewrite' in .fetchrc were the inverses of what they should have been (but the rewrite default was set correctly). ------------------------------------------------------------------------------ fetchmail-1.6 (Sun Oct 6 20:55:09 EDT 1996): features -- * You can now have multiple entries for the same server but different users, and the right thing will happen (each user's mailbox will be queried). Even better, you can now specify multiple users in a single server entry. * Restore --mda, seems some people either can't run a port 25 listener due to bizarre dynamic-SLIP problems, or won't for security reasons. * When delivering to an MDA, print error and die (before deleting the message!) if the MDA returns nonzero status. Better safe than sorry. * If fetchmail is called through a link named `popclient' it will look in ~/.poprc for a run control file. Unless that file includes the deleted options limit and localfolder this should actually work. bug fixes -- * Makefile fixes for correct linking on Sparcs and avoiding duplication of the md5 files (leading to harmless install-time error messages). * Fix a bonehead coding error in pop3_delete() that was masked by the Intel register architecture. *blush* Thanks to Jay Anderson . * Fix bug that prevented SMTP from being specified on the defaults line. * Allow program to generate correct lockfiles when USER is undefined (i.e. under zsh). * Allow program to run with no .fetchmailrc file again. ------------------------------------------------------------------------------ fetchmail-1.5 (Thu Oct 3 04:35:15 EDT 1996): * Naturally, my decision to announce 1.4 on comp.os.linux.announce immediately caused the code to manifest its first real bug -- a core dump when the "From:" header is spelled "from:" (all lower case). Fixed. * Update and expansion of NOTES. * The --all and --flush flag validity checks move to driver.c. ------------------------------------------------------------------------------ fetchmail-1.4 (Wed Oct 2 09:22:37 1996): * More man page improvements. * Lexer changes to work around bison's "feature" of silently ignoring 0-value tokens (caused options nokeep, norewrite, nofetchall, noskip to be no-ops). ------------------------------------------------------------------------------ fetchmail-1.3 (Tue Oct 1 05:49:49 1996): * Significant man page improvements. * Escapes for newlines in .fetchmailrc are now optional. * Kill off -2 and -3 options, redundant popclient remnants. * IMAP code simplification and robustification. Use FETCH FLAGS to find seen messages. Code should now work even if unseen messages are interspersed with seen ones, and even if messages are appended to the mailbox during the run. ------------------------------------------------------------------------------ fetchmail-1.2 (Sat Sep 28 15:40:50 EDT 1996): * The great option massacre. Remove --stdout, --limit, --local, --mda. We get a significant code and complexity shrinkage this way (a lot of the configuration machinery goes away too). These things are your MDA's job. (This also kills off the lose-mail-on-disk-full bug, which I've never seen but two users reported.) * Link APOP support by default. * Fix embarrassing Makefile bug. ------------------------------------------------------------------------------ fetchmail-1.1 (Sat Sep 28 09:21:10 EDT 1996): * In POP3, don't send LAST if STAT shows count of waiting messages to be zero. * Document APOP better, we know it works now. * Lose the .fetchids file and give up on POP3 UIDs, they're a dead loss. ------------------------------------------------------------------------------ fetchmail-1.0 (Thu Sep 26 11:59:38 EDT 1996): * SMTP forwarding and header-rewrite features work with POP2 now. * Stricter RFC822 conformance, so SMTP to qmail works. Thanks to Cameron MacPherson for these changes. * The program is quieter but more informative now (suppress printing of server greeting message; add the server host being queried to the message count information line). * Add `skip' option to make it easier to set up test entries. * Name change (it ain't just for POP any more). ============================================================================== popclient-3.2 (Mon Sep 23 13:29:46 EDT 1996): * RPOP support (coded at a user's request but untested). * Ported to QNX (see the Makefile). * Add code by Michael Schwendt <3schwend@informatik.uni-hamburg.de> for improved sizeticker. * Improved RFC822 parsing (thanks to Rob Funk). * Move the per-user lockfile to /tmp so it gets cleared at reboot time. * Warn users that running concurrent instances of popclient is a bad idea. * Try USER and HOME to set defaults before going to the password file. This should work better in Sun NIS environments. popclient-3.1 (Thu Sep 12 15:45:25 EDT 1996): * MDA arguments are now dumped when using the -V option. * Sendmail delivery from background seems to work now. * We have IMAP2bis/IMAP4 support. * Code now autoprobes for a POP3, IMAP, or POP2 server if no protocol is specified. * SMTP forwarding support. Thanks to Harry Hochheiser for this simple but clever idea. It's now the default delivery mode. * If no UNIX From line is found, popclient will now synthesize a correct line from the RFC822 From line. * It is now possible to specify the host TCP/IP port number to connect to. popclient-3.05 (Thu Aug 22 22:59:04 EDT 1996): * Experimental support for RFC1725-compliant POP servers with the UIDL command and without LAST. popclient-3.04 (Wed Aug 21 00:22:44 EDT 1996): * Logfile option works. popclient-3.03: * Minor bug fixes for password querying and redirection to stdout. popclient-3.02 (Fri Jul 19 11:37:56 EDT 1996): * Correct buggy processing of nokeep/noflush/fetchall. * Fix buggy -mda option processing. * Added -N/--norewrite option. * Delivery via sendmail now works in non-daemon mode. popclient-3.01 (Mon Jul 1 13:33:51 EDT 1996): * Fixed a lexical analyzer bug in quoted-string processing. * Fixed a bug in dump_options that caused username to be displayed incorrectly. * The lock assertion code was in the wrong place relative to the daemonize() call. popclient-3.0 (Fri Jun 28 11:33:34 EDT 1996): Eric S. Raymond hacked extensively on 3.0b6 and took over the package with the consent of Carl Harris, the original implementor. Some of the 3.0 feature additions were inspired by Sean Oh's fetchpop 1.8 code, and a few use code directly lifted from fetchpop. Here are my (Eric's) change notes: CONFIGURATION AND BUILDING * The autoconfigure script incorrectly assumed that all Linuxes use /usr/bin/deliver. Under Linux it now checks for both /usr/bin/delivermail and /bin/mail. * I added a distribution-maker production to Makefile.in. OPTIONS AND COMMAND LINE * I have removed the -p command-line option. Given that there's a run control facility there is no excuse for encouraging users to put plaintext passwords in scripts which might be readable. * Calling popclient with no arguments now causes it to query or operate on every host in the run control file. * I have made --version more useful by having it dump the computed connection options for each server specified. * The user can now explicitly set an MDA (such as procmail) with the new option -m or -mda. Various possible MDAs are listed on the man page. POPRC FILE SYNTAX * The run control file lexer now supports "-enclosed strings which may contain whitespace. * I added a --yydebug option to enable run control parser debugging at runtime if the parser was generated with --debug. It's not documented. * You may now have a `defaults' entry in the run control file which sets overrideable values for other entries. See the man page for details. * It is now possible to set keep, flush and fetchall in your run control file. * Fixed incorrect numbering of source lines in run control file parse error messages. * The configure.in specification no longer uses the obsolete AC_TRY_COMPILE macro (it uses AC_TRY_LINK instead). MAILBOX LOCKING * I have added mandatory locking of mailbox files where supported. This will cover Linux systems, in particular. * The default behavior is now to do lock-protected append on the user's system mailbox rather than using delivermail or some other MDA. (This is a performance hack.) * The autoconfigure script now looks for standard mail locations. The default mail delivery agent is used only if it can't find a mail spool directory in the standard places. FUNCTIONAL ENHANCEMENTS * When using POP3, message headers are edited so that replies won't foo up. Anything that looks like a mail ID local to the POP host gets @ and the pop servername attached to it before being appended to the user's mailbox or passed to an MDA. * I have implemented daemon mode. * I have added a lock check to ensure that there is only one popclient running per user, and a --quit option to kill the currently running one. DOCUMENTATION * All changes and feature additions have been tested in actual use and are documented on the man page. * I have turned the comments in the sample run control file into a new manual section documenting the file format. MISCELLANEOUS BUG FIXES * I fixed some de-initialization bugs in pop2.c and pop3.c that led to fd leaks (these became painfully obvious when I tested daemon mode!). * I've fixed the flaky parser error messages. They turned out to be due to a misdeclaration of yytext. These are Carl Harris's change notes from previous releases: 3.0b5 o "From " header fix in pop2.c and pop3.c o Surpress "..." output when --stdout option specified in pop3.c 3.0b4 o alloca fix. o various diagnostic/informational message fixes. 3.0b3 o Support for retrieving only new messages from maildrop when using POP3. o Support for retrieving only the first n lines of each message when using POP3. o APOP authentication support. o Buffered socket input. 3.0b2 This is a "new features" release. o support for .poprc file. o GNU-style long options. o fixed passwords appearing in 'ps' output o support for multiple servers on one command line 3.0b1 This is mostly a test of the autoconfigure integration. Among the functions performed by the new configure script, is the ability to detect known system types, configures the mail delivery agent (MDA) correctly. This should permanently solve the problem of using something other than an MDA for mail delivery (which continues to plague Linux slackware 1.2.9). For this beta, please check the values of MDA_PATH and MDA_ARGS carefully. They should match the values found in your sendmail.cf file on the line which begins with "Mlocal". Other changes from popclient version 2.21: o no longer uses getpass() from the C library. The internal getpassword() function allows the use of long passwords. o integrated GNU getopt() for long options. Long option names will appear in a future beta. o Several compiler warnings fixed. o Fixed problems related to missing include files in Solaris port.