Exim DSN Patch (4.82)
---------------------

This patch 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 patch 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 patch; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA.

Installation & Usage
--------------------
See docs/experimental-spec.txt

Credits
-------

The original work for the patch was done by Philip Hazel in Exim 3

The extract was taken and re-applied to Exim 4 by the following :-
Phil Bingham   (phil.bingham@cwipapps.net)
Steve Falla    (steve.falla@cwipapps.net)
Ray Edah       (ray.edah@cwipapps.net)
Andrew Johnson (andrew.johnson@cwippaps.net)
Adrian Hungate (adrian.hungate@cwipapps.net)

Now Primarily maintained by :-
Andrew Johnson (andrew.johnson@cwippaps.net)

Updated for 4.82, improved and submitted to
http://bugs.exim.org/show_bug.cgi?id=118
by :-
Wolfgang Breyha (wbreyha@gmx.net)

Contributions
-------------
Andrey J. Melnikoff (TEMHOTA) (temnota@kmv.ru) 


ChangeLog
---------
14-Apr-2006 : Changed subject to "Delivery Status Notification"

17-May-2006 : debug_printf in spool-in.c were not wrapped with #ifndef COMPILE_UTILITY
              thanks to Andrey J. Melnikoff for this information

12-Sep-2006 : Now supports Exim 4.63

12-Sep-2006 : src/EDITME did not include the #define SUPPORT_DSN as stated
              in the documentation, this has now been corrected
              thanks to Robert Kehl for this information

28-Jul-2008 : New version for exim 4.69 released.

02-Jul-2010 : New version for exim 4.72 released.

25-Apr-2014 : Version 1.4
              *) fix ENVID and ORCPT addition in SMTP transport
                *) p was not moved to the end of the string. new content
                   added afterwards overwrites ENVID and/or ORCPT
              *) change spool file format to be compatible with the
                 extensible format of exim 4 by prepending new values and
                 setting the extended bitmask accordingly
                *) use SUPPORT_DSN_LEGACY=yes in Makefile to be able to read
                   the legacy format of older patches until all messages are out of queue.
              *) change "dsn" boolean toggle to "dsn_advertise_hosts" to
                 be able to select who actually can use the extension
              *) Add all RFC 3461 MUST fields to delivery-status section
              *) convert xtext in ENVID
              *) add all successful rcpts to ONE message instead of sending several messages

26-Apr-2014 : Version 1.5
              fixes:
                *) fixed wrong order for ENVID
                *) fixed wrong Final-Recipient value
                *) af_ignore_failure is ignored for success reports
                *) fixed DSN_LEGACY switch
              improvements:
                *) added MIME "failure" reports
                  *) bounce_return_message is ignored (required by RFC)
                  *) in case RET= is defined we honor these values
                     otherwise bounce_return_body is honored.
                  *) bounce_return_size_limit is always honored.
                  *) message body intro and final text is ignored
                  *) do not send report if DSN flags say NO
                *) added MIME "delay" reports
                  *) do not send report if DSN flags say NO
                *) changed from SUPPORT_DSN to EXPERIMENTAL_DSN
                *) updated documentation

01-May-2014 : Version 1.6
              fixes:
                *) code cleanup
                *) use text/rfc822-headers were applicable
                *) fix NOTIFY=FAILURE

              improvements:
                *) do not truncated MIME messages
                  *) if bounce_return_size_limit is smaller then the actual message
                     only the header is returned
                *) if bounce_return_body or bounce_return_size_limit prevents Exim
                   from returning the requested (RET=FULL) body this fact is added
                   as X-Exim-DSN-Information Header
                  *) this also means that all of the last three parts of the "failure"
                     template are not used anymore

                *) dsn_process switch removed
                  *) every router "processes" DSN by default
                  *) there is no possibilty to "gag" DSN anymore since this violates RFC
                *) dsn_lasthop switch added for routers
                  *) if dsn_lasthop is set by a router it is handled as relaying to a
                     non DSN aware relay. success mails are sent if Exim successfully 
                     delivers the message.
                *) redirect routers always "act" as if dsn_lasthop is set

                *) address_item.dsn_aware changed from uschar to int for easier handling.

02-May-2014 : fixes:
                *) Reporting-MTA: use smtp_active_hostname instead of qualify_domain from
                   original patch.

20-May-2014 : fixes:
                *) removed support for EXPERIMENTAL_DSN_LEGACY for codebase inclusion
                *) fixed build of exim_monitor tree
                *) fixed late declaration of dsn_all_lasthop

-----------------

Support for this patch up to 1.3 (limited though it is) will only be provided through the SourceForge
project page (http://sourceforge.net/projects/eximdsn/)

From 1.4 onward feel free to ask on the exim-users mailinglist or add comments to
http://bugs.exim.org/show_bug.cgi?id=118