EXIM ACKNOWLEDGEMENTS

This file is divided into two parts.  The first is the original list maintained
by Exim's author, Philip Hazel, before he retired.  That has two sub-lists of
contributors.  The second main part is an attempt to bring this up-to-date,
using information from ChangeLog and git.

Names may well occur more than once.

There was a five year gap.  It is unlikely that this file is complete.
If you contributed and are not listed, then *please* let us know.  Even if you
don't much care, we want to acknowledge your help.  A contribution isn't just
code, it includes reporting real bugs, helping with tracking problems down,
documentation fixes and more.

(Note that we have patches from folks in various countries and Latin1 is not
 sufficient to handle all of their names acceptably.
 This file should be in UTF-8).

-Phil Pennock, pp The Exim Maintainers.

============================8< cut here >8==============================

I have not been very good at keeping a proper record of all the people who have
sent in patches and other contributions to Exim. I am going to try to do better
in the future by keeping a record in this file. First, I'll put a list of all
those I can recover from the past; then I'll create a new list to which I'll
add new contributors in future. Some regular contributors may appear in both.

I'm going to record people who send in actual patches or who help in detailed
ways. I'm not going to list people who just make a suggestion or report a
bug. I hope that is a reasonable approach.

If you should be on one of these lists and are not, please accept my apologies,
and let me know! Any omissions are solely due to my incompetence. In
particular, the "past" list has certainly lost the names of people who sent in
relatively small patches.

Philip Hazel

Lists created: 20 November 2002
Last updated (by PH):  22 August 2007

THE OLD LIST

Alan Barratt              First code for relay checking
Malcolm Beattie           Interface to embedded Perl
Philip Blundell           First support for IPv6
Piete Brooks              Running the first live version
                            Implementing multiple-system compilation
Matthew Byng-Maddick      First code for dsearch lookup
Steve Campbell            Extensions to eximstats
                            Steve is now the maintainer of eximstats
Brian Candler             LDAP support enhancement
Petr Cech                 PostgreSQL interface
Steve Clarke              Best way to find the load average in Linux
Energis Ltd               Resources for the exim.org site
Yann Golanski             Numerical hash function
Jason Gunthorpe           IPv6 support (Linux)
Michael Haardt            LDAP support enhancement
Steve Haslam              First code for TLS
Kjetil Torgrim Homme      Suggested patch for macro extensions
John Horne                Proof-reading documentation (repeatedly)
Pierre Humblet            Cygwin support
Paul Kelly                MySQL interface
                            First code for Oracle interface
Ian Kirk                  Radius support
Stuart Levy               Replacement for broken inet_ntoa() on IRIX
Stuart Lynne              First code for LDAP
Nigel Metheringham        Setting up the website and mailing list
                            Managing the website and mailing list
                            Interface to Berkeley DB
                            Support for cdb
                            Support for maildir
Barry Pederson            LDAP support enhancement
Marc Prud'hommeaux        SPA client authentication
Alexander Sabourenkov     pwcheck daemon support
Peter Savitch             LDAP support enhancement
Robert Wal                whoson lookup
Joachim Wieland           Researching strace and stolen subprocesses in Linux


THE NEW LIST

Alexander Alekseev        Use of function attribute checks in gcc
Justo Alonso              Suggested patch for maildir++ maildirsize file support
Anton Altaparmakov        Patches to get cyrus_sasl fully working
Simon Arlott              Patch for $dnslist_matched.
Claus Assmann             Example code for OpenSSL CRL support
Warren Baker              Experimental Redis lookup.
Robert Bannocks           Patch for LDAP reference problem on Solaris
Ian Bell                  Analysis of a bug and an infelicity in clock tick code
                          Patch for ${quote_local_part
Peter Benie               A number mistakes found by analysing the code
Johannes Berg             Suggested patch for authentication client $auth<n> support
                          Suggested patch for acl_not_smtp_start
Matt Bernstein            LMTP over socket
                          Suggested patch for dnslists '&' feature
Mike Bethune              Help with debugging an elusive ALRM signal bug
Ard Biesheuvel            Lookup code for accessing an Interbase database
Richard Birkett           Fix for empty -f address crash
Dean Brooks               Fix for ratelimit per_rcpt in acl_not_smtp.
Nick Burrett              Patch for CONFIGURE_FILE_USE_EUID in exicyclog
Matthew Byng-Maddick      Patch for qualify_domain in redirect router
                          Patch for ignore_target_hosts in ipliteral router
                          The cyrus_sasl authenticator
Steve Campbell            eximstats extensions and continued maintenance
Brian Candler             Use h_errno for gethostbyname()
                          Suggested patch for .ifdef etc
                          Several minor fixes and suggestions
Pete Carah                Patch for change to radiusclient API
Oliver Cook               Suggested patch for exigrep & rejected messages
                            Patch to add sender/host info to local_scan() rejects
                            Suggested patch to add queue time to "Completed"
Ted Cooper                Suggested patch for NOTQUIT ACL
Jennifer Corley           Designing the new Exim logo
John Dalbec               Patch for quota_warn_threshold bug
Vivek Dasmohapatra        Suggested patch for CRL support
Dennis Davis              Suggested server_condition for all authenticators
Andrew Doran              Patch for NetBSD configuration files
                          Patch for ifreq alignment and size problems
Michael Deutschmann       Suggested patch for treating bind() failure like connect()
                          Patch for $sender_data and $recipient_data
                          Suggested patch for null address match lookup bug
                          Suggested patch for verify = not_blind
                          Patch for alternate TXT lookup in DNS lists
Oliver Eikemeier          Patch to skip Received: if expansion is empty
                          Patch for "eqi"
Nico Erfurth              Fix for bug in ${readfile}
                            Patch for router_home_directory
                            Patch for ACL crash (try to test sender after ETRN)
                            Suggested patch for lookup search bug
                            Suggested patch for advertise_condition
                            Patch for missing HELO in checkaccess
                            Patch for raw headers
                            Patch for lsearch lookups tidying
                            Patch for .include_if_exists
                            Patch for partial- not recognized in host list
                            Lots more patches for bug fixes, enhancements, and
                              code refactorings - too many to record details!
Jochen Erwied             Fix for BDB 4.1 API
Stefan Esser              Fix for DNS RR parsing bug
Peter Evans               Suggested using modification time of "new" for time
                            of "mailbox last read" for maildir
Andrew Findlay            Patch to close writing end of ${readsocket
Michael Fischer
  v. Mollard              Suggested patch for exigrep -t option
Kevin Fleming             Callout cache code
                            Patch for authenticated_sender
Tony Finch                Expansion extensions
                            Timezone addition to log timestamps
                            A number of useful code criticisms
                            Timezone patch for exiwhat
                            Patch for more daemon exiwhat information
                            Patch for -dd
                            Patch for mxh lookup type in dnsdb
                            Patch for defer_foo in dndsb
                            Patch for ${dlfunc
                            Patch for $message_linecount
                            ... and many more
Graeme Fowler             Suggested patch for /noupdate with ratelimit
Ian Freislich             Patch for spamd timeout problem
Giuliano Gavazzi          Patches for OSX compilation
Dominic Germain           Patch for exiqgrep MacOS X bug
Oliver Gorwits            $load_average patch
                          Patch for additional syslog facilities
James Grinter             Suggested patches for header manipulation functions
                            and recipient remove for local_scan() use
Lukasz Grochal            Patch for saslauthd buglet
Pavel Gulchouck           Diagnosis of return_path_on_delivery crash
Michael Haardt            Tidies to make the code stricter
                          Refactoring to allow for other filter types
                          Suggested patch for appendfile "folder" extension
                          Module to support Sieve (RFC 3028) filters and
                            continued maintenance of same
                          Patch for faster sort algorithm in queue.c
                          Patch for LDAP timeout handling
                            ... and several more
Thomas Hager              Patch for saslauthd crash bug
Richard Hall              Fix for file descriptor leak in redirection
                          Fix for exiqsumm output corner case
Jori Hamalainen           Patch to add features to exiqsumm
                          Patch to speed up exigrep
Steve Haslam              Lots of stuff, including
                            HMAC computations
                            Better error messages for BDB
Sheldon Hearn             Suggested patch for smtp_accept_max_nonmail_hosts
                          Fix for compile error with OpenSSL 0.9.8e
Bryan Henderson           Patch to use RM_COMMAND everywhere during building
Jakob Hirsch              Patch for % operator
                          Patch for arbitrarily named ACL variables
Magnus Holmgren           Patch for filter_prepend_home
                          Patch for "h" flag in Domain Keys
                          Patch for $sending_ip_address/$sending_port
                          Patch for ${rfc2047d:
                            ... and several more
                          Lots of other maintenance support
Kjetil Torgrim Homme      Patch for require_files problem on NFS file systems
Tom Hughes                Suggested patch for $n bug in pipe command from filter
Pierre Humblet            Continued Cygwin support
Peter Ilieve              Suggested patch for lookup search bug
John Jetmore              Writing and maintaining the 'exipick' utility
                          Much helpful testing of the test suite & elsewhere
                          Patch for -Mset
                          Patch for TLS testing with -bh/-bhc/-bs
                          Patch for exigrep -v functionality
Bob Johannessen           Patch for Sieve envelope tests bug
                          Patch for negative uid/gid bug
Brad Jorsch               Patch for bitwise logical operators
                          Patch for using "message" on acceptance
                          Patch to add == and =& to dnslists
Christian Kellner         Patch for LDAP dereferencing
Alex Kiernan              Patches for libradius
                          Diagnosis of milliwait clock-backwards bug
                          Patch for BDB 4.3 API change
Tom Kistner               SPA server code
                          Writing and maintaining the content scanning
                            extension (exiscan)
Jürgen Kreileder          Fix for cyrus_sasl advertisement problem
Friso Kuipers             Patch for GDBM problem
Matthias Lederhofer       Diagnosing and patching obscure and subtle socket bug
Chris Liddiard            Fix for bug in exiqsumm
Chris Lightfoot           Patch for -restore-times in exim_lock
Edgar Lovecraft           Patch for ${str2b64:
Torsten Luettgert         Suggested patch for proper integer overflow detection
Todd Lyons                Patch to add DMARC support using OpenDMARC libs/tools
David Madole              Patch for SPA forced expansion failure bug
Lars Mainka               Patch for OpenSSL crl collections
Andrey Malyshev           Patch for $address_data after redirection bug
Lionel Elie Mamane        Patch for IPv4/IPv6 listen() problem on USAGI Linux
                          Patch for recognizing IPv6 "scoped addresses"
                          Patch for callout caching bug
Everton da Silva Marques  Suggested patch for SRV handling
                          Suggested patch for SRV/MX lookup retry option
Nikos Mavrogiannopoulos   GnuTLS proof of concept code
                          Update to RSA and D-H parameter caching code
Komar Maxim               Patch for check_rfc2047_length
Andy Mell                 Fix for rejectlog regeneration bug
Marc Merlin               Many suggestions and patches for callouts and
                            SMTP error message features
Andreas Metzler           Patch for message_id_header_domain
                          Suggested patch for multi-config files in scripts bug
                          GnuTLS non-existent parameter file bug fix
Alex Miller               Suggested readline() patch
                          Patch for LDAP_RES_SEARCH_REFERENCE handling
                          Support for the DrWeb content scanner
Arkadiusz Miskiewicz      Patch to add timeout to reads in malware.c
Martin Mrazik             Patches for problems in the test suite
Andreas Mueller           Patch for logging uncompleted SMTP transactions
Pete Naylor               Patch for LDAP TCP connect timeout setting
Alexander Newmann         Diagnosing and patching obscure and subtle socket bug
Matthew Newton            Patch for exicyclog log location problem
Marcin Owsiany            Diagnosis of a tricky timeout failure bug
Andrey Panin              Dovecot authenticator
Eric Parusel              Patch for tls_remember_esmtp
Gaige Paulsen             Amended Darwin config files
Richard Premdas           Patch for PAM buglet
Jason Pyeron              Suggested patch for ignoring Sendmail's -O option
Axel Rau                  Patch for Transport Post Delivery sql logging
Mark Rigby-Jones          Patch for race condition during MBX locking
Robert Roselius           Patch for OpenSSL workaround for bad clients
Larry Rosenman            OpenUNIX config files
Alexander Sabourenkov     Patch to add saslauthd daemon support
                          Patch for MySQL non-data queries
David Saez                Suggested patch for $sender_hostname lookup if needed
                          Support for the clamd virus scanner
                          Suggested patch for increased number of ACL variables
Jonathan Sambrook         Suggested patch for expanding uid and gid lists
Peter Savitch             Diagnosis of FPE bug when statvfs() fails on spool
Harald Schueler           Patch for dn_expand() failure on truncated data
Heiko Schlichting         Diagnosis of intermittent daemon crash bug
Heiko Schlitterman        Proposed patch for +pid
Stephan Schulz            Patch for $host_data caching error
Lai Zit Seng              Patch for radiusclient 0.4.9 interface bugs
Tony Sheen                Log files with datestamped names and auto rollover
Martin Sluka              Patch for exigrep to include non-message lines
Adam Stephens             Suggested patch for IGNOREQUOTA in LMTP
Russell Stuart            Diagnosis of obscure batch multiple delivery bug
Tamas Tevesz              Patch for crypt16() support
Johan Thelmen             Support for the F-Secure virus scanner
William Thompson          Suggested patch for acl_smtp_helo
                          Suggested patch for nested ACL "drop" bug
                          Suggested patch for continuation lines in file ACLs
                          Patch for != support in DNS lists
Adam Thornton             Patch for SMTP port expansion
Daniel Tiefnig            Much helpful testing of the test suite
Rein Tollevik             Patch to fix search cache missing tidyup
Stefan Traby              Threaded Perl support
Samuli Tuomola            OS files for QNX 6.2.0
Dave Turner               Suggested patch for sender rewriting brokenness
Steve Usher               Unbuffered I/O patch for Dovecot authentication
Carlos Villegas           Suggested patch for "headers" in filter files
Matthias Waffenschmidt    Patch for build-time Perl bug in configure script
                          Queue run abandon log message tidy up
Norihisa Washitake        Suggested patch for RFC 2047 header decoding
Chris Webb                Patch for support of an SPF lookup method.
Florian Weimer            Patch for minor format string issue
                          Noticing the unwanted (and time-wasting) GnuTLS
                            RSA_EXPORT code, and supplying a patch to remove it
Joachim Wieland           Patches for PostgreSQL socket support and other
                            PostgreSQL functionality
                          Patch for hosts_avoid_esmtp
Stephen Wilcox            Patch for ignore_enotdir problem
Alain Williams            Suggested patch for exicyclog options
                          PATCH for LDAP referrals option
David Woodhouse           SQLite support proof of concept code
                          control=freeze/no_tell basic code
Erik ?                    patch to use select() instead of poll() on OS X
****

============================8< cut here >8==============================

The Exim Maintainers Lists
==========================

We'll start with the Exim Maintainers, who are the people with commit
access to the master git repository and a couple more folk; then we'll list
known contributors since the lists above.  Then we list the folks who work
to make Exim available on various operating systems as porters/packagers.

For the Maintainers, we may list primary focus area.  All maintainers
will have contributed to work outside those areas.  The maintainers'
contributions are initialled in ChangeLog.  Changes from before maintainership
should be listed as a contributor.

For other contributors, we will attempt to track all contributions.  Note that
the entries per-person were added initially by scanning back through the
ChangeLog and git, so are not in chronological order.

[ With names from all over the world, we need one sort order.  I've arbitrarily
  decreed it to be "normal British address-book sort order, but based on family
  name rather than whichever comes last and using whatever seems sanest for
  sort order of characters which do not collate onto an English character",
  which should handle the majority of cases.  If it is not adequate for some
  situation, we'll resolve it then.
  We leave out titles and honourifics, just names and handles. ]


Maintainers
-----------
Steve Campbell            eximstats maintainer.
Mike Cardwell             Exim webmaster.
Tony Finch                Unbreaks lots of things. Ratelimit code.
Graeme Fowler
Michael Haardt            Maintains Sieve support, works on DKIM.
Jeremy Harris
Philip Hazel              Retired.
                          Originating architect and author of the Exim project.
John Jetmore
Tom Kistner               DKIM. Content scanning. SPA.
Todd Lyons
Nigel Metheringham        Transitioning out of Default Victim status.
Phil Pennock              Mostly idle; some security bits still.
David Woodhouse           Dynamic modules. Security.


Contributors
------------
Andrew Aitchison          Spotted cmdline AV scanner regression with -bmalware
                          exim_msgdate
Simon Arlott              Code for outbound SSL-on-connect
                          Patch implementing %M datestamping in log filenames
                          Patch restoring SIGPIPE handler for child_open_uid
                          Patch fixing NUL term/init of DKIM strings
                          Patch fixing dnsdb TXT record handling for DKIM
                          Patch speeding up DomainKeys signing
Warren Baker              Found crash with MIME ACLs in non-SMTP local injection
Dmitry Banschikov         Path to check for LDAP TLS initialisation errors
René Berber               Pointed out mistake in build instructions for QNX
Johannes Berg             Maintained dynamically loadable module code out-of-tree
                          Patch expanding spamd_address if contains $
Jasen Betts               Spotted lack of docs re bool{} on empty string 
                            and typo fixes
Wolfgang Breyha           DCC integration; expandable spamd_address
                          Patch handling IPv6 addresses for SPF
                          Patch fixing DKIM verification when signature header
                            not prepended
                          Unbroke Cyrus SASL auth after incorrect SSF addition
                          Logging of 8bitmime reception
David Brownlee            Patch improving local interface IP address detection
Eugene Bujak              Security patch fixing buffer overflow in string_format
Adam Ciarcinski           Patch for TLS-enabled LDAP (alternative to ldaps)
Dennis Davis              Patches fixing compilation in older compilers
                          Reported dynlookup framework build issues on Solaris
Serge Demonchaux          Maintained dynamically loadable module code out-of-tree
                          Patch fixing sign/unsigned and UTF mismatches
Uwe Doering               Patch fixing DKIM multiple signature generation
Maxim Dounin              Patch portability of accept() len
Frank Elsner              Fixed build reliability by exporting LC_ALL=C
Paul Fisher               Diagnosed smtp_cmd_buffer_size affecting GSSAPI SASL
                            initial response, raised buffer size
                          Patch adjusting connection_max_messages wait-DB usage
Oliver Fleischmann        Patches fixing compilation in older compilers
Julian Gilbey             Helped improve userforward local_part_suffix docs
Richard Godbee            Patch fixing usage fprintf
Steve Haslam              Maintained dynamically loadable module code out-of-tree
Oliver Heesakkers         Debugged dynamic lookup build issues for LOOKUP_foo.
Dmitry Isaikin            Spotted short writes to local files
                          Patch for format string regression
Alun Jones                Patch for NULL dereference in localhost_number
Brad Jorsch               Patches fixing Resent-*: header handling
John Hall                 Updated PCRE to 7.4 (when in-tree)
Jeremy Harris             Patch to log authentication information in reject log
                          Reported a ${extract error message typo
Jakob Hirsch              Patch implementing freeze_signal on pipe transports
                          Suggested X-Envelope-Sender: for content-scanning
                          Patch fixing Base64 decode bugs
John Horne                Patch adding $av_failed
                          Patch escaping log text after lookup expansion defer
                          Documentation fixes
                          Pointed out ClamAV ExtendedDetectionInfo compat issue
Regid Ichira              Documentation fixes
Andreas M. Kirchwitz      Let /dev/null have normal permissions (4.73 fallout)
J. Nick Koston            Patch adding force_command pipe transport option
Roberto Lima              Patch letting exicyclog rotate paniclog
Todd Lyons                Patch handling TAB in MAIL arguments
Christof Meerwald         Provided insight & suggested patch for GnuTLS update
Andreas Metzler           Patch upgrading PolarSSL (DKIM)
                          Reported delivery logging problems (4.73 fallout)
                          Patch to build without WITH_CONTENT_SCAN
                          Patches fixing docs for max_rcpts, relay hosts/domains
                          Documentation fixes
Kirill Miazine            Multiple patches improving Dovecot authenticator
Robert Millan             Wrote SPF Best Guess support
Marcin Mirosław           Running static analysis tools for us, catching issues
Dirk Mueller              Patch extending use of our printf() compiler checking
Andrey Oktyabrski         Patch fixing wide character breakage in rfc2047 coding
                          Patch keeping SQL errors from being returned over SMTP
Phil Pennock              Patch adding gnutls_compat_mode
                          Patches adding bool{} and later bool_lax{}
                          Patch for TLS library version reporting build/runtime
                          Patch letting EXPN work under TLS
                          More patches built up & applied when became maintainer
Mark Daniel Reidel        Patch adding f-protd malware scanner support
Steven A Reisman          Pointed out ${eval:x % 0} SIGFPE
Todd Rinaldo              Patch fixing transport filter timeout
Dan Rosenberg             Security notification & patch for hardlink attack on
                            sticky mail directory
                          Security notification of race condition in MBX locking
Jay Rouman                Kept our copyright claim in the 21st century, not 11th
                          Drew attention to SSL docs and epoch issue on 32bit
Heiko Schlittermann       Patch making maildir_use_size_file expand
                          Patch fixing maildir quota file races
                          Patch fixing make parallelisation
                          Updates to eximstats, exiwhat
Janne Snabb               TLS extensive debugging & failure root cause analysis
                          Added SPF record type support to dnsdb lookup
Jan Srzednicki            Patch improving Dovecot authenticator
                          Reported crash in Dovecot authenticator
Samuel Thibault           Patch fixing IPv6 interface address detection on Hurd
Martin Tscholak           Reported issue with TLS anonymous ciphersuites
Stephen Usher             Patch fixing use of Oracle's LDAP libraries on Solaris
Jasper Wallace            Patch for LibreSSL compatibility
Holger Weiß               Patch leting ${run} return more data than OS pipe
                            buffer size
Moritz Wilhelmy           Pointed out PCRE_PRERELEASE glitch
Alain Williams            Patch supporting MySQL stored procedures
Mark Zealey               Patch updating $message_linecount for maildir_tag
                          Patch improving spamd server selection
                          Patch to allow multiple TCP clamd servers


Packagers
---------
Mark Baker                Debian, through Exim 3
Hilko Bengen              Debian, Exim 4, current(*) maintenance
Tim Cutts                 Debian, initial packaging
Marc Haber                Debian, Exim 4, current(*) maintenance
Steve Haslam              Debian, Exim 4
Andreas Metzler           Debian, current(*) maintenance
Christian Perrier         Debian, current(*) maintenance

(*) Current as of our last information as of release: Exim 4.82


# vim: set fileencoding=utf-8 expandtab :
