summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/CHANGES12
-rw-r--r--src/LICENCE339
-rw-r--r--src/Makefile88
-rw-r--r--src/NOTICE163
-rw-r--r--src/README345
-rw-r--r--src/README.UPDATING369
6 files changed, 1316 insertions, 0 deletions
diff --git a/src/CHANGES b/src/CHANGES
new file mode 100644
index 000000000..ac20662bc
--- /dev/null
+++ b/src/CHANGES
@@ -0,0 +1,12 @@
+$Cambridge: exim/src/CHANGES,v 1.1 2004/10/06 14:12:40 ph10 Exp $
+
+Change Information for Exim
+---------------------------
+
+Complete lists of all changes to the code, including bug fixes, are listed in
+doc/ChangeLog, and documentation for changes that have not yet made it
+into the manual is available in doc/NewStuff. The ftp site has a directory
+called ChangeLogs which contains individual ChangeLog and NewStuff files for
+each separate release.
+
+****
diff --git a/src/LICENCE b/src/LICENCE
new file mode 100644
index 000000000..f5c5d2987
--- /dev/null
+++ b/src/LICENCE
@@ -0,0 +1,339 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+ 59 Temple Place, Suite 330, Boston, MA 02111 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.
+
+ END OF TERMS AND CONDITIONS
+
+ Appendix: How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the program's name and a brief idea of what it does.>
+ Copyright (C) 19yy <name of author>
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA.
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+ Gnomovision version 69, Copyright (C) 19yy name of author
+ Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+ `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+ <signature of Ty Coon>, 1 April 1989
+ Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs. If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library. If this is what you want to do, use the GNU Library General
+Public License instead of this License.
diff --git a/src/Makefile b/src/Makefile
new file mode 100644
index 000000000..d135d20ea
--- /dev/null
+++ b/src/Makefile
@@ -0,0 +1,88 @@
+# $Cambridge: exim/src/Makefile,v 1.1 2004/10/06 14:12:40 ph10 Exp $
+
+# Top-level makefile for Exim; handles creating a build directory with
+# appropriate links, and then creating and running the main makefile in that
+# directory.
+
+# Copyright (c) 2004 University of Cambridge.
+# See the file NOTICE for conditions of use and distribution.
+
+# IRIX make uses the shell that is in the SHELL variable, which often defaults
+# to csh, so put this in to make it use the Bourne shell. In systems where
+# /bin/sh is not a Bourne-compatible shell, this line will have to be edited,
+# or "make" must be called with a different SHELL= setting.
+
+SHELL=/bin/sh
+
+# If a build name has not been specified by running this make file via a
+# command of the form "make build=xxxx", then determine the name of the
+# operating system and the machine architecture and use that. This does not
+# provide an override for the OS type and architecture type; they still have
+# to be used for the OS-specific files. To override them, you can set the
+# shell variables OSTYPE and ARCHTYPE when running make.
+
+buildname=$${build:-`$(SHELL) scripts/os-type`-`$(SHELL) scripts/arch-type`}
+
+# The default target checks for the existence of Local/Makefile, that the main
+# makefile is built and up-to-date, and then it runs it.
+
+all: Local/Makefile configure go
+
+Local/Makefile:
+ @echo ""
+ @echo "*** Please create Local/Makefile by copying src/EDITME and making"
+ @echo "*** appropriate changes for your site."
+ @echo ""
+ @test ! -d Local && mkdir Local
+ @false
+
+# This is separated off so that "make build-directory" can be obeyed on
+# its own if necessary.
+
+build-directory:
+ @builddir=build-$(buildname); \
+ case "$$builddir" in *UnKnown*) exit 1;; esac; \
+ $(SHELL) -c "test -d $$builddir -a -r $$builddir/version.c || \
+ (mkdir $$builddir; cd $$builddir; $(SHELL) ../scripts/MakeLinks)";
+
+# The "configure" target ensures that the build directory exists, then arranges
+# to build the main makefile from inside the build directory, by calling the
+# Configure-Makefile script. This does its own dependency checking because of
+# the optional files.
+
+configure: build-directory
+ @cd build-$(buildname); \
+ build=$(build) $(SHELL) ../scripts/Configure-Makefile
+
+# The "makefile" target forces a rebuild of the makefile (as opposed to
+# "configure", which doesn't force it).
+
+makefile: build-directory
+ @cd build-$(buildname); /bin/rm -f Makefile; \
+ build=$(build) $(SHELL) ../scripts/Configure-Makefile
+
+# Go to the build directory and do the business
+
+go:; @cd build-$(buildname); $(MAKE) SHELL=$(SHELL) $(MFLAGS)
+
+# The installation commands are kept in a separate script, which expects
+# to be run from inside the build directory.
+
+install:; @cd build-$(buildname); \
+ build=$(build) $(SHELL) ../scripts/exim_install $(INSTALL_ARG)
+
+# Tidy-up targets
+
+clean:; @echo ""; echo '*** "make clean" just removes all .o and .a files'
+ @echo '*** Use "make makefile" to force a rebuild of the makefile'
+ @echo ""
+ cd build-$(buildname); \
+ /bin/rm -f *.o lookups/*.o lookups/*.a auths/*.o auths/*.a \
+ routers/*.o routers/*.a transports/*.o transports/*.a \
+ pcre/*.o pcre/*.a
+
+clean_exim:; cd build-$(buildname); \
+ /bin/rm -f *.o lookups/*.o lookups/*.a auths/*.o auths/*.a \
+ routers/*.o routers/*.a transports/*.o transports/*.a
+
+# End of top-level makefile
diff --git a/src/NOTICE b/src/NOTICE
new file mode 100644
index 000000000..6c7e44976
--- /dev/null
+++ b/src/NOTICE
@@ -0,0 +1,163 @@
+$Cambridge: exim/src/NOTICE,v 1.1 2004/10/06 14:12:40 ph10 Exp $
+
+THE EXIM MAIL TRANSFER AGENT
+----------------------------
+
+Copyright (c) 2004 University of Cambridge
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+In addition, for the avoidance of any doubt, permission is granted to
+link this program with OpenSSL or any other library package and to
+(re)distribute the binaries produced as the result of such linking.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA.
+
+
+UNSOLICITED EMAIL
+-----------------
+
+The use, supply or promotion of Exim for the purpose of sending bulk,
+unsolicited electronic mail is incompatible with the basic aims of the program,
+which revolve around the free provision of a service that enhances the quality
+of personal communications. The author of Exim regards indiscriminate
+mass-mailing as an antisocial, irresponsible abuse of the Internet.
+
+
+INCORPORATED CODE
+-----------------
+
+A number of pieces of external code are included in the Exim distribution.
+
+ . Regular expressions are supported in the main Exim program and in the
+ Exim monitor using the freely-distributable PCRE library, copyright (c)
+ 2003 University of Cambridge. The source is distributed in the directory
+ src/pcre. However, this is a cut-down version of PCRE. If you want to use
+ the PCRE library in other programs, you should obtain and install the
+ full version from ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre.
+
+
+ . Support for the cdb (Constant DataBase) lookup method is provided by code
+ contributed by Nigel Metheringham of Planet Online Ltd. which contains
+ the following statements:
+ _________________________________________________________________________
+
+ Copyright (c) 1998 Nigel Metheringham, Planet Online Ltd
+
+ This program is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License as published by the
+ Free Software Foundation; either version 2 of the License, or (at your
+ option) any later version.
+
+ This code implements Dan Bernstein's Constant DataBase (cdb) spec.
+ Information, the spec and sample code for cdb can be obtained from
+ http://www.pobox.com/~djb/cdb.html. This implementation borrows some code
+ from Dan Bernstein's implementation (which has no license restrictions
+ applied to it).
+ _________________________________________________________________________
+
+ The implementation is completely contained within the code of Exim. It
+ does not link against an external cdb library.
+
+ . Client support for Microsoft's "Secure Password Authentication" is pro-
+ vided by code contributed by Marc Prud'hommeaux. Server support was
+ contributed by Tom Kistner. This includes code taken from the Samba
+ project, which is released under the Gnu GPL.
+
+
+ . Support for calling the Cyrus "pwcheck" and "saslauthd" daemons is
+ provided by code taken from the Cyrus-SASL library and adapted by
+ Alexander S. Sabourenkov. The permission notice appears below, in
+ accordance with the conditions expressed therein.
+
+ _________________________________________________________________________
+
+ Copyright (c) 2001 Carnegie Mellon University. All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are
+ met:
+
+ 1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ 3. The name 'Carnegie Mellon University' must not be used to endorse or
+ promote products derived from this software without prior written
+ permission. For permission or any other legal details, please
+ contact
+
+ Office of Technology Transfer
+ Carnegie Mellon University
+ 5000 Forbes Avenue
+ Pittsburgh, PA 15213-3890
+ (412) 268-4387, fax: (412) 268-7395
+ tech-transfer@andrew.cmu.edu
+
+ 4. Redistributions of any form whatsoever must retain the following
+ acknowledgment:
+ This product includes software developed by Computing Services at
+ Carnegie Mellon University (http://www.cmu.edu/computing/).
+
+ CARNEGIE MELLON UNIVERSITY DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
+ SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ FITNESS, IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY BE LIABLE FOR ANY
+ SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
+ RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF
+ CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+ CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ _________________________________________________________________________
+
+
+ . The Exim Monitor program, which is an X-Window application, includes
+ modified versions of the Athena StripChart and TextPop widgets. This code
+ is copyright by DEC and MIT, and their permission notice appears below,
+ in accordance with the conditions expressed therein.
+
+ _________________________________________________________________________
+
+ Copyright 1987, 1988 by Digital Equipment Corporation, Maynard,
+ Massachusetts, and the Massachusetts Institute of Technology, Cambridge,
+ Massachusetts.
+
+ All Rights Reserved
+
+ Permission to use, copy, modify, and distribute this software and its
+ documentation for any purpose and without fee is hereby granted, provided
+ that the above copyright notice appear in all copies and that both that
+ copyright notice and this permission notice appear in supporting documen-
+ tation, and that the names of Digital or MIT not be used in advertising
+ or publicity pertaining to distribution of the software without specific,
+ written prior permission.
+
+ DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+ DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
+ ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+ WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+ SOFTWARE.
+ _________________________________________________________________________
+
+
+ . Some of the code to support the use of maildirsize files for maildir
+ deliveries is taken from the Courier Imapd source code. This code is
+ released under the GPL.
+ _________________________________________________________________________
+
+--
+Philip Hazel University of Cambridge Computing Service,
+ph10@cus.cam.ac.uk Cambridge, England. Phone: +44 1223 334714.
diff --git a/src/README b/src/README
new file mode 100644
index 000000000..53a9b4a9a
--- /dev/null
+++ b/src/README
@@ -0,0 +1,345 @@
+$Cambridge: exim/src/README,v 1.1 2004/10/06 14:12:40 ph10 Exp $
+
+THE EXIM MAIL TRANSFER AGENT VERSION 4
+--------------------------------------
+
+Copyright (c) 1995 - 2004 University of Cambridge.
+See the file NOTICE for conditions of use and distribution.
+
+There is a book about Exim by Philip Hazel called "The Exim SMTP Mail Server",
+published by UIT Cambridge in May 2003. This is the official guide for Exim 4.
+The current edition covers release 4.10 and a few later extensions.
+
+The O'Reilly book about Exim ("Exim The Mail Transfer Agent" by Philip Hazel)
+covers Exim 3, which is now deprecated. Exim 4 has a large number of changes
+from Exim 3, though the basic structure and philosophy remains the same. The
+older book may be helpful for the background, but a lot of the detail has
+changed, so it is likely to be confusing to newcomers.
+
+There is a web site at http://www.exim.org; this contains details of the
+mailing list exim-users@exim.org.
+
+A copy of the Exim FAQ should be available from the same source that you used
+to obtain the Exim distribution. Additional formats for the documentation
+(PostScript, PDF, Texinfo, and HTML) should also be available there.
+
+
+EXIM DISTRIBUTION
+-----------------
+
+Unpacking the tar file should produce a single directory called exim-<version>,
+containing the following files and directories:
+
+ACKNOWLEDGMENTS some acknowledgments
+CHANGES a conventional file name; it indirects to some files in doc/
+LICENCE the GNU General Public Licence
+Local/ an empty directory for local configuration files
+Makefile top level Makefile
+NOTICE notice about conditions of use
+OS/ directory containing OS-specific files
+README this file
+README.UPDATING special notes about updating from previous versions
+doc/ directory of documentation files
+exim_monitor/ directory of source files for the Exim monitor
+scripts/ directory of scripts used in the build process
+src/ directory of source files
+util/ directory of independent utilities
+
+Please see the documentation files for full instructions on how to build,
+install, and run Exim. For straightforward installations on operating systems
+to which Exim has already been ported, the building process is as follows:
+
+. Ensure that the top-level Exim directory (e.g. exim-4.40) is the current
+ directory (containing the files and directories listed above).
+
+. Edit the file called src/EDITME and put the result in a new file called
+ Local/Makefile. There are comments in src/EDITME telling you what the various
+ parameters are. You must at least provide values for BIN_DIRECTORY,
+ CONFIGURE_FILE, EXIM_USER and EXIM_GROUP (if EXIM_USER is numeric), and it is
+ recommended that SPOOL_DIRECTORY also be defined here if it is a fixed path.
+
+. There are a number of additional parameters whose defaults can also be
+ overridden by additions to Local/Makefile. The basic defaults are in
+ OS/Makefile-Default, but these settings are overridden for some operating
+ systems by values on OS/Makefile-<osname>. The most commonly-required change
+ is probably the setting of CC, which defines the command to run the C
+ compiler, and which defaults to gcc. To change it to cc, add the following
+ line to Local/Makefile:
+
+ CC=cc
+
+ If you are running the Berkeley DB package as your dbm library, then it is
+ worth putting USE_DB=yes in Local/Makefile, to get Exim to use the native
+ interface. This is the default for some operating systems. See
+ doc/dbm.discuss.txt for discussion on dbm libraries.
+
+. If you want to compile the Exim monitor, edit the file called
+ exim_monitor/EDITME and put the result in a file called Local/eximon.conf.
+ If you are not going to compile the Exim monitor, you should have commented
+ out the line starting EXIM_MONITOR= when creating Local/Makefile. There are
+ comments in exim_monitor/EDITME about the values set therein, but in this
+ case everything can be defaulted if you wish.
+
+. Type "make". This will determine what your machine's architecture and
+ operating system are, and create a build directory from those names (e.g.
+ "build-SunOS5-sparc"). Symbolic links are created from the build directory
+ to the source directory. A configured make file called <build-dir>/makefile
+ is then created, and "make" then goes on to use this to build various
+ binaries and scripts inside the build directory.
+
+. Type "make install", while running as root, to install the binaries,
+ scripts, and a default configuration file. To see what this command is
+ going to do before risking it, run "../scripts/exim_install -n" (not as
+ root) from within the build directory.
+
+. When you are ready to try running Exim, see the section entitled "Testing"
+ in the chapter called "Building and Installing Exim" in doc/spec.txt, or in
+ one of the other forms of the documentation.
+
+. Running the install script does NOT replace /usr/sbin/sendmail or
+ /usr/lib/sendmail with a link to Exim. That step you must perform by hand
+ when you are satisfied that Exim is running correctly.
+
+. Note that the default configuration refers to an alias file called
+ /etc/aliases. It used to be the case that every Unix had that file, because
+ it was the Sendmail default. These days, there are systems that don't have
+ /etc/aliases, so you might need to set it up. Your aliases should at least
+ include an alias for "postmaster".
+
+. Consider notifying users of the change of MTA. Exim has different
+ capabilities, and there are various operational differences, such as stricter
+ adherence to the RFCs than some MTAs, and differences in the text of
+ messages produced by various command-line options.
+
+. The default configuration file will use your host's fully qualified name (as
+ obtained from the uname() function) as the only local mail domain and as the
+ domain which is used to qualify unqualified local mail addresses. See the
+ comments in the default configuration file if you want to change these.
+
+The operating systems currently supported are: AIX, BSD/OS (aka BSDI), Darwin
+(Mac OS X), DGUX, FreeBSD, GNU/Hurd, GNU/Linux, HI-OSF (Hitachi), HP-UX, IRIX,
+MIPS RISCOS, NetBSD, OpenBSD, QNX, SCO, SCO SVR4.2 (aka UNIX-SV), Solaris (aka
+SunOS5), SunOS4, Tru64-Unix (formerly Digital Unix, formerly DEC-OSF1), Ultrix,
+and Unixware. However, code is not available for determining system load
+averages on Ultrix. There are also configuration files for compiling Exim in
+the Cygwin environment that can be installed on systems running Windows.
+However, the documentation supplied with the distribution does not contain any
+information about running Exim in the Cygwin environment.
+
+
+******* Modifying the building process ******
+
+Instructions for overriding the build-time options for Exim are given in the
+manual. You should never have to modify any of the supplied files; it should be
+possible to override everything that is necessary by creating suitable files in
+the Local directory. This means that you won't need to redo your modifications
+for the next release of Exim. If you find you can't avoid changing some other
+file, let me know and I'll see if I can find a way of making that unnecessary.
+
+Briefly, the building process concatenates a number of files in order to
+construct its working makefile. If <ostype> and <archtype> are the operating
+system and architecture types respectively, the files used are:
+
+ OS/Makefile-Default
+ OS/Makefile-<ostype>
+ Local/Makefile
+ Local/Makefile-<ostype>
+ Local/Makefile-<archtype>
+ Local/Makefile-<ostype>-<archtype>
+ OS/Makefile-Base
+
+Of the Local/* files, only Local/Makefile is required to exist; the rest are
+optional. Because of the way "make" works, values set in later files override
+values set in earlier ones. Thus you can set up general options that are
+overridden for specify operating systems and/or architectures if you wish.
+
+
+******* IMPORTANT FOR GNU/LINUX USERS *******
+
+Exim 4 won't work with some versions of Linux if you put its spool directory on
+an NFS partition. You get an error about "directory sync failed". This is
+because of a bug in Linux NFS. A fix has been promised in due course. It is in
+any case much better to put Exim's spool directory on local disc.
+
+If you get an error complaining about the lack of functions such as dbm_open()
+when building Exim, the problem is that it hasn't been able to find a DBM
+library. See the file doc/dbm.discuss.txt for a discussion about the various
+DBM libraries.
+
+Different versions of Linux come with different DBM libraries, stored in
+different places. As well as setting USE_DB=yes in Local/Makefile if Berkeley
+DB is in use, it may also be necessary to set a value in DBMLIB to specify the
+inclusion of the DBM library, for example: DBMLIB=-ldb or DBMLIB=-lgdbm.
+
+If you are using RedHat 7.0, which has DB3 as its DBM library, you need to
+install the db-devel package before building Exim. This will have a name like
+db3-devel-3.1.14-16.i386.rpm (but check which release of DB3 you have).
+
+The building scripts now distinguish between versions of Linux with the older
+libc5 and the more recent ones that use libc6. In the latter case, USE_DB and
+-ldb are the default settings, because DB is standard with libc6.
+
+It appears that with glibc-2.1.x (a minor libc upgrade), they have standardised
+on Berkeley DB2 (instead of DB1 in glibc-2.0.x). If you want to get DB1 back,
+you need to set
+
+ INCLUDE=-I/usr/include/db1
+ DBMLIB=-ldb1
+
+in your Local/Makefile. If you omit DBMLIB=-ldb1 Exim will link successfully
+using the DB1 compatibility interface to DB2, but it will expect the file
+format to be that of DB2, and so will not be able to read existing DB1 files.
+
+
+******* IMPORTANT FOR FREEBSD USERS *******
+
+On FreeBSD there is a file called /etc/mail/mailer.conf which selects what to
+run for various MTA calls. Instead of changing /usr/sbin/sendmail, you should
+edit this file instead, to read something like this:
+
+sendmail /usr/exim/bin/exim
+send-mail /usr/exim/bin/exim
+mailq /usr/exim/bin/exim -bp
+newaliases /usr/bin/true
+
+You will most probably need to add the line:
+
+daily_status_include_submit_mailq="NO" # No separate 'submit' queue
+
+to /etc/periodic.conf. This stops FreeBSD running the command "mailq -Ac"
+(which Exim doesn't understand) to list a separate submit queue (which Exim
+doesn't have).
+
+If you are using FreeBSD prior to 3.0-RELEASE, and you are not using the ports
+mechanism to install Exim, then you should install the perl5 package
+(/usr/local/bin/perl) and use that instead of perl in the base system, which is
+perl4 up until 3.0-RELEASE. If you are using the ports mechanism, this is
+handled for you.
+
+If you are upgrading from version 2.11 of Exim or earlier, and you are using
+DBM files, and you did not previously have USE_DB=yes in your Local/Makefile,
+then you will either have to put USE_DB=no in your Local/Makefile or (better)
+rebuild your DBM data files. The default for FreeBSD has been changed to
+USE_DB=yes, since FreeBSD comes with Berkeley DB. However, using the native DB
+interface means that the data files no longer have the ".db" extension.
+
+
+
+******* IMPORTANT FOR Tru64 (aka Digital Unix aka DEC-OSF1) USERS *******
+
+The default compiler may not recognize ANSI C by default. You may have to set
+
+CC=cc
+CFLAGS=-std1
+
+in Local/Makefile in order to compile Exim. A user reported another small
+problem with this operating system: In the file /usr/include/net/if.h a
+semicolon was missing at the end of line 143.
+
+
+
+******* IMPORTANT FOR SCO USERS *******
+
+The building scripts assume the existence of the "ar" command, which is part of
+the Development System. However, it is also possible to use the "gar" command
+that is part of the GNU utilities that are distributed with the 5.0.7 release.
+If you have "gar" and not "ar" you should include
+
+AR=gar
+
+in your Local/Makefile.
+
+
+
+******* IMPORTANT FOR Unixware 2.x USERS *******
+
+Unixware does not include db/dbm/ndbm with its standard compiler (it is
+available with /usr/ucb/cc, but that has bugs of its own). You should install
+gcc and Berkeley DB (or another dbm library if you really insist). If you use a
+different dbm library you will need to override the default setting of DBMLIB.
+
+DB 1.85 and 2.x can be found at http://www.sleepycat.com/. They have different
+characteristics. See the discussion of dbm libraries in doc/dbm.discuss.txt. DB
+needs to be compiled with gcc and you need a 'cc' in your path before the
+Unixware CC to compile it.
+
+Don't bother even starting to install exim on Unixware unless you have
+installed gcc and use it for everything.
+
+
+******* IMPORTANT FOR SOLARIS 2.3 (SUNOS 5.3) USERS *******
+
+The file /usr/include/sysexits.h does not exist on Solaris 2.3 (and presumably
+earlier versions), though it is present in 2.4 and later versions. To compile
+Exim on Solaris 2.3 it is necessary to include the line
+
+CFLAGS=-O -DNO_SYSEXITS -DEX_TEMPFAIL=75
+
+in your Local/Makefile.
+
+
+******* IMPORTANT FOR IRIX USERS *******
+
+There are problems with some versions of gcc on IRIX, as a result of which all
+DNS lookups yield either 0.0.0.0 or 255.255.255.255. Releases of gcc after
+2.7.2.3 (which works ok) are affected. Specifically, 2.8.* is affected, as are
+the 2.95 series. From release 3.21 of Exim, a workaround for this problem
+should automatically be enabled when Exim is compiled on IRIX using gcc.
+
+As from version 2.03 there is IRIX-specific code in Exim to obtain a list of
+all the IP addresses on local interfaces, including alias addresses, because
+the standard code gives only non-alias addresses in IRIX. The code came from
+SGI, with the comment:
+
+"On 6.2 you need the libc patch to get the sysctl() stub and the networking
+kernel patch to get the support."
+
+It seems that this code doesn't work on at least some earlier versions of IRIX
+(e.g. IRIX 5.3). If you can't compile under IRIX and the problem appears to
+relate to sysctl(), try commenting or #ifdef-ing out all the code in the
+file OS/os.c-IRIX.
+
+
+******* IMPORTANT FOR HP-UX USERS *******
+
+There are two different sets of configuration files for HP-UX. Those ending in
+HP-UX-9 are used for HP-UX version 9, and have been tested on HP-UX version
+9.05. Those ending in HP-UX are for later releases, and have been tested on
+HP-UX version 11.00. If you are using a version of HP-UX between 9.05 and
+11.00, you may need to edit the file OS/os.h-HP-UX if you encounter problems
+building Exim.
+
+If you want to use the Sieve facility in Exim, the alias iso-8859-1 should be
+added to the alias definition for iso81 in /usr/lib/nls/iconv/config.iconv. You
+also need to add a new alias definition: "alias utf8 utf-8".
+
+
+******* IMPORTANT FOR QNX USERS *******
+
+1. Exim makes some assumptions about the shell in the makefiles. The "normal"
+ QNX shell (ksh) will not work. You need to install "bash", which can be
+ obtained from the QNX freeware on QUICS. Install it to /usr/local/bin/bash
+ Then you need to change the SHELL definition at the top of the main Makefile
+ to SHELL=/usr/local/bin/bash. The file OS/Makefile-QNX sets the variable
+ MAKE_SHELL to /usr/local/bin/bash. If you install bash in a different place,
+ you will need to set MAKE_SHELL in your Local/Makefile in order to override
+ this.
+
+2. For some strange reason make will fail at building "exim_dbmbuild" when
+ called the first time. However simply calling make a second time will solve
+ the problem. Alternatively, run "make makfile" and then "make".
+
+
+******* IMPORTANT FOR ULTRIX USERS *******
+
+You need to set SHELL explicitly in the make call when building on ULTRIX,
+that is, type "make SHELL=sh5".
+
+
+******* IMPORTANT FOR GNU/HURD USERS *******
+
+GNU/Hurd doesn't (at the time of writing, June 1999) have the ioctls for
+finding out the IP addresses of the local interfaces. You therefore have to set
+local_interfaces yourself. Otherwise it will treat only 127.0.0.1 as local.
+
+Philip Hazel <ph10@cus.cam.ac.uk>
diff --git a/src/README.UPDATING b/src/README.UPDATING
new file mode 100644
index 000000000..fe405106b
--- /dev/null
+++ b/src/README.UPDATING
@@ -0,0 +1,369 @@
+$Cambridge: exim/src/README.UPDATING,v 1.1 2004/10/06 14:12:40 ph10 Exp $
+
+This document contains detailed information about incompatibilities that might
+be encountered when upgrading from one release of Exim to another. The
+information is in reverse order of release numbers. Mostly these are relatively
+small points, and the configuration file is normally upwards compatible, but
+there have been two big upheavals...
+
+
+**************************************************************************
+* There was a big reworking of the way mail routing works for release *
+* 4.00. Previously used "directors" were abolished, and all routing is *
+* now done by routers. Policy controls for incoming mail are now done by *
+* Access Control Lists instead of separate options. All this means that *
+* pre-4.00 configuration files have to be massively converted. If you *
+* are coming from a 3.xx release, please read the document in the file *
+* doc/Exim4.upgrade, and allow some time to complete the upgrade. *
+* *
+* There was a big reworking of the way domain/host/net/address lists are *
+* handled at release 3.00. If you are coming from a pre-3.00 release, it *
+* might be easier to start again from a default configuration. Otherwise *
+* you need to read doc/Exim3.upgrade and do a double conversion of your *
+* configuration file. *
+**************************************************************************
+
+
+The rest of this document contains information about changes in 4.xx releases
+that might affect a running system.
+
+
+Version 4.42
+------------
+
+RFC 3848 specifies standard names for the "with" phrase in Received: header
+lines when AUTH and/or TLS are in use. This is the "received protocol"
+field. Exim used to use "asmtp" for authenticated SMTP, without any
+indication (in the protocol name) for TLS use. Now it follows the RFC and
+uses "esmtpa" if the connection is authenticated, "esmtps" if it is
+encrypted, and "esmtpsa" if it is both encrypted and authenticated. These names
+appear in log lines as well as in Received: header lines.
+
+
+Version 4.34
+------------
+
+Change 4.31/2 gave problems to data ACLs and local_scan() functions that
+expected to see a Received: header. I have changed to yet another scheme. The
+Received: header is now generated after the body is received, but before the
+ACL or local_scan() is called. After they have run, the timestamp in the
+Received: header is updated.
+
+Thus, change (a) of 4.31/2 has been reversed, but change (b) is still true,
+which is lucky, since I decided it was a bug fix.
+
+
+Version 4.33
+------------
+
+If an expansion in a condition on a "warn" statement fails because a lookup
+defers, the "warn" statement is abandoned, and the next ACL statement is
+processed. Previously this caused the whole ACL to be aborted.
+
+
+Version 4.32
+------------
+
+Change 4.31/2 has been reversed, as it proved contentious. Recipient callout
+verification now uses <> in the MAIL command by default, as it did before. A
+new callout option, "use_sender", has been added to request the other
+behaviour.
+
+
+Version 4.31
+------------
+
+1. If you compile Exim to use GnuTLS, it now requires the use of release 1.0.0
+ or greater. The interface to the obsolete 0.8.x releases is no longer
+ supported. There is one externally visible change: the format for the
+ display of Distinguished Names now uses commas as a separator rather than a
+ slash. This is to comply with RFC 2253.
+
+2. When a message is received, the Received: header line is now generated when
+ reception is complete, instead of at the start of reception. For messages
+ that take a long time to come in, this changes the meaning of the timestamp.
+ There are several side-effects of this change:
+
+ (a) If a message is rejected by a DATA or non-SMTP ACL, or by local_scan(),
+ the logged header lines no longer include the local Received: line,
+ because it has not yet been created. If the message is a non-SMTP one,
+ and the error is processed by sending a message to the sender, the copy
+ of the original message that is returned does not have an added
+ Received: line.
+
+ (b) When a filter file is tested using -bf, no additional Received: header
+ is added to the test message. After some thought, I decided that this
+ is a bug fix.
+
+ The contents of $received_for are not affected by this change. This
+ variable still contains the single recipient of a message, copied after
+ addresses have been rewritten, but before local_scan() is run.
+
+2. Recipient callout verification, like sender verification, was using <> in
+ the MAIL FROM command. This isn't really the right thing, since the actual
+ sender may affect whether the remote host accepts the recipient or not. I
+ have changed it to use the actual sender in the callout; this means that
+ the cache record is now keyed on a recipient/sender pair, not just the
+ recipient address. There doesn't seem to be a real danger of callout loops,
+ since a callout by the remote host to check the sender would use <>.
+
+
+Version 4.30
+------------
+
+1. I have abolished timeout_DNS as an error that can be detected in retry
+ rules, because it has never worked. Despite the fact that it has been
+ documented since at least release 1.62, there was no code to support it.
+ If you have used it in your retry rules, you will now get a warning message
+ to the log and panic log. It is now treated as plain "timeout".
+
+2. After discussion on the mailing list, Exim no longer adds From:, Date:, or
+ Message-Id: header lines to messages that do not originate locally, that is,
+ messages that have an associated sending host address.
+
+3. When looking up a host name from an IP address, Exim now tries the DNS
+ first, and only if that fails does it use gethostbyaddr() (or equivalent).
+ This change was made because on some OS, not all the names are given for
+ addresses with multiple PTR records via the gethostbyaddr() interface. The
+ order of lookup can be changed by setting host_lookup_order.
+
+
+Version 4.23
+------------
+
+1. The new FIXED_NEVER_USERS build-time option creates a list of "never users"
+ that cannot be overridden. The default in the distributed EDITME is "root".
+ If for some reason you were (against advice) running deliveries as root, you
+ will have to ensure that FIXED_NEVER_USERS is not set in your
+ Local/Makefile.
+
+2. The ${quote: operator now quotes an empty string, which it did not before.
+
+3. Version 4.23 saves the contents of the ACL variables with the message, so
+ that they can be used later. If one of these variables contains a newline,
+ there will be a newline character in the spool that will not be interpreted
+ correctely by a previous version of Exim. (Exim ignores keyed spool file
+ items that it doesn't understand - precisely for this kind of problem - but
+ it expects them all to be on one line.)
+
+ So the bottom line is: if you have newlines in your ACL variables, you
+ cannot retreat from 4.23.
+
+
+Version 4.21
+------------
+
+1. The idea of the "warn" ACL verb is that it adds a header or writes to the
+ log only when "message" or "log_message" are set. However, if one of the
+ conditions was an address verification, or a call to a nested ACL, the
+ messages generated by the underlying test were being passed through. This
+ no longer happens. The underlying message is available in $acl_verify_
+ message for both "message" and "log_message" expansions, so it can be
+ passed through if needed.
+
+2. The way that the $h_ (and $header_) expansions work has been changed by the
+ addition of RFC 2047 decoding. See the main documentation (the NewStuff file
+ until release 4.30, then the manual) for full details. Briefly, there are
+ now three forms:
+
+ $rh_xxx: and $rheader_xxx: give the original content of the header
+ line(s), with no processing at all.
+
+ $bh_xxx: and $bheader_xxx: remove leading and trailing white space, and
+ then decode base64 or quoted-printable "words" within the header text,
+ but do not do charset translation.
+
+ $h_xxx: and $header_xxx: attempt to translate the $bh_ string to a
+ standard character set.
+
+ If you have previously been using $h_ expansions to access the raw
+ characters, you should change to $rh_ instead.
+
+3. When Exim creates an RFC 2047 encoded word in a header line, it labels it
+ with the default character set from the headers_charset option instead of
+ always using iso-8859-1.
+
+4. If TMPDIR is defined in Local/Makefile (default in src/EDITME is
+ TMPDIR="/tmp"), Exim checks for the presence of an environment variable
+ called TMPDIR, and if it finds it is different, it changes its value.
+
+5. Following a discussion on the list, the rules by which Exim recognises line
+ endings on incoming messages have been changed. The -dropcr and drop_cr
+ options are now no-ops, retained only for backwards compatibility. The
+ following line terminators are recognized: LF CRLF CR. However, special
+ processing applies to CR:
+
+ (i) The sequence CR . CR does *not* terminate an incoming SMTP message,
+ nor a local message in the state where . is a terminator.
+
+ (ii) If a bare CR is encountered in a header line, an extra space is added
+ after the line terminator so as not to end the header. The reasoning
+ behind this is that bare CRs in header lines are most likely either
+ to be mistakes, or people trying to play silly games.
+
+6. The code for using daemon_smtp_port, local_interfaces, and the -oX options
+ has been reorganized. It is supposed to be backwards compatible, but it is
+ mentioned here just in case I've screwed up.
+
+
+
+Version 4.20
+------------
+
+1. I have tidied and re-organized the code that uses alarm() for imposing time
+ limits on various things. It shouldn't affect anything, but if you notice
+ processes getting stuck, it may be that I've broken something.
+
+2. The "arguments" log selector now also logs the current working directory
+ when Exim is called.
+
+3. An incompatible change has been made to the appendfile transport. This
+ affects the case when it is used for file deliveries that are set up by
+ .forward and filter files. Previously, any settings of the "file" or
+ "directory" options were ignored. It is hoped that, like the address_file
+ transport in the default configuration, these options were never in fact set
+ on such transports, because they were of no use.
+
+ Now, if either of these options is set, it is used. The path that is passed
+ by the router is in $address_file (this is not new), so it can be used as
+ part of a longer path, or modified in any other way that expansion permits.
+
+ If neither "file" nor "directory" is set, the behaviour is unchanged.
+
+4. Related to the above: in a filter, if a "save" command specifies a non-
+ absolute path, the value of $home/ is pre-pended. This no longer happens if
+ $home is unset or is set to an empty string.
+
+5. Multiple file deliveries from a filter or .forward file can never be
+ batched; the value of batch_max on the transport is ignored for file
+ deliveries. I'm assuming that nobody ever actually set batch_max on the
+ address_file transport - it would have had odd effects previously.
+
+6. DESTDIR is the more common variable that ROOT for use when installing
+ software under a different root filing system. The Exim install script now
+ recognizes DESTDIR first; if it is not set, ROOT is used.
+
+7. If DESTDIR is set when installing Exim, it no longer prepends its value to
+ the path of the system aliases file that appears in the default
+ configuration (when a default configuration is installed). If an aliases
+ file is actually created, its name *does* use the prefix.
+
+
+Version 4.14
+------------
+
+1. The default for the maximum number of unknown SMTP commands that Exim will
+accept before dropping a connection has been reduced from 5 to 3. However, you
+can now change the value by setting smtp_max_unknown_commands.
+
+2. The ${quote: operator has been changed so that it turns newline and carriage
+return characters into \n and \r, respectively.
+
+3. The file names used for maildir messages now include the microsecond time
+fraction as well as the time in seconds, to cope with systems where the process
+id can be re-used within the same second. The format is now
+
+ <time>.H<microsec>P<pid>.<host>
+
+This should be a compatible change, but is noted here just in case.
+
+4. The rules for creating message ids have changed, to cope with systems where
+the process id can be re-used within the same second. The format, however, is
+unchanged, so this should not cause any problems, except as noted in the next
+item.
+
+5. The maximum value for localhost_number has been reduced from 255 to 16, in
+order to implement the new message id rules. For operating systems that have
+case-insensitive file systems (Cygwin and Darwin), the limit is 10.
+
+6. verify = header_syntax was allowing unqualified addresses in all cases. Now
+it allows them only for locally generated messages and from hosts that match
+sender_unqualified_hosts or recipient_unqualified_hosts, respectively.
+
+7. For reasons lost in the mists of time, when a pipe transport was run, the
+environment variable MESSAGE_ID was set to the message ID preceded by 'E' (the
+form used in Message-ID: header lines). The 'E' has been removed.
+
+
+Version 4.11
+------------
+
+1. The handling of lines in the configuration file has changed. Previously,
+macro expansion was applied to logical lines, after continuations had been
+joined on. This meant that it could not be used in .include lines, which are
+handled as physical rather than logical lines. Macro expansion is now done on
+physical lines rather than logical lines. This means there are two
+incompatibilities:
+
+ (a) A macro that expands to # to turn a line into a comment now applies only
+ to the physical line where it appears. Previously, it would have caused
+ any following continuations also to be ignored.
+
+ (b) A macro name can no longer be split over the boundary between a line and
+ its continuation. Actually, this is more of a bug fix. :-)
+
+2. The -D command line option must now all be within one command line item.
+This makes it possible to use -D to set a macro to the empty string by commands
+such as
+
+ exim -DABC ...
+ exim -DABC= ...
+
+Previously, these items would have moved on to the next item on the command
+line. To include spaces in a macro definition item, quotes must be used, in
+which case you can also have spaces after -D and surrounding the equals. For
+example:
+
+ exim '-D ABC = something' ...
+
+3. The way that addresses that redirect to themselves are handled has been
+changed, in order to fix an obscure bug. This should not cause any problems
+except in the case of wanting to go back from a 4.11 (or later) release to an
+earlier release. If there are undelivered messages on the spool that contain
+addresses which redirect to themselves, and the redirected addresses have
+already been delivered, you might get a duplicate delivery if you revert to an
+earlier Exim.
+
+4. The default way of looking up IP addresses for hosts in the manualroute and
+queryprogram routers has been changed. If "byname" or "bydns" is explicitly
+specified, there is no change, but if no method is specified, Exim now behaves
+as follows:
+
+ First, a DNS lookup is done. If this yields anything other than
+ HOST_NOT_FOUND, that result is used. Otherwise, Exim goes on to try a call to
+ getipnodebyname() (or gethostbyname() on older systems) and the result of the
+ lookup is the result of that call.
+
+This change has been made because it has been discovered that on some systems,
+if a DNS lookup called via getipnodebyname() times out, HOST_NOT_FOUND is
+returned instead of TRY_AGAIN. Thus, it is safest to try a DNS lookup directly
+first, and only if that gives a definite "no such host" to try the local
+function.
+
+5. In fixing the minor security problem with pid_file_path, I have removed some
+backwards-compatible (undocumented) code which was present to ease conversion
+from Exim 3. In Exim 4, pid_file_path is a literal; in Exim 3 it was allowed to
+contain "%s", which was replaced by the port number for daemons listening on
+non-standard ports. In Exim 4, such daemons do not write a pid file. The
+backwards compatibility feature was to replace "%s" by nothing if it occurred
+in an Exim 4 setting of pid_file_path. The bug was in this code. I have solved
+the problem by removing the backwards compatibility feature. Thus, if you still
+have "%s" somewhere in a setting of pid_file_path, you should remove it.
+
+6. There has been an extension to lsearch files. The keys in these files may
+now be quoted in order to allow for whitespace and colons in them. This means
+that if you were previously using keys that began with a doublequote, you will
+now have to wrap them with extra quotes and escape the internal quotes. The
+possibility that anybody is actually doing this seems extremely remote, but it
+is documented just in case.
+
+
+Version 4.10
+------------
+
+The build-time parameter EXIWHAT_KILL_ARG has been renamed EXIWHAT_KILL_SIGNAL
+to better reflect its function. The OS-specific files have been updated. Only
+if you have explicitly set this in your Makefile (highly unlikely) do you need
+to change anything.
+
+****