Download Latest Version exim-4.86-dsn.patch (18.7 kB)
Email in envelope

Get an email when there's a new version of Exim DSN Patch

Home / eximdsn
Name Modified Size InfoDownloads / Week
Parent folder
eximdsn-patch-1.6r 2015-11-09
buildenv_486 2015-11-09
eximdsn-patch-1.3 2015-10-30
README_486_DSN.txt 2015-11-09 7.5 kB
Totals: 4 Items   7.5 kB 0
Exim DSN Patch (4.86)
---------------------

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
--------------------
The DSN functionality (based on the 1.3 version of this patch) is now included as part of EXIM
so standard DSN functionality always applies, however some functionality had been removed when
it was built into EXIM as standard :-

dsn_process flag has been re-introduced as part of this patch,
this means every router that should process DSN needs to have this set.

The reason this has been done is because an UNSEEN router would have generated a DSN and that's
not always what you wish to do. This patch allows you to be selective on which routers will
process DSN's.

Patch release versions will now follow the primary version number (currently 1.6) with suffix of r (Re-Introduced)

The facility (once compiled in with EXPERIMENTAL_DSN) can be turned on for a particular router via the
dsn_process directive Eg :-

dest_delivery_int:
  driver = manualroute
  domains = +relay_to_domains
  condition = ${if eq {${lc:$sender_address_domain}}\
                                 {domain.com}\
                                 {yes}{no}\
                       }
  dsn_process
  hide route_data = ${lc:${extract{mailHost}{$address_data}{$value}{}}}
  transport = remote_smtp

This is to ensure compatibility with existing configurations

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@cwipapps.net)
Adrian Hungate (adrian.hungate@cwipapps.net)

Now Primarily maintained by :-
Andrew Johnson (andrew.johnson@sappsys.co.uk) (Vodafone)

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

30-Oct-2015 : Patch changes:
                *) Re-introduce dsn_process to restore old behaviour (Andrew Johnson @ Vodafone)

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

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

Source: README_486_DSN.txt, updated 2015-11-09