diff options
137 files changed, 10468 insertions, 0 deletions
diff --git a/debian/EDITME.exim4-heavy.diff b/debian/EDITME.exim4-heavy.diff new file mode 100644 index 0000000..a72e961 --- /dev/null +++ b/debian/EDITME.exim4-heavy.diff @@ -0,0 +1,119 @@ +--- EDITME.exim4-light Thu Mar 6 10:29:31 2003 ++++ EDITME.exim4-heavy Thu Mar 6 10:28:40 2003 +@@ -191,7 +191,7 @@ + + # This one is very special-purpose, so is not included by default. + +-# ROUTER_IPLOOKUP=yes ++ROUTER_IPLOOKUP=yes + + + #------------------------------------------------------------------------------ +@@ -223,7 +223,7 @@ + + SUPPORT_MAILDIR=yes + SUPPORT_MAILSTORE=yes +-# SUPPORT_MBX=yes ++SUPPORT_MBX=yes + + + #------------------------------------------------------------------------------ +@@ -239,15 +239,15 @@ + LOOKUP_LSEARCH=yes + + LOOKUP_CDB=yes +-# LOOKUP_DNSDB=yes ++LOOKUP_DNSDB=yes + LOOKUP_DSEARCH=yes +-# LOOKUP_LDAP=yes +-# LOOKUP_MYSQL=yes ++LOOKUP_LDAP=yes ++LOOKUP_MYSQL=yes + LOOKUP_NIS=yes + # LOOKUP_NISPLUS=yes + # LOOKUP_ORACLE=yes + LOOKUP_PASSWD=yes +-# LOOKUP_PGSQL=yes ++LOOKUP_PGSQL=yes + # LOOKUP_WHOSON=yes + LOOKUP_WILDLSEARCH=yes + +@@ -261,7 +261,7 @@ + # with Solaris 7 onwards. Uncomment whichever of these you are using. + + # LDAP_LIB_TYPE=OPENLDAP1 +-# LDAP_LIB_TYPE=OPENLDAP2 ++LDAP_LIB_TYPE=OPENLDAP2 + # LDAP_LIB_TYPE=NETSCAPE + # LDAP_LIB_TYPE=SOLARIS + +@@ -278,8 +278,8 @@ + + # LOOKUP_INCLUDE=-I /usr/local/ldap/include -I /usr/local/mysql/include -I /usr/local/pgsql/include + # LOOKUP_LIBS=-L/usr/local/lib -lldap -llber -lmysqlclient -lpq +-# LOOKUP_INCLUDE=-I/usr/include/mysql -I/usr/include/postgresql +-# LOOKUP_LIBS=-lldap -llber ++LOOKUP_INCLUDE=-I/usr/include/mysql -I/usr/include/postgresql ++LOOKUP_LIBS=-lldap -llber -lmysqlclient -lpq + + + #------------------------------------------------------------------------------ +@@ -290,7 +290,7 @@ + # files are defaulted in the OS/Makefile-Default file, but can be overridden in + # local OS-specific make files. + +-EXIM_MONITOR=eximon.bin ++# EXIM_MONITOR=eximon.bin + + + +@@ -313,7 +313,7 @@ + + AUTH_CRAM_MD5=yes + AUTH_PLAINTEXT=yes +-# AUTH_SPA=yes ++AUTH_SPA=yes + + + #------------------------------------------------------------------------------ +@@ -325,14 +325,14 @@ + # leave these settings commented out. + + # This setting is required for any TLS support (either OpenSSL or GnuTLS) +-# SUPPORT_TLS=yes ++SUPPORT_TLS=yes + + # Uncomment this setting if you are using OpenSSL + # TLS_LIBS=-lssl -lcrypto + + # Uncomment these settings if you are using GnuTLS +-# USE_GNUTLS=yes +-# TLS_LIBS=-lgnutls -ltasn1 -lgcrypt ++USE_GNUTLS=yes ++TLS_LIBS=-lgnutls -ltasn1 -lgcrypt + + # If you are running Exim as a server, note that just building it with TLS + # support is not all you need to do. You also need to set up a suitable +@@ -458,7 +458,7 @@ + # (version 5.004 or later) installed, set EXIM_PERL to perl.o. Using embedded + # Perl costs quite a lot of resources. Only do this if you really need it. + +-# EXIM_PERL=perl.o ++EXIM_PERL=perl.o + + + #------------------------------------------------------------------------------ +@@ -468,11 +468,11 @@ + # support, which is intended for use in conjunction with the SMTP AUTH + # facilities, is included only when requested by the following setting: + +-# SUPPORT_PAM=yes ++SUPPORT_PAM=yes + + # You probably need to add -lpam to EXTRALIBS, and in some releases of + # GNU/Linux -ldl is also needed. +-EXTRALIBS=-ldl ++EXTRALIBS=-lpam + + + #------------------------------------------------------------------------------ diff --git a/debian/EDITME.exim4-light.diff b/debian/EDITME.exim4-light.diff new file mode 100644 index 0000000..56ebccf --- /dev/null +++ b/debian/EDITME.exim4-light.diff @@ -0,0 +1,174 @@ +--- src/EDITME Thu Mar 6 10:28:40 2003 ++++ EDITME.exim4-light Thu Mar 6 10:29:31 2003 +@@ -98,7 +98,7 @@ + # /usr/local/sbin. The installation script will try to create this directory, + # and any superior directories, if they do not exist. + +-BIN_DIRECTORY=/usr/exim/bin ++BIN_DIRECTORY=/usr/sbin + + + #------------------------------------------------------------------------------ +@@ -113,7 +113,7 @@ + # directories if they don't exist. It will also install a default runtime + # configuration if this file does not exist. + +-CONFIGURE_FILE=/usr/exim/configure ++CONFIGURE_FILE=/etc/exim4/exim4.conf:/var/lib/exim4/config.autogenerated + + # It is possible to specify a colon-separated list of files for CONFIGURE_FILE. + # In this case, Exim will use the first of them that exists when it is run. +@@ -131,14 +131,14 @@ + # owner of a local mailbox.) Specifying these values as root is very strongly + # discouraged. These values are compiled into the binary. + +-EXIM_USER= ++EXIM_USER=8 + + # If the setting of EXIM_USER is numeric (e.g. EXIM_USER=42), there must + # also be a setting of EXIM_GROUP. If, on the other hand, you use a name + # for EXIM_USER (e.g. EXIM_USER=exim), you don't need to set EXIM_GROUP unless + # you want to use a group other than the default group for the given user. + +-# EXIM_GROUP= ++EXIM_GROUP=8 + + # Many sites define a user called "exim", with an appropriate default group, + # and use +@@ -159,7 +159,7 @@ + + # Almost all installations choose this: + +-SPOOL_DIRECTORY=/var/spool/exim ++SPOOL_DIRECTORY=/var/spool/exim4 + + + +@@ -212,7 +212,7 @@ + # This one is special-purpose, and commonly not required, so it is not + # included by default. + +-# TRANSPORT_LMTP=yes ++TRANSPORT_LMTP=yes + + + #------------------------------------------------------------------------------ +@@ -221,8 +221,8 @@ + # MBX, is included only when requested. If you do not know what this is about, + # leave these settings commented out. + +-# SUPPORT_MAILDIR=yes +-# SUPPORT_MAILSTORE=yes ++SUPPORT_MAILDIR=yes ++SUPPORT_MAILSTORE=yes + # SUPPORT_MBX=yes + + +@@ -238,18 +238,18 @@ + LOOKUP_DBM=yes + LOOKUP_LSEARCH=yes + +-# LOOKUP_CDB=yes ++LOOKUP_CDB=yes + # LOOKUP_DNSDB=yes +-# LOOKUP_DSEARCH=yes ++LOOKUP_DSEARCH=yes + # LOOKUP_LDAP=yes + # LOOKUP_MYSQL=yes +-# LOOKUP_NIS=yes ++LOOKUP_NIS=yes + # LOOKUP_NISPLUS=yes + # LOOKUP_ORACLE=yes +-# LOOKUP_PASSWD=yes ++LOOKUP_PASSWD=yes + # LOOKUP_PGSQL=yes + # LOOKUP_WHOSON=yes +-# LOOKUP_WILDLSEARCH=yes ++LOOKUP_WILDLSEARCH=yes + + + #------------------------------------------------------------------------------ +@@ -278,6 +278,8 @@ + + # LOOKUP_INCLUDE=-I /usr/local/ldap/include -I /usr/local/mysql/include -I /usr/local/pgsql/include + # LOOKUP_LIBS=-L/usr/local/lib -lldap -llber -lmysqlclient -lpq ++# LOOKUP_INCLUDE=-I/usr/include/mysql -I/usr/include/postgresql ++# LOOKUP_LIBS=-lldap -llber + + + #------------------------------------------------------------------------------ +@@ -309,8 +311,8 @@ + # included in the Exim binary. You will then need to set up the run time + # configuration to make use of the mechanism(s) selected. + +-# AUTH_CRAM_MD5=yes +-# AUTH_PLAINTEXT=yes ++AUTH_CRAM_MD5=yes ++AUTH_PLAINTEXT=yes + # AUTH_SPA=yes + + +@@ -405,6 +407,7 @@ + # to form the final file names. Some installations may want something like this: + + # LOG_FILE_PATH=/var/log/exim_%slog ++LOG_FILE_PATH=/var/log/exim4/%slog + + # which results in files with names /var/log/exim_mainlog, etc. The directory + # in which the log files are placed must exist; Exim does not try to create +@@ -438,7 +441,7 @@ + # files. Both the name of the command and the suffix that it adds to files + # need to be defined here. See also the EXICYCLOG_MAX configuration. + +-COMPRESS_COMMAND=/usr/bin/gzip ++COMPRESS_COMMAND=/bin/gzip + COMPRESS_SUFFIX=gz + + +@@ -446,7 +449,7 @@ + # If the exigrep utility is fed compressed log files, it tries to uncompress + # them using this command. + +-ZCAT_COMMAND=/usr/bin/zcat ++ZCAT_COMMAND=/bin/zcat + + + #------------------------------------------------------------------------------ +@@ -469,6 +472,7 @@ + + # You probably need to add -lpam to EXTRALIBS, and in some releases of + # GNU/Linux -ldl is also needed. ++EXTRALIBS=-ldl + + + #------------------------------------------------------------------------------ +@@ -556,8 +560,8 @@ + # haven't got Perl, Exim will still build and run; you just won't be able to + # use those utilities. + +-# CHOWN_COMMAND=/usr/bin/chown +-# CHGRP_COMMAND=/usr/bin/chgrp ++CHOWN_COMMAND=/bin/chown ++CHGRP_COMMAND=/bin/chgrp + # MV_COMMAND=/bin/mv + # RM_COMMAND=/bin/rm + # PERL_COMMAND=/usr/bin/perl +@@ -741,6 +745,7 @@ + # file can be specified here. Some installations may want something like this: + + # PID_FILE_PATH=/var/lock/exim.pid ++PID_FILE_PATH=/var/run/exim4/exim.pid + + # If PID_FILE_PATH is not defined, Exim writes a file in its spool directory + # using the name "exim-daemon.pid". +@@ -773,6 +778,9 @@ + # run time option is required to cause the moving actually to occur. Such + # messages become "invisible" to the normal management tools. + +-# SUPPORT_MOVE_FROZEN_MESSAGES=yes ++SUPPORT_MOVE_FROZEN_MESSAGES=yes + + # End of EDITME for Exim 4. ++ ++# enable support for IPv6 ++HAVE_IPV6=YES diff --git a/debian/EDITME.eximon.diff b/debian/EDITME.eximon.diff new file mode 100644 index 0000000..9e86fe3 --- /dev/null +++ b/debian/EDITME.eximon.diff @@ -0,0 +1,7 @@ +--- exim_monitor/EDITME Mon Jul 22 10:59:52 2002 ++++ EDITME.eximon Thu Mar 6 10:28:40 2003 +@@ -1,3 +1,4 @@ ++# -*- makefile -*- + ################################################## + # The Exim Monitor # + ################################################## diff --git a/debian/README.Debian b/debian/README.Debian new file mode 100644 index 0000000..ec0d164 --- /dev/null +++ b/debian/README.Debian @@ -0,0 +1,192 @@ +This is the Debian package for exim4. + +As with the apache package, exim4 is an entirely different package +that does not currently offer a smooth upgrade path from the Debian +exim 3 packages. exim 3 will stay default MTA for Debian sarge. + +It is the first exim package in Debian that can be configured using +debconf. However, the entire configuration framework is extremely +flexible, allowing you to get exactly the amount of control you need +for the job at hand. + +To use exim4, you need at least the following packages: +exim4-base EXperimental Internal Mailer -- a Mail Transport +exim4-config Debian configuration for exim4 +exim4-daemon-light Lightweight version of the Exim (v4) MTA + +Just apting the meta-package exim4 will pull in the other packages per +dependency. You'll get an exim daemon with minimal feature set (no external +lookups, no TLS). + +If you want to have a different feature set, you can install one of +the other exim4-daemon-Packages instead of exim4-daemon-light, or you +can modify the source package to build exim4-daemon-custom according +to your needs. The infrastructure to do so is already in place, see +debian/rules for instructions. + +******************************************** +Updating from exim 3 *********************** +******************************************** + +If you use exim4-config from Debian, you'll get the debconf based +configration scheme that is intended to cover the majority of cases. + +If exim4-config is installed while an exim 3 package is present on the +system, exim4-config tries to parse the exim 3 config file to +determine the answers that were given to eximconfig on exim 3 +installation. These answers are then taken as default values for the +debconf based configuration process. Be warned! eximconfig from the +exim 3 packages doesn't record the explicit answers given on exim 3 +configuration. So we have to guess the answers from the exim 3 +configuration file /etc/exim/exim.conf, which is bound to fail if the +config file has been modified after using eximconfig. + +This is the reason why we refrained from doing a "silent update", but +only use the guessed answers to get reasonable defaults for our +debconf based configuration process. + +Please note that we do not use the update4r4 script, but try to +configure the exim 4 package in the same way exim 3 was. This will +hopefully aid future updates. + +If you have used a customized exim 3 configuration, you can of course +use update4r4, and install the resulting file as /etc/exim4/exim4.conf +after careful inspection. exim4 will then use that file and ignore the +file that it generated from the debconf configuration. To aid future +updates, we do, however, encourage you not to use the +update4r4-generated file verbatim but instead drop appropriate +configuration snippets in their appropriate place in +/etc/exim4/conf.d. + +******************************************************* +Customizing configuration for using exim4-config ****** +******************************************************* + +exim4-config provides update-exim4.conf, a script that uses the files +from /etc/exim4/conf.d to build the actual exim4 config file located +in /var/lib/exim4/config.autogenerated. It is invoked by the init +script prior to any operation that may invoke an exim process, and +gives an error message if the generated config file is syntactically +invalid. + +Since /var/lib/exim4/config.autogenerated is generated automatically, +any changes made there are overwritten! +/var/lib/exim4/config.autogenerated is _NOT_ a dpkg-conffile! + +Each directory in /etc/exim4/conf.d corresponds to a section in the +actual config file, with the contents if the files in that directory +being written to the config file in alphabetical order. It is +encouraged that each router, transport etc. goes in its own file. + +exim4-config comes with a collection of control files that build to an +exim configuration that can handle most tasks of mail delivery. +Additional parameters are asked from the user on package install with +debconf questions. The result of these debconf questions is written to +/etc/exim4/update-exim4.conf.conf. If you want to reconfigure exim with +debconf invoke "dpkg-reconfigure exim4-config". update-exim4.conf uses +the contents of /etc/exim4/update-exim4.conf.conf to put parameters +into the generated exim 4 config file. Some files in /etc/exim4/conf.d +are modified in this process. + +The files modified by update-exim4.conf are protected by an md5 +checksum, so that update-exim4.conf can refrain from changing these +files if they have been manually modified. This might result in a +non-working exim 4 configuration, so you might want to set +conftype=none to keep update-exim4.conf from modifying any +/etc/exim/conf.d file. + +More information about exim4-config's update-exim4.conf can be found +in its man page, update-exim4.conf(8). + +If you want to use a handcrafted, monolithic exim.conf file, you can +put that file into /etc/exim4/exim4.conf, and exim will use that file. +/var/lib/exim4/config.autogenerated, the file generated by +update-exim4.conf, is ignored in that case. You might want to set +conftype=none in that case. + + +******************************************************* +Using a completely different configuration scheme ***** +******************************************************* + +If you want to, you can replace exim4-config by something entirely +different. The other packages don't care. Your package needs to: + +- Provides: exim4-config, Conflicts: exim4-config +- drop the exim 4 configuration either into + /var/lib/exim4/config.autogenerated or into /etc/exim4/exim4.conf. + +Your package might provide an executeable update-exim4.conf that must +be in root's path (/usr/sbin recommended). The init script will invoke +that executable prior to invoking the actual exim daemon. + +The Source Package has a subdirectory debian/exim4-config-simple which +contains a simple, not debconf-driven configuration scheme as example +(in form of a Debian source package). And you can invoke +"debian/config-custom/create-custom-package" which will create a new +source package "exim4-config-custom" with the debconf-driven config +scheme of exim4-config for your local modification. + +Exchanging the entire exim4-config package with something custom comes +particularly handy for sites that have more than a few machines that +are similarly configured, but doesn't want to use the original +exim4-config package. Build your own exim4-config-custom or +exim4-config-foo, and simply apt that package to the machines that +need to have that configuration. Future updates can then be handled +via the dpkg-conffile mechanism, properly detecting local modifications. + + + +******************************************** +Misc Notes ********************************* +******************************************** + +PAM: +On Debian systems the PAM modules run as the same user as the calling program, +so they can't do anything you couldn't do yourself, and in particular can't +access /etc/shadow unless the user is in group shadow. - If you want to use +/etc/shadow for Exim's SMTP AUTH you will need to run exim as group shadow. +Only exim4-daemon-heavy is linked against libpam. +_____________________________________________ + +convert4r4 ist installed as /usr/sbin/exim_convert4r4. +_____________________________________________ + +******************************************** +Modifications ****************************** +******************************************** +Patches by Steve Haslam available from + http://www.arise.demon.co.uk/exim-patches/: +****** +boolean_redefine_protect + [src/mytypes.h] + Surround the definition of TRUE and FALSE macros with #ifndef + /#endif, in case some other header defines them (from mixing No + Perl and Exim, istr) + +****** +Other stuff +****** +* link exim dynamically against pcre. + +* The main binary is /usr/sbin/exim4: + - src/globals.c was changed to use 'US BIN_DIRECTORY "/exim4"' as default + for exim_path. + - changed default for $exim_path (modulo lower/upper case) from + BIN_DIRECTORY/exim to BIN_DIRECTORY/exim4 in exicyclog.src, + exim_checkaccess.src, eximon.src, exinext.src, exiqgrep.src, + exiwhat.src. + - OS/Makefile-Linux:EXIWHAT_MULTIKILL_ARG=exim4 + +* localscan_dlopen.patch downloaded from + http://marc.merlins.org/linux/exim/files/sa-exim-current/ + Allow to use and switch between different local_scan functions without + recompiling exim. + Use + local_scan_path = /path/to/sharedobject + to utilze local_scan() in /path/to/sharedobject + +* local_scan.c perl plugin by Richard Baker <rich@mondaymorning.org> from + http://oss.bibliotech.net/ - Modified to compile as shared object that can be + dlopened. + Use perl script /etc/exim4/local_scan.pl for local scan API. diff --git a/debian/README.TLS b/debian/README.TLS new file mode 100644 index 0000000..679d1ef --- /dev/null +++ b/debian/README.TLS @@ -0,0 +1,117 @@ +Notes about TLS/SSL support +------------------- +[written by Sander Smeenk <ssmeenk@debian.org>] +[modified by AndreasMetzler <ametzler@downhill.at.eu.org>] + +For a real cool example on what is possible with Exim 4's new ACLs visit +Marc Merlin's Exim 4 Page: http://marc.merlins.org/linux/exim/ + +Further down is explanation about dhparams, you might have been directed +here through exim-gencerts or the package supplied exim configuration file. + + +HOW TO ENABLE TLS SUPPORT WITH EXIM-TLS V4+ +------------------------------------------- + +Install a flavour of exim that is compiled with TLS support, i.e. +exim4-daemon-heavy (or a exim4-daemon-custom) but NOT +exim4-daemon-light. + +You should have created certificates in /etc/exim4/ either by hand +or by usage of the exim-gencert (which requires openssl). +exim-gencert is shipped in /usr/share/doc/exim4-base/examples/ + +Next edit /etc/exim4/conf.d/main/03_exim4-base_tlsoptions and activate +these options by removing the hash-mark ("#") in front of them. +# hostlist auth_over_tls_hosts = * +# log_selector = +tls_cipher +tls_peerdn +# tls_advertise_hosts = * +# tls_certificate = /etc/exim4/exim.crt +# tls_privatekey = /etc/exim4/exim.key + +If you don't manage exim's configuration with debconf, you'll have to add +these options to your handcrafted configuration file +/etc/exim4/exim4.conf instead. + +* auth_over_tls_hosts + Defines what hosts to 'advertise' AUTHentication to when they connect + via TLS. Setting this to * will advertise this functionality to all + hosts that connect with TLS and this is a good default + +* log_selector + Defines that you want to log what cipher your exim and the peer's mailer + uses to encrypt the transaction. It also defines you want to log the 'DN' + (Distinguished Name) of the certificate of the peer. + +* tls_advertise_hosts + Defines what hosts to 'advertise' STARTTLS functionality to. Setting this + to * will advertise to all hosts that connect with EHLO, and this is a + good default + +* tls_certificate & tls_privatekey + Defines where your SSL-certificate and SSL-Private Key are located. + This requires a full path. The files pointed to must be kept 'secret' + and should be owned my root.mail mode 640 (-rw-r-----). Usually the + exim-gencert script takes care of these prerequisites. + + + +EXIM TELLS ME '454 TLS currently unavailable' WHAT IS WRONG?!! +-------------------------------------------------------------- + +Please refer to /var/log/exim/mainlog and/or paniclog. +You should see messages like: + 2003-01-27 19:06:45 TLS error on connection from localhost [127.0.0.1] + (cert/key setup): Error while reading file) + + + +DURING TRANSACTION EXIM TELLS ME 'not enough random bytes available' +'please do some other work to give the OS a chance to collect more entropy' +WHAT IS WRONG?!! +--------------------------------------------------------------------------- + +Exim was unable to read enough random data from /dev/random to seed it's +Diffie Hellman parameter generation. Please check that your /dev/random +device is setup properly. It has been reported that with 2.5.53 kernels +/dev/random sometimes won't give any output. + +Try generating alot of load for a while by doing things (as root) like: + + % find / -type f -exec cat {} \; + % tar cvzf - / | zcat > /dev/null + +Or build a kernel or X11 :) + +This will cause alot of interrupts and data to be read. It should generate +enough entropy. If it doesn't, check if your /dev/random *EVER* returns +data. + + +DHPARAMS AND WHY IT IS DISABLED EVERYWHERE +------------------------------------------ + +This version of Exim is compiled against GnuTLS. GnuTLS is a replacement +for the restrictive licensed OpenSSL libraries. GnuTLS does not support +varying its Diffie-Hellman parameters. Therefore tls_dhparam settings are +ignored in Exim's configuration file, and no dhparam file is generated by +exim-gencerts. + +GnuTLS uses RSA and D-H parameters that are computed when they are needed. +(eg. when someone sends STARTTLS, exim will compute these parameters). +After successful computation Exim will store these parameters in a cache +file located in Exim's spooldirectory (/var/spool/exim4/gnutls.params). + +It is wise to remove this file periodically so Exim creates a new set of +gnutls parameters. This is done by a cronjob that runs every 12 hrs. + +It's "more secure" when you have this file regenerated more often. +But remember that the exim process that has to create the file could take +a little longer before it responds to a STARTTLS command. (You should not +notice this on current computers). + +NOTE! The fact that GnuTLS does not support generated Diffie-Hellman +parameters does NOT make it less secure. + +Also refer to /usr/share/doc/exim4-base/NewStuff.gz, section 18. + diff --git a/debian/README.local_scan-perl b/debian/README.local_scan-perl new file mode 100644 index 0000000..33334a3 --- /dev/null +++ b/debian/README.local_scan-perl @@ -0,0 +1,9 @@ +This package includes a plugin to use a perl script running on Exim's +builtin perl interpreter for the local_scan interface. To enable it +set +local_scan_path = /usr/lib/exim4/local_scan/local_scan_perl-0.2.so +in the main part of Exim's run-time configuration file +(/etc/exim4/exim4.conf.template or /etc/exim4/exim4.conf) and put +your local_scan() perl routine in /etc/exim4/local_scan.pl + +See http://oss.bibliotech.net/ for details. diff --git a/debian/TODO b/debian/TODO new file mode 100644 index 0000000..f3c3b47 --- /dev/null +++ b/debian/TODO @@ -0,0 +1,14 @@ +Tell maintainers of exim and exim-tls that they need conflicts/replaces +with -base (or -common or whatever name we choose). + +debconf: +* validating input + +inetd support (sarge+1) +Hurd patches? + + +================================================================ +grep -r for REMOVEMEBEFORERELEASE and do it. +remove -prerelease from received:-header before first unstable upload + diff --git a/debian/changelog b/debian/changelog new file mode 100644 index 0000000..b40c4f6 --- /dev/null +++ b/debian/changelog @@ -0,0 +1,788 @@ +exim4 (4.12-0.1) experimental; urgency=low + + * minimal doc-updates + * init-script: output status-message before starting upex4conf() + * polish smtp-auth examples - don't hardcode passwords in main + configuration file. + * change default file-permissions of configfile to 0644. This can be changed + by setting CFILEMODE in the default file. + * rename debian/patches/*, giving each one an unambiguous number + * ignore private rfc1918 and APIPA addresses in internet router (MH) + * correct info about authorship of dlopen patch + * don't link exim4-daemon-light against PAM (explicitely link it against libdl) + * same_domain_copy_routing = yes for primrout-internet, primrout-satellite + and primrout-smarthost (MH) + * rename debconf.results to update-exim4.conf.conf, add upgrading-magic for + upgrading from 4.12-0 and earlier (marked as REMOVEMEBEFORERELEASE) + * introduce REMOVEMEBEFORERELEASE-tag, grep -r on debian/ will show us all + the cruft that needs to be removed before uploading to unstable. + + -- Andreas Metzler <ametzler@debian.org> Wed, 5 Mar 2003 19:03:59 +0100 + +exim4 (4.12-0) experimental; urgency=low + + * removed TODO marker from the copyright file + * version number for first Debian upload + * built i386 binary package on sid + + -- Marc Haber <mh+debian-packages@zugschlus.de> Fri, 21 Feb 2003 14:40:42 +0100 + +exim4 (4.12-0.0.21) experimental; urgency=low + + * update copyright + * exim-gencert: generate certificates valid for three years instead 30 + days + * remove debian/debconf/exim4.conf.template + * enable LMTP, LOOKUP_NIS and mailstore for daemon-light + + -- Andreas Metzler <ametzler@logic.univie.ac.at> Fri, 21 Feb 2003 12:55:40 +0100 + +exim4 (4.12-0.0.20) experimental; urgency=low + + * ship /usr/lib/exim4/exim4 and use it to check whether daemon package + is installed. + * Exim doesn't require a HUP after logrotation. (See spec 44.2) (MH) + + -- Andreas Metzler <ametzler@downhill.at.eu.org> Thu, 20 Feb 2003 19:23:45 +0100 + +exim4 (4.12-0.0.19) experimental; urgency=low + + * Ship upstream-changelog only in exim4-base, Symlinks in packages depending + on it. Split off changelog entries up to 3.34-1 to changelog.Debian.old + which is only included in exim4-base. - Spares about 100KB. + * Ship ACKNOWLEDGMENTS in exim4-base docs. + * remove debian/exim4-config.docs, files are already shipped in exim4- + base + * disable some the unneeded dh_* commands from binary-indep target. + * make exim4 a metapackage + + -- Andreas Metzler <ametzler@downhill.at.eu.org> Thu, 20 Feb 2003 12:41:17 +0100 + +exim4 (4.12-0.0.18) experimental; urgency=low + + * split off all configuration to exim4-config + * include exim4-config-simple source package + * include script to generate exim4-config source package + * changed distribution to experimental + * Add patch by Phil Hazel to fix lsearch*@ lookups. (AM) + * Remove exim4-daemon-perl; merge it into exim4-daemon-heavy (AM) + * Prepare removal of "exim4" daemon-flavour: Exchange the roles of + "exim4" and "exim4-daemon-light" in debian/rules: build helper + binaries, eximon, et.al. while building exim4-daemon-light. Rename + EDITME.exim4-base.diff to EDITME.exim4.diff. (AM) + ----- + WARNING: This breaks your debian/EDITME.exim4-custom.diff, as it was + generated to show the differences to debian/EDITME.exim4-base instead of + EDITME.exim4-light. (AM) + ----- + + -- Marc Haber <mh+debian-packages@zugschlus.de> Tue, 18 Feb 2003 16:16:45 +0100 + +exim4 (4.12-0.0.17) unstable; urgency=low + + * mv 26_exim4-base_aliases 26_exim4-base_system_aliases (MH) + * mv 30_exim4-base_forward 30_exim4-base_userforward (MH) + * WARNING: upgrades are broken! + -After ugrading delete conffiles no longer in package in directories + below /etc/exim4/conf.d/: + router/26_exim4-base_aliases + router/30_exim4-base_forward + * all file names for transports and routers are now consistent with + Transport/Router defined inside (MH) + * add debug_print to all transports/routers (MH) + * add cut -d\ -f1 to all md5sum calls in pipes (MH) + * add man page for exiqgrep (MH) + * fix typos in exiqsumm and exicyclog man page (MH) + * Don't install exim.8.diff as manpage, apply the patch instead. (AM) + + -- Andreas Metzler <ametzler@logic.univie.ac.at> Sat, 15 Feb 2003 16:35:26 +0100 + +exim4 (4.12-0.0.16) unstable; urgency=low + + * Define CONFDIR-macro and use it in update-exim4.conf and some files in + CONFDIR. (AM) + * Enhance update-exim4.conf: remove comments by default, allow to write + output to a different file. (AM) + * update-exim4.conf: check validity of configfile before installing it + * fix breakage with newer md5sum - thanks to Sander (AM) + * check in init-script for smtp-service in inetd that is compatible with + openbsd-inetd's extended syntax (Hubert Chan) (AM) + * Don't link against libwrap, exim3 doesn't either (Alexander Koch) (AM) + + -- Andreas Metzler <ametzler@downhill.at.eu.org> Fri, 14 Feb 2003 19:55:54 +0100 + +exim4 (4.12-0.0.15) unstable; urgency=low + + * If exim4/dc_listenonpublic=false add an explaing line to the + resulting configfile instead of a blank-line (Marc Haber) + * In postinst and cronjob make sure that db files are owned by + mail:mail + * Add buzzword convert4r4 to description of "No configuration" profile + * Body of manpage exim_convert4r4: s/convert4r4/exim_convert4r4/g + * Change maintainer, add Marc Haber to Uploaders + + -- Andreas Metzler <ametzler@downhill.at.eu.org> Sun, 2 Feb 2003 22:06:06 +0100 + +exim4 (4.12-0.0.14) unstable; urgency=low + + * fix bugs found by Marc Haber: + - search for email-addresses file in /etc/exim4/ + - s/hostname -fqdn/hostname --fqdn/ + * exim4-base.config: don't grep in /etc/aliases if does not exist yet. + * clear up config-script, using both $mailname and $dc_mailname was + irritating. + * fix wrong logic for aliases generation (= instead of !=) + * fix major breakage of debconf code: config-script is called two times + _before_ postinst writes debconf.results, db_set-commands (for sane + defaults) in the second-run overwrote the answers given by the user. + + -- Andreas Metzler <ametzler@downhill.at.eu.org> Sat, 1 Feb 2003 15:06:58 +0100 + +exim4 (4.12-0.0.13) unstable; urgency=low + + * link against GNUTLS + + -- Andreas Metzler <ametzler@downhill.at.eu.org> Fri, 31 Jan 2003 16:32:31 +0100 + +exim4 (4.12-0.0.12) unstable; urgency=low + + * clean up at purge: Remove logfiles, ask about removing + undelivered mails in spool directory. + + -- Andreas Metzler <ametzler@downhill.at.eu.org> Fri, 31 Jan 2003 13:32:37 +0100 + +exim4 (4.12-0.0.11) unstable; urgency=low + + * clean up update-exim4.conf: + + fix unconditional overwriting 03_exim4-base_neverusers + + one central `tempfile -m...` + + add skeleton function example + * add missing 'set -e' to exim4-base.postrm + * If there are no debconf answers and we are making a cross upgrade + from exim3, try to parse its config file to seed debconf db. + + -- Andreas Metzler <ametzler@downhill.at.eu.org> Sun, 26 Jan 2003 12:22:23 +0100 + +exim4 (4.12-0.0.10) unstable; urgency=low + + * Get rid of error messages: don't call chmod/chown in + debconf/update-exim4.conf if the respective files don't exist. Don't try + to kill non running daemons. + * Don't start unconfigured daemon in init script, ie. require either + ${dc_eximconfig_configtype}" != "xnone or existence of handcrafted + /etc/exim4/exim4.conf. + Thanks to Alexander Koch for firmly pushing me this way. + * dc_listenonpublic was overwritten to true in config script. + * Typo in exim4-base.postrm prevented removal of + /etc/exim4/conf.d/router/28_exim4-base_hubuser + * Clean up /var/spool/exim4 properly; at least if there are just empty + directories. + * hub_user was broken because of unescaped $. + * import updated 10_daemon_close_fds.dpatch from Steve. + * only set neverusers if root is aliased somewhere. + + -- Andreas Metzler <ametzler@logic.univie.ac.at> Fri, 24 Jan 2003 17:14:13 +0100 + +exim4 (4.12-0.0.9) unstable; urgency=low + + * update-exim4defaults: Fix bugs, add option --init + * /etc/default/exim4 is no conffile anymore, it is generated with + update-exim4defaults. + + -- Andreas Metzler <ametzler@logic.univie.ac.at> Fri, 17 Jan 2003 13:39:46 +0100 + +exim4 (4.12-0.0.8) unstable; urgency=low + + * Don't ship now unneeded empty /var/lib/exim4/masquerade and + /var/lib/exim4/email_addresses + * move hub_user router to /etc/e4/c.d/ + * move primary-router definition to /etc/e4/c.d/ + * code in debian/rules installing /etc/exim4/conf.d/ tree ignores CVS + directories + * WARNING: upgrades from 0.0.6 and 0.0.7 are broken! + -After ugrading delete conffiles no longer in package in directories + below /etc/exim4/conf.d/: + rewrite/30_exim4-base + router/28_exim4-base_hub_user + - replace router/22_exim4-base_primary with a file containg only + the line "# d41d8cd98f00b204e9800998ecf8427e" + run update-exim4.conf afterwards and start daemon. + + -- Andreas Metzler <ametzler@logic.univie.ac.at> Tue, 14 Jan 2003 17:44:50 +0100 + +exim4 (4.12-0.0.7) unstable; urgency=low + + * Add configuration file managment code using md5sums stored in the file + itself to update-exim4.conf(8). Use it and move files for evaluation of + /e/e4/email-addresses and the masquerading rules from /var/lib/exim4 to + /etc/. Gets rid of /etc/exim4/conf.d/rewrite/30_exim4-base and its two + .includes. + + -- Andreas Metzler <ametzler@downhill.at.eu.org> Tue, 14 Jan 2003 13:05:51 +0100 + +exim4 (4.12-0.0.6) unstable; urgency=low + + * generate up to date manpage for eximstats with pod2man. + * EXPERIMENTAL: Split /etc/exim4/exim4.conf.template to little files + in /etc/exim4/conf.d/ - update docs accordingly. + * fix wrong path in exim4-base.doc-base.spec + + -- Andreas Metzler <ametzler@downhill.at.eu.org> Sun, 12 Jan 2003 18:25:40 +0100 + +exim4 (4.12-0.0.5) unstable; urgency=low + + * enhance default-file a lot. + * ship update-exim4defaults(8) - a script to allow other packages to modify + the default-file. + + -- Andreas Metzler <ametzler@downhill.at.eu.org> Mon, 6 Jan 2003 23:00:15 +0100 + +exim4 (4.12-0.0.4) unstable; urgency=low + + * Compile perl plugin with -fPIC + * Enable IPv6 support (Andrew Mulholland) + * remove exim4-base.cron.d, it only contained comments (no inetd support). + * enhance default-file: Allow disabling any queue runs and passing + additional options to exim daemon and/or the queuerunner. + + -- Andreas Metzler <ametzler@logic.univie.ac.at> Sun, 5 Jan 2003 13:16:37 +0100 + +exim4 (4.12-0.0.3) unstable; urgency=low + + * Keep patches separate to make upgrading easier, using dpatch. + * Rename eximon to eximon4: Otherwise this would force anybody who has + installed eximon and runs exim v3 to switch to exim v4 + * Polish package descriptions a little bit. + * Drop Recommends for netbase. We don't support inetd anyway. + + -- Andreas Metzler <ametzler@downhill.at.eu.org> Tue, 31 Dec 2002 14:31:14 +0100 + +exim4 (4.12-0.0.2) unstable; urgency=low + + * Actually compile with -O2 (Matthias Klose) + * Apply localscan_dlopen.patch from + http://marc.merlins.org/linux/exim/files/sa-exim-current/ to make it + possible to switch local_scan functions *without* recompiling exim. + * compile local_scan.c perl plugin as shared object that is dlopened, + document this in exim4-daemon-perl's description and doc-directory. + + -- Andreas Metzler <ametzler@downhill.at.eu.org> Sat, 21 Dec 2002 14:01:24 +0100 + +exim4 (4.12-0.0.1) unstable; urgency=low + + * New upstream 4.12, a strict maintainance release. Without any new features + (Don't worry - this is the real release i.e. Phil's third shot ;-) + + -- Andreas Metzler <ametzler@logic.univie.ac.at> Wed, 18 Dec 2002 12:17:51 +0100 + +exim4 (4.11-0.0.4) unstable; urgency=low + + * Get rid of /usr/lib/exim4/exim (see README.Debian for patched files) + * Use relative paths in debian/eximon.dirs + + -- Andreas Metzler <ametzler@downhill.at.eu.org> Tue, 17 Dec 2002 13:40:19 +0100 + +exim4 (4.11-0.0.3) unstable; urgency=low + + * fix dbm lookups (one-line patch to src/search.c) + + -- Andreas Metzler <ametzler@logic.univie.ac.at> Fri, 13 Dec 2002 13:38:31 +0100 + +exim4 (4.11-0.0.2) unstable; urgency=low + + * Fresh installs were broken, as the initial test in update-exim4.conf + failed. + * update-exim4.conf exits silently if /etc/exim4/exim4.conf exists. + * don't invoke update-exim4.conf in postinst if configtype=none. + + -- Andreas Metzler <ametzler@logic.univie.ac.at> Wed, 11 Dec 2002 16:32:47 +0100 + +exim4 (4.11-0.0.1) unstable; urgency=low + + * New upstream version 4.11: + includes spec und util/* in orig.tar.gz, diff is small again. + see NewStuff items 49 to 57 for new features since snapshot 4.10.13. + + -- Andreas Metzler <ametzler@logic.univie.ac.at> Wed, 11 Dec 2002 13:01:07 +0100 + +exim4 (4.10.13-0.0.4) unstable; urgency=low + + * reformat manpages a little bit, start each sentence on a new line, refer + to /usr/share/doc/exim4-base/ + * remove the %s from PID_FILE_PATH + * apply debian/fix-pid.issue.patch to fix minor security issue + http://www.exim.org/pipermail/exim-users/Week-of-Mon-20021202/046978.html + * test in init-script for working config before reloading/restarting + (Andreas Piesk) + + -- Andreas Metzler <ametzler@downhill.at.eu.org> Thu, 5 Dec 2002 13:04:51 +0100 + +exim4 (4.10.13-0.0.3) unstable; urgency=low + + * update copyright from NOTICE + * Typos in exim(8) + + -- Andreas Metzler <ametzler@downhill.at.eu.org> Wed, 4 Dec 2002 10:35:18 +0100 + +exim4 (4.10.13-0.0.2) unstable; urgency=low + + * Fix path for eximon.bin in eximon script (Andreas Piesk) + * Add comments at the head of exim4.conf.template, containing a short + introduction to the configuration scheme. + + -- Andreas Metzler <ametzler@downhill.at.eu.org> Tue, 3 Dec 2002 23:52:28 +0100 + +exim4 (4.10.13-0.0.1) unstable; urgency=low + + * Snapshot 4.10.13 + * CONFIGURE_FILE=/etc/exim4/exim4.conf:/var/lib/exim4/config.autogenerated + * update update-exim4.conf* and documentation accordingly. + * Generate config.autogenerated with same permissions as + /etc/exim4/exim4.conf.template (it might conatain passwords) + * Add BIG FAT warning at head of autogenerated file. + * don't ship /var/lib/exim4/config.autogenerated, simply remove it on + purge if it exists. + + -- Andreas Metzler <ametzler@logic.univie.ac.at> Mon, 2 Dec 2002 12:45:58 +0100 + +exim4 (4.10.12-0.0.1) unstable; urgency=low + + * Upgrade to testing snapshot 4.10.12 + * patches accepted/superseded by upstream: exim4-MID-expanded.patch, hmac*, + perl.c.patch + * patches that do not apply cleanly anymore: bV_shows_openssl_version.txt, + daemon_close_fds.txt, gcc_attributes-eximon.diff, gcc_attributes.txt, + tls_common.txt, tls_misc.txt, tls_session_cache.txt. + * minimize changes to scripts/exim_install - use INSTALL_ARG=-no_symlink instead. + * no util/cramtest.pl util/logargs.sh util/unknownuser.sh in upstream + tarball - perhaps only in testing version? + + -- Andreas Metzler <ametzler@downhill.at.eu.org> Thu, 28 Nov 2002 16:11:52 +0100 + +exim4 (4.10-0.srh20.19) unstable; urgency=low + + * ship convert4r4 as /usr/sbin/exim_convert4r4 (with manpage) + * eximon does not provides/Conflicts: exim4-daemon + * switch AGAIN *-daemon provides MTA: + - *-daemon depends on -base instead of the other way round + - explicit "conflicts/replaces: exim, exim-tls" for the base package - + these need to add this the other way round, too (TODO). + - move symlinks for sendmail, mailq, rmail, rsmtp and their manpages (+the one + for newaliases) to the daemon-packages. + - no more non-debhelper-generated exim4-base.prerm, simplified + *daemon.postinst + * try to start daemon in postinst no matter whether configtype=none, people + might use it with a handcrafted exim4.conf. + * register /var/lib/exim4/email_addresses for dpkg. + + -- Andreas Metzler <ametzler@downhill.at.eu.org> Sun, 24 Nov 2002 15:04:32 +0100 + +exim4 (4.10-0.srh20.18) unstable; urgency=low + + * add "Replaces: exim4-daemon" to all the daemon flavours, needed for + switching. + * Marc Haber: + make exim4-daemon-custom actually work. + building from CVS was broken + clean target missed Local/eximon.conf + * exim-daemon-perl recommends libexim-localscan-perl + + -- Andreas Metzler <ametzler@downhill.at.eu.org> Thu, 21 Nov 2002 17:04:54 +0100 + +exim4 (4.10-0.srh20.17) unstable; urgency=low + + * add support for building a customized daemon (exim4-daemon-custom) + * tighten build-depends: official exim4-base linked against db3 won't + work well together with exim4-daemon-custom linked against libdb2 + * ship compile time configuration (EDITME-files) in /usd/daemon-flavour. + * use /var/mail instead of /var/spool/mail (#169747) + * make uucp a trusted user. (#169545) + + -- Andreas Metzler <ametzler@downhill.at.eu.org> Sun, 17 Nov 2002 23:06:29 +0100 + +exim4 (4.10-0.srh20.16) unstable; urgency=low + + * fix Gecos pattern: 'From: "Andreas Metzler,,," <am...'# + * _big_ update for README.Debian: Document which patches were applied. Short + note about PAM. + * document that the perl flavour won't deliver any mail without + /etc/exim4/local_scan.pl in package description. + * fix examples for server-side SMTP AUTH + + -- Andreas Metzler <ametzler@downhill.at.eu.org> Sat, 9 Nov 2002 10:12:34 +0100 + +exim4 (4.10-0.srh20.15) unstable; urgency=low + + * Fix crash with perl 5.8 (threads), thanks to Eckebrecht von Pappenheim + <evp@heise.de> + * perl-package: search local_scan.pl in /etc/exim4 instead of /etc/exim. + + -- Andreas Metzler <ametzler@downhill.at.eu.org> Wed, 6 Nov 2002 22:46:12 +0100 + +exim4 (4.10-0.srh20.14) unstable; urgency=low + + * add /etc/default/exim4 (#123184, #95325) + * Don't start a queue runner with cron per default, exim runs as daemon. + * polish config-script: more states, strip blanks. + * Ask whether to bind to all local interfaces or only to localhost with sane + default depending on configtype. (#108853) + + -- Andreas Metzler <ametzler@downhill.at.eu.org> Thu, 31 Oct 2002 14:05:50 +0100 + +exim4 (4.10-0.srh20.13) unstable; urgency=low + + * send stdout of logrotate postrotate-script to /dev/null + * polish exim4-base.postinst and exim4-base.templates + * use tcp-wrappers + * simplify update-exim4.conf. There is no need to only add remote_smtp + transport for special configurations. It does not hurt and should make it + easy for users to activate smtp-auth. + * install configration example to examples subdirectory + + -- Andreas Metzler <ametzler@downhill.at.eu.org> Tue, 29 Oct 2002 08:42:42 +0100 + +exim4 (4.10-0.srh20.12) unstable; urgency=low + + * linked against external pcre + * clean up a little bit - move all manpages to debian/manpages/ + * ship template /etc/exim4/email-addresses + * LFS support (-D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE) + * Don't force sender verification by default + * I actually use this version. + + -- Andreas Metzler <ametzler@downhill.at.eu.org> Sun, 27 Oct 2002 17:10:16 +0100 + +exim4 (4.10-0.srh20.11) unstable; urgency=low + + * if HUPed exim will rexec itself as /usr/lib/exim4/exim, changing the name + to exim - start-stop-daemon-daemon would not recognize it. Changed + init.script to exec /usr/lib/exim4/exim to set the processname to "exim". + This needs to be deuglified. + * use black magic in daemon-$flavour postinst to only start it there if + switching flavours. + * support for inetd has to wait for sarge+1 + * fix description of 'exim4' daemon flavour. + + -- Andreas Metzler <ametzler@downhill.at.eu.org> Sat, 26 Oct 2002 11:09:14 +0200 + +exim4 (4.10-0.srh20.10) unstable; urgency=low + + * don't provide symlink /usr/sbin/exim anymore - this broke coinstallation + with uninstalled exim 3 - the exim3-init script started the exim4-daemon. + Ship symlink /usr/lib/exim4/exim -> /usr/sbin/exim4 and set BIN_DIRECTORY + to /usr/lib/exim4. This is a little bit ugly but the alterative would be to + patch 7 files in src. + * the daemon packages conflict with each other by each having + Conflicts/Provides: exim4-daemon + * Add doc base support for spec and filter.txt (bug 165961) + * Switching daemon flavours restarts them. + + -- Andreas Metzler <ametzler@balrog.logic.univie.ac.at> Fri, 25 Oct 2002 16:14:44 +0200 + +exim4 (4.10-0.srh20.9) unstable; urgency=low + + * apply exim4-MID-expanded.patch - make domain part of M-ID configurable. + Shipped in debian-subdir so it can be easily patch -R'd before official + debian release. + * set spool to /var/spool/exim4 in EDITME + * remove /var/run/exim4 on purge + * remove /var/(spool|log)/exim4 on purge if empty + * added manpages. + * allow relay for 127.0.0.1 : ::::1 + * set host_find_failed = defer for smarthost router and mimick exim3. It + really sucks to get a frozen message and error to the postmaster _every_ + time I try to send a message offline. + + -- Andreas Metzler <ametzler@downhill.at.eu.org> Thu, 24 Oct 2002 14:00:05 +0200 + +exim4 (4.10-0.srh20.8) unstable; urgency=low + + * info and html doc generated from separate source package - diff is + small + * remove m4 and texinfo from build-depends + + -- Andreas Metzler <ametzler@downhill.at.eu.org> Thu, 24 Oct 2002 12:22:56 +0200 + +exim4 (4.10-0.srh20.7) unstable; urgency=low + + * config script as state machine - allows going back! + * hopefully last forgotten entry of /var/{spool,log,run}/exim in postinst + and cron.* fixed. + + -- Andreas Metzler <ametzler@downhill.at.eu.org> Thu, 24 Oct 2002 09:16:12 +0200 + +exim4 (4.10-0.srh20.6) unstable; urgency=low + + * generate /etc/aliases with debconf + * remove dpkg-statoverride managment with debconf, ship exim binary as 4755 + root:root. + * update debian/copyright from NOTICE. + * add (commented out) maildrop-transport to template + * add (commented out) maildir-transport to template + * Remove some backslashes in template + * Fix *lots of* cut and paste errors, introduced by generating the + configuration template from the debconf_eximconfig perl script. + $local_delivery is wrong, define macro LOCAL_DELIVERY and use it instead. + Remove erranous backslashes. + * Add comments from the example configuration file to template. + * host and domain lists are colon separated. + + -- Andreas Metzler <ametzler@downhill.at.eu.org> Mon, 21 Oct 2002 22:37:45 +0200 + +exim4 (4.10-0.srh20.5) unstable; urgency=low + + * new debconf-code: + - shell scripts + - debconf-results are saved (and read from) /etc/exim4/debconf.results + - /etc/exim4/exim4.conf.template is a dpkg-conffile + - update-exim4.conf(8) merges these two files and generates exim's main + configuration file /var/lib/exim4/exim4.conf. + + -- Andreas Metzler <ametzler@downhill.at.eu.org> Sat, 19 Oct 2002 19:23:35 +0200 + +exim4 (4.10-0.srh20.4) unstable; urgency=low + + * symlink usr/sbin/exim4 <-> usr/sbin/exim in -base package was wrong. + * move invoke-rc.d to -base package - _it_ contains the init-script + * move stat-overide-stuff to -base package. - The values are filled in _its_ + config. + * missing stuff from log/exim4 run/exim4 transition: exim-base + maintainerscripts. + * Daemon-packages have only debconf stuff left as maintainerscripts. How + about letting dh_installinit manage the initscript? + * exim4-base.postrm has no business removing /etc/exim/exim.conf + + -- Andreas Metzler <ametzler@balrog.logic.univie.ac.at> Fri, 18 Oct 2002 14:40:46 +0200 + +exim4 (4.10-0.srh20.3) unstable; urgency=low + + * /etc/exim4/... + * fix cronjob: Test for existence of /etc/exim4/exim4.conf - it formerly + tested for exim3's configuration file + * /usr/lib/exim/ --> /usr/lib/exim4/ -- Put eximon.bin there, too. + + -- Andreas Metzler <ametzler@logic.univie.ac.at> Fri, 18 Oct 2002 13:43:37 +0200 + +exim4 (4.10-0.srh20.2) unstable; urgency=low + + * more changes: + * /var/log/exim/ --> /var/log/exim4/ + * /var/run/exim/ --> /var/run/exim4/ + * /etc/init.d/exim --> /etc/init.d/exim4 + * Use files named after the real package (exim4-base instead of) exim for + cron and logrotate. - use dh_installlogrotate and dh_installcron + * Don't install exim.8 manpages in daemon packages - symlink is enough, ship + real manpage in base-package. - use dh_installman. + * Get rid of m4-magic - without the alternatives there is no need. + + -- Andreas Metzler <ametzler@downhill.at.eu.org> Thu, 17 Oct 2002 23:52:31 +0200 + +exim4 (4.10-0.srh20.1) unstable; urgency=low + + * rename package, replace dependencies. + - src: exim4 + - binary exim(-something) --> exim4-something + - Remove Provides: exim - does not make sense anymore, dselect/apt + would take the real exim instead of the provided one. + - Revamp Dependencies and contents + * exim4-base provides/confl/repl: mta and depends on one of *our* + flavours + * each of the flavours only contains only /usr/sbin/exim4 and a manpagelink + exim4--->exim - there is no need to provides/confl/repl: mta, because + we ship no common file with the same name as in the original + exim4-package + - drop alternatives. + - install configuration example to /usr/share/doc/exim4-doc/examples + + -- Andreas Metzler <ametzler@downhill.at.eu.org> Thu, 17 Oct 2002 17:58:08 +0200 + +exim (4.10-0.srh20) unstable; urgency=low + + * exim-base.config fixes during testing-- need to run debconf subs in a + list context to get their numeric return code. + * enqueue_question(): $code == 0 is ok too + * main: call fetch_default() not find_default() [when did I last test this?] + * install debconf_eximconfig (!!!!!!) + + -- Steve Haslam <araqnid@debian.org> Wed, 16 Oct 2002 21:50:27 +0100 + +exim (4.10-0.srh19) unstable; urgency=low + + * Move the eximon binary into the eximon package! + + -- Steve Haslam <araqnid@debian.org> Wed, 16 Oct 2002 19:36:48 +0100 + +exim (4.10-0.srh18) unstable; urgency=low + + * The clean: target now deletes doc/tmp + + -- Steve Haslam <araqnid@debian.org> Wed, 16 Oct 2002 18:10:29 +0100 + +exim (4.10-0.srh17) unstable; urgency=low + + * Slave alternatives for "rmail" too. + * Changed libxaw-dev in build-depends to libxaw7-dev | libxaw-dev + * Added libperl-dev and m4 to build-depends + + -- Steve Haslam <araqnid@debian.org> Wed, 16 Oct 2002 17:19:40 +0100 + +exim (4.10-0.srh16) unstable; urgency=low + + * Put --exec $DAEMON back on the start-stop-daemon --stop calls, since + start-stop-daemon complains about the process not being found after it + just killed it. (Due to Exim not removing its own pid file?) + * Point slave alternatives at .gz versions of manpages + + -- Steve Haslam <araqnid@debian.org> Wed, 16 Oct 2002 16:12:08 +0100 + +exim (4.10-0.srh15) unstable; urgency=low + + * Fix "update-alternatives --remove" invocation. + * Remove alternatives AFTER stopping daemon. + * Use logrotate to cycle logs. + * Manually install logrotate/cron stuff, to call it "exim" instead of "exim-base". + * Install upstream exim.8 manpage, and slave alternatives. + + -- Steve Haslam <araqnid@debian.org> Wed, 16 Oct 2002 15:44:56 +0100 + +exim (4.10-0.srh14) unstable; urgency=low + + * dh_installinit: pass --noscripts, put the script invocation etc. in + ourselves. This is still pretty nasty, but ensures that the deamons + are stopped/started themselves, not by exim-base. + * Also, pass --init-script=exim to use /etc/init.d/exim, not + /etc/init.d/exim-base. + * Fix some inconsistencies in the postsinst related to the above that + made lintian scream + * Remove the --exec option when stopping the daemon in the init script, + so that we still stop the daemon if the symlink changed to point to a + different version (hacky). + + -- Steve Haslam <araqnid@debian.org> Wed, 16 Oct 2002 14:51:19 +0100 + +exim (4.10-0.srh13) unstable; urgency=low + + * Bah, fix paths of mailq etc. to be in /usr/bin, not /usr/lib + + -- Steve Haslam <araqnid@debian.org> Wed, 16 Oct 2002 14:08:45 +0100 + +exim (4.10-0.srh12) unstable; urgency=low + + * The postinsts were totally broken, doing everything off the "install" + target, and nothing off "configure". Since they're all pracitcally the + same, they are now generated from daemon-postinst.m4. + * Fix invocations of dpkg-statoverride (sysuser??) + * Added slave alternatives for mailq, sendmail etc. + * Removed daemon packages conflicting with mail-transport-agent, + although this isn't good-- the deamon packages don't conflict with + each other (they use alternatives to arrange themselves), but do + conflict with other MTAs that install + /usr/lib/sendmail|/usr/sbin/sendmail links. Urnf. + * Similar generation system for prerms as postinsts + + -- Steve Haslam <araqnid@debian.org> Wed, 16 Oct 2002 13:47:53 +0100 + +exim (4.10-0.srh11) unstable; urgency=low + + * Urnf, nasty circular dependencies. Removed exim-base's dependency on exim-daemon. + * Fix "use strict" errors in exim-base.config (oops) + + -- Steve Haslam <araqnid@debian.org> Wed, 16 Oct 2002 13:10:25 +0100 + +exim (4.10-0.srh10) unstable; urgency=low + + * Patch src/expand.c with HMAC support + * Rename exim-daemon-default package to just "exim", so upgrading works + better, and exim isn't made into a pure virtual package while other + packages depend on it. Moreover, mail-transport-agent is provided by + each of the daemon packages, not exim-base, since having exim-base + alone is not sufficient to have an MTA. + * Each exim daemon package depends on exim-base, not exim. + + -- Steve Haslam <araqnid@debian.org> Wed, 16 Oct 2002 12:52:19 +0100 + +exim (4.10-0.1) unstable; urgency=low + + * Heavy changes to build system. + * Split package into: + - exim-base: This package contains all utility programs and + documentation in plain text format. + - exim-daemon-$FOO: (Currently for FOO in light, default, heavy, + perl): Conain only the exim daemon in different configurations + - exim-doc-info: Contains exim documentation in Info format. + - eximon: The X11 monitor for Exim + + -- Hilko Bengen <bengen@toplink-plannet.de> Wed, 2 Oct 2002 17:23:04 +0200 + +exim (4.10-0.srh4) unstable; urgency=low + + * exim.c: Show the OpenSSL version number if TLS compiled in and the tls + debug selector enabled. + * exim.postinst et al: Keep the alternatives configured between upgrades + (naughty) since exim-light will fail to start if exim-heavy keywords + are in the config file + + -- Steve Haslam <araqnid@debian.org> Fri, 13 Sep 2002 16:08:47 +0100 + +exim (4.10-0.srh3) unstable; urgency=low + + * tls.c: Some debug output changes to verify_callback() + * debconf_eximconfig: add more escaping when writing acl_check_rcpt + * tls.c and others: ${tls_peercn} now expands to the CN part of the + peer's certificate subject when using TLS. + * transports/smtp.c and others: Added tls_verify_hostname option to + verify the hostname we connected to against the CN/subjectAltName + of the peer certificate. + + -- Steve Haslam <araqnid@debian.org> Fri, 13 Sep 2002 15:44:07 +0100 + +exim (4.10-0.srh2) unstable; urgency=low + + * exim-heavy.postinst: had duplicate sendmail alternative, removed. Had + a priority the same as exim-light too... increased. + * Replace LOOKUP_CDB=yes in exim-light configuration, since it was in + the Exim 3 package and doesn't bring in any dependencies. + * exim.postinst: delete files from /var/spool/exim/db if they cannot be + read by exim_dumpdb (some DB compatibility lossage) + + -- Steve Haslam <araqnid@debian.org> Tue, 3 Sep 2002 13:28:44 +0100 + +exim (4.10-0.srh1) unstable; urgency=low + + * My stab at an Exim 4 package. Features include: + * An exim-heavy package that contains an Exim binary with LDAP, + MySQL, PostgreSQL etc. in, so that the main Exim package's + dependencies are kept thin but users can easily get hold of + the extra lookup types. + * Debconf-based configuration, although it has priority=high + questions, so not completely noninteractive yet, and not + all features of eximconfig have been ported/checked + * Automated conversion of Exim 3 configuration files + (using PH's convert4r4) + + -- Steve Haslam <araqnid@debian.org> Tue, 3 Sep 2002 10:20:24 +0100 + +exim (3.35-1.srh1) unstable; urgency=low + + * Reconfigured to include MySQL and PostgreSQL lookups + + -- Steve Haslam <araqnid@debian.org> Fri, 9 Aug 2002 15:52:37 +0100 + +exim (3.35-1) unstable; urgency=low + + * New upstream version, fixes buffer overflow (Closes: #135069) + * debian/config: Added receiver_try_verify (Closes: #136276) + * debian/init.d: Use --retry 30 option for start-stop-daemon when + stopping exim (Closes: #136450) + * debian/postinst: "noninteractive" in correct case (Closes: #134379) + * debian/init.d: Use -n option for echo (from patch in #133288) + * debian/exim_lock.8: Manpage for exim_lock - thanks Nick Philips + (Closes: #131679) + * debian/config: Fixed comment on smtp_accept_queue_per_connection + (Closes: #136756) + * debian/exim.8,debian/eximon.8: Fixed hyphenation (Closes: #132068) + * debian/control: Short description improved (Closes: #130698) + + -- Mark Baker <mark@mnb.org.uk> Mon, 4 Mar 2002 23:04:52 +0000 + + diff --git a/debian/changelog.Debian.old b/debian/changelog.Debian.old new file mode 100644 index 0000000..2b9640b --- /dev/null +++ b/debian/changelog.Debian.old @@ -0,0 +1,1128 @@ +exim (3.34-1) unstable; urgency=low + + * New upstream version + * Applied patch so that it isn't an open relay when used from inetd with + exim_user = root (but that still doesn't mean you should set this!) + (Closes: #126124) + * debian/editme-diff: Include lmtp support (Closes: #128052) + * debian/postinst: Only run update-inetd if it exists + * debian/control: The above means it only recommends rather than depends + on netbase (Closes: #118244) + * debian/config: Various changes to procmail-pipe transport in + eximconfig output (Closes: #117923, #120614, #129338) + * debian/config: Added comment mentioning rfcignorant.org to eximconfig + output (Closes: #128414) + * debian/email-addresses: Corrected typo (Closes: #123082) + * debian/init.d: List restart option in usage output (Closes: #122939) + * debian/config: Include rfc2142 addresses (such as abuse@) in generated + aliases file (Closes: #128411) + + -- Mark Baker <mark@mnb.org.uk> Sat, 19 Jan 2002 17:44:56 +0000 + +exim (3.33-1) unstable; urgency=low + + * New upstream version + * debian/control: include package priorities + * debian/copyright: fix spelling of common-licenses (I had spelt it the + British way, as licences, which of course isn't what the directory is + called) (Closes: #112086) + * src/exim.c: upstream patch to fix minor local security hole (Closes: + #117835) + * debian/postrm: fix test for empty spool directory (Closes: #108956, + #116018) + * debian/postrm: check update-inetd exists before calling (Closes: #121365) + + -- Mark Baker <mark@mnb.org.uk> Wed, 28 Nov 2001 22:07:14 +0000 + +exim (3.32-2) unstable; urgency=low + + * Applied upstream patch to fix IPv6 related problems (Closes: #108285, + #108309) + * debian/cron.daily: exit if exim binary doesn't exist (Closes: #108389) + * debian/init.d: check that inetd.conf exists before grepping it for + exim (Closes: #108147) + * debian/exim.8: update description of -bp option (Closes: #107222) + + -- Mark Baker <mark@mnb.org.uk> Wed, 15 Aug 2001 00:00:36 +0100 + +exim (3.32-1) unstable; urgency=low + + * New upstream version (bug fixes) + * debian/preinst: create /etc/exim before moving exim.conf (Closes: + #106659, #107657) + * debian/preinst: only do nasty stuff to crontab if upgrading from a + version prior to 1.82-3, as that was the first one to use cron in the + way we do now. + + -- Mark Baker <mark@mnb.org.uk> Wed, 8 Aug 2001 23:34:04 +0100 + +exim (3.31-1) unstable; urgency=low + + * New upstream version + * debian/postrm: prompt before deleting spool directory if it's not + empty (Closes: #101186) + * debian/config: remove RBL questions (as ORBS no longer exists, and + MAPS now charges); include a comment about RBL instead (Closes: #104524) + * debian/rules: no longer have separate diff for hurd, as hurd now + supports PAM and LDAP + * OS/os.h-GNU, OS/Makefile-GNU: various other hurd changes (Closes: #101409) + * debian/postinst: don't run eximconfig if doing a non-interactive + install (Closes: #98764) + * debian/postinst, debian/preinst: move config file to new location in + preinst, not postinst (Closes: #101796) + * debian/config: don't use group mail on procmail transport (Closes: #99075) + * debian/init.d: use --pidfile option of start-stop-daemon (Closes: + #97526, #74803, #62297) + * debian/postinst: only grep exim.conf if it exists (Closes: #95031) + * src/globals.c: upstream patch to header names + * debian/postinst: only grep /etc/aliases if it exists (Closes: #94085) + * debian/cron.daily: tidy wait-remote_smtp as well as retry database + + -- Mark Baker <mark@mnb.org.uk> Thu, 19 Jul 2001 00:32:14 +0100 + +exim (3.22-4) unstable; urgency=low + + * debian/crontab: fix comment so it agrees (Closes: #92654) + * debian/rules: don't use {a,b} syntax, which isn't in posix sh (Closes: + #92456) + * debian/config: RBL is now at blackholes.mail-abuse.org + + -- Mark Baker <mark@mnb.org.uk> Tue, 10 Apr 2001 00:16:30 +0100 + +exim (3.22-3) unstable; urgency=low + + * src/eximon.src: don't want & on end of exec command (Closes: #53784) + * debian/*.8: updated references to docs to /usr/share/doc, and updated + my email address. + * debian/exicyclog.8: exicyclog is in /usr/sbin, not /opt/exim/bin + (Closes: #86642) + * debian/control: build-dependencies updated for current X packages + (Closes: #88565) + * debian/config: generated config uses s (sender) flag on rewrite rules + (Closes: #90839) + * debian/config: generated config doesn't use b or c (bcc and cc) flags + on rewrite rules + * debian/crontab: run every 15 minutes + * debian/crontab: don't ignore error output (exim should only output + anything on errors, so we don't want to redirect anything to /dev/null + (Closes: #88334) + * debian/config: generated config refers to 127.0.0.1 and ::1, and not + to localhost; which caused problems for some people when it tried to + look up the ipv6 address for it (Closes: #88629, #76074) + * debian/control: priority important + * debian/postinst, debian/prerm: don't call suidregister or chmod + * debian/control: conflict with suidmanager <<0.50 + + -- Mark Baker <mark@mnb.org.uk> Fri, 30 Mar 2001 00:29:30 +0100 + +exim (3.22-2) unstable; urgency=low + + * debian/crontab: check existence of config file in /etc/exim/exim.conf + rather than /etc/exim.conf (Closes: #85745) + * debian/postinst, debian/postrm: more places I'd forgotten to fix after + moving exim.conf + * src/exim_tidydb.c: write "too old" message to stdout, not stderr + (Closes: #81727) + + -- Mark Baker <mark@mnb.org.uk> Mon, 12 Feb 2001 23:30:17 +0000 + +exim (3.22-1) unstable; urgency=low + + * New upstream version + * debian/cron.daily: only run exim_tidydb if it exists and is + executable (Closes: #83017) + * debian/email-addresses: include comment indicating that it is part of + the exim package (Closes: #82462) + + -- Mark Baker <mark@mnb.org.uk> Wed, 24 Jan 2001 00:13:35 +0000 + +exim (3.20-2) unstable; urgency=low + + * debian/rules: allow for a locally modified makefile diff to be used + instead of the standard one (patch by Karl Hegbloom) (Closes: #79275) + * Put config file in an /etc/exim directory, as many people want to + create other files for configuring their exim setup (Closes: #76318) + . debian/rules: create /etc/exim directory + . debian/config: write config file in $exim/exim/exim.conf + . debian/editme-diff.linux: configure exim to read config from this + directory. + . debian/editme-diff.gnu: as editme-diff.linux + . debian/postinst: move config file from existing installations when + upgrading. + * debian/config: default config includes (commented out) how to do + client side SMTP AUTH (Closes: #79173) + * debian/cron.daily: only cycle non-empty log files (Closes: #74996) + * debian/control: build depends should be on libdb2-dev, not libdb2 + (Closes: #79290) + + -- Mark Baker <mark@mnb.org.uk> Mon, 11 Dec 2000 22:16:43 +0000 + +exim (3.20-1) unstable; urgency=low + + * New upstream release. + * debian/config: swapped procmail and .forward directors in default + config (Closes: #63588) + * debian/config: include "end" after rewrite section (Closes: #77865) + * debian/config: document /etc/email-addresses in eximconfig output + * debian/README: document /etc/email-addresses (Closes: #77937) + + -- Mark Baker <mark@mnb.org.uk> Sun, 3 Dec 2000 23:51:58 +0000 + +exim (3.16-7) unstable; urgency=high + + * debian/postinst: use -f option when deleting old hints databases + (Closes: #75451) + * src/exim.c: Change to real priveliges before expansion testing + + -- Mark Baker <mark@mnb.org.uk> Thu, 26 Oct 2000 00:15:24 +0100 + +exim (3.16-6) unstable; urgency=low + + * debian/mails: added announcement of windows executable filter + * applied patch so -bP cannot be used to get information from a config + file that the user does not have read permission for. Thanks to + Wichert Akkerman and Harald Hoyer for the patch (Closes: #67585) + + -- Mark Baker <mbaker@iee.org> Sun, 22 Oct 2000 01:14:18 +0100 + +exim (3.16-5) unstable; urgency=low + + * debian/config: path option must go after driver (Closes: #72985, #74503) + * debian/cron.daily: redirect output of exim_tidydb to /dev/null + (Closes: #74474) + * src/exim_tidydb.c: actual errors go to stderr so they aren't affected + by redirect mentioned above + * src/readconf.c: allow config to be group writable (Closes: #74082) + * debian/config: depends on netbase (for update-inetd) (Closes: #73060) + * debian/postinst: delete hints databases; if the configuration appears + to refer to any other db files, warn them that they will have to + rebuild them. This is because we are now (since 3.16-3.1) using libdb2 + (Closes: #75020, #73055, #73048) + * debian/config: default config file adds return path header to local + deliveries (Closes: #75046) + * debian/config: include (commented out) examples of how to set up + the server side of an authenticated link + * debian/config: default config file allow authenticated hosts to relay + + -- Mark Baker <mbaker@iee.org> Thu, 19 Oct 2000 00:21:44 +0100 + +exim (3.16-4) unstable; urgency=low + + * Ben's NMU fixed bugs about new libc/libdb (Closes: #72588, #72587) + * debian/postinst: set /usr/sbin/exim to be suid root if suidmanager + isn't installed. (Closes: #72796, #72741, #72684, #72673, #72671, + #72871, #70597) + * debian/control: Added build-depends on xlib6-g (used for eximon) + (Closes: #72088, #70918) + * OS/Makefile-GNU: Use -lcrypt (partially fixes #71705) + * debian/eximstats.8: Synopsis includes log file names (Closes: #72644) + * debian/config: Include commented out how to restrict to local + interface only (Closes: #66510) + * debian/config: Set path on address_path transport to include /usr/bin + (Closes: #65521) + * debian/cron.daily: Run exim_tidydb to clean retry database (Closes: + #57543) + * debian/postinst: Install /var/log/exim directory as setgid adm + (Closes: #35719, #11918) + * debian/config: Use check_local_user in forwardfile director, so that + correct user and group are used when running pipe entries in forward + file (Closes: #72645) + * debian/config: Include empty authenticators section + * debian/editme-diff.gnu: New file for GNU hurd; old file renamed to + editme-diff.linux + * debian/rules: Use appropriate editme-diff for OS. This is necessary + because currently the hurd doesn't support ldap or pam (Closes: #71705) + + -- Mark Baker <mbaker@iee.org> Sat, 30 Sep 2000 18:43:41 +0100 + +exim (3.16-3.1) unstable; urgency=low + + * NMU for libdb2/glibc/ldap updates + * Build using new libldap2-dev + * Change Build-Depends accordingly + + -- Ben Collins <bcollins@debian.org> Wed, 27 Sep 2000 13:11:51 -0400 + +exim (3.16-3) unstable; urgency=low + + * debian/config: need to escape another ' character (Closes: #70039, + #70760, #70722, #70575) + + -- Mark Baker <mbaker@iee.org> Sat, 2 Sep 2000 16:43:40 +0100 + +exim (3.16-2) unstable; urgency=low + + * debian/config: need to escape ' character (Closes: #70039) + * debian/control: added libident-dev and libwrap0-dev to build + dependencies (Closes: #70405) + * debian/rules: use -p option when creating Local directory, so it + doesn't fail if called repeatedly (Closes: #70519) + + -- Mark Baker <mbaker@iee.org> Tue, 29 Aug 2000 21:14:31 +0100 + +exim (3.16-1) unstable; urgency=low + + * New upstream version (Closes: #66053) + * Applied interface discovery patch by Jason Gunthorpe (Closes: #68748) + * Applied IPv6 interface discovery patch also by Jason (Closes: #64531) + * debian/exim.8: Removed superfluous hyphen (Closes: #69384) + * debian/config: Changed /usr/doc/exim to /usr/share/doc/exim in a + couple of places (Closes: #69013) + * debian/init.d: Don't disable inetd.conf entry when starting MTA - if + it wasn't disabled already we wouldn't have got that far, so it's + unnecessary and confusing for anyone reading the script (Closes: #69048) + * debian/config: add accept_8bitmime, commented out, with a comment + explaining why it is probably a bad idea for it to be set + * debian/control: add Build-depends: line + * linked with libpcre3 + * debian/editme-diff: include PAM support (Closes: #66398) + + -- Mark Baker <mbaker@iee.org> Fri, 25 Aug 2000 00:14:35 +0100 + +exim (3.12-10) frozen unstable; urgency=low + + * debian/config: include headers_check_syntax in generated configuration + file, commented out (Closes: #63238) + * debian/config: don't include system hostname in list of local domains + for satellite system (Closes: #61048) + * src/host.c: look up an A record if attempt to look up AAAA record + returns TRY_AGAIN, so it works with bind 4 nameservers. This was fixed + upstream in 3.13, I have taken a patch from there (Closes: #62755) + + -- Mark Baker <mbaker@iee.org> Sun, 30 Apr 2000 01:05:09 +0100 + +exim (3.12-9) unstable; urgency=low + + * debian/config: test whether /etc/exim.conf can be written replaced by + test for $etc/exim.conf, allowing me to test this in another directory + while not root + * debian/config: don't include "root:root" in generated alias file + (Closes: #61498) + * debian/postinst: remove "root:root" from aliases file that older exim + versions generated (Thanks Kim Oldfield for patch) + * debian/mails: added mail from Thomas Schoepf about how he solved a + problem he had on a dialup system (Closes: #61331) + * debian/README.debian: Update: the instructions on how to run as a + daemon needed changing and exim is now built with include LDAP and + IPv6 (Closes: #62220) + * debian/rules: renamed readme file to debian/README.Debian with upper + case D. + + -- Mark Baker <mbaker@iee.org> Thu, 13 Apr 2000 00:11:09 +0100 + +exim (3.12-8) unstable; urgency=low + + * debian/postinst: fixed typo in warning message: script is called + /etc/init.d/exim, not /etc/init.d/conf (Closes: #61118) + * debian/postinst: wrap warning mesage at 80 columns (also #61118) + * debian/postinst: version of exim in test should be 3.03-2, not 3.99-2 + which was used for testing purposes (Closes: #61068) + + -- Mark Baker <mbaker@iee.org> Sun, 26 Mar 2000 23:23:48 +0100 + +exim (3.12-7) frozen unstable; urgency=low + + * debian/config: fixed typo in relay_domains question text (Closes: #60392) + * debian/config: indicate default with capital in final question + (Closes: #59722) + * debian/config: don't check relay_domains, as the check excluded + wildcards. (Closes: #59720) + * debian/config: add alias entry for nobody (Closes: #59712) + * debian/config: don't create aliases.new.O (Closes: #60572) + * debian/postinst: warn when upgrading from old versions that don't ever + run daemon from default startup script, if exim is not run from + inetd.conf (Closes: #60567) + + -- Mark Baker <mbaker@iee.org> Tue, 21 Mar 2000 23:57:00 +0000 + +exim (3.12-6) frozen unstable; urgency=low + + * debian/postinst: don't run /etc/init.d/exim if exim.conf doesn't exist. + It didn't matter, it just gave an error message that it shouldn't have. + * Remember to upload to frozen this time :) + + -- Mark Baker <mbaker@iee.org> Tue, 29 Feb 2000 23:46:30 +0000 + +exim (3.12-5) unstable; urgency=low + + * src/transport.c: upstream patch so transport filters work with + outgoing SMTP (Closes: #57835) + + -- Mark Baker <mbaker@iee.org> Sun, 13 Feb 2000 17:12:28 +0000 + +exim (3.12-4) frozen unstable; urgency=low + + * debian/config: procmail_pipe transport has right options so from hack + works on current version of exim (previously mail delivered by + procmail was being horriblyl mangled) (Closes: #56865,#56208) + * debian/cron.daily: include hostname in subject line of eximstats reports. + * debian/copyright: new upstream ftp location + + -- Mark Baker <mbaker@iee.org> Sat, 5 Feb 2000 22:00:49 +0000 + +exim (3.12-3) unstable; urgency=low + + * debian/rules: create Local directory in build target (and delete it + in clean target (Closes: #56788) + + -- Mark Baker <mbaker@iee.org> Tue, 1 Feb 2000 20:45:03 +0000 + +exim (3.12-2) unstable; urgency=low + + * src/smtp_out.c: failure to create a socket should not be a fatal + error; this was causing problems for people without IPv6 in their + kernel trying to send mail to sites with IPv6 addresses in the + DNS. (Closes: #50628) + * debian/rules,debian/editme-diffs(new file): create Local/Makefile at + build time by applying a diff to EDITME, rather than having a + pre-edited copy included in the debian source. As well as making the + debian diff rather smaller this means that upstream changes to the + EDITME file won't be ignored (Closes: #55112) + * As a result of the above, exigrep of compressed files should work + properly (Closes: #54776) + * debian/rules: delete most of util/* in clean target + + -- Mark Baker <mbaker@iee.org> Wed, 26 Jan 2000 23:28:56 +0000 + +exim (3.12-1) unstable; urgency=low + + * New upstream version (bug fixes) + * debian/config: procmail director does file existence check as relevant + user rather than as exim + * debian/config: procmail director fails, rather than freezing message, if + home directory can't be read (Closes: #54351,#53326,#53325,#53229) + * debian/rules, debian/conffiles, debian/email-addresses (new file): add + /etc/email-addresses as a conf-file (Closes: #54124) + + -- Mark Baker <mbaker@iee.org> Sun, 9 Jan 2000 17:45:31 +0000 + +exim (3.11-2) unstable; urgency=low + + * OS/Makefile-Base: comment out code to check whether makefile needs + updating; it didn't seem to work properly on some systems. I don't + know why. This is a nasty hack but it works (Closes: #50435) + * debian/control: description doesn't start with package name + * debian/control: "X" rather than "X-windows" + + -- Mark Baker <mbaker@iee.org> Sun, 19 Dec 1999 11:01:00 +0000 + +exim (3.11-1) unstable; urgency=low + + * New upstream version (Closes: #51744) + + -- Mark Baker <mbaker@iee.org> Wed, 8 Dec 1999 00:02:59 +0000 + +exim (3.03-6) unstable; urgency=low + + * debian/config: check that /etc/exim.conf was writable didn't do the + right thing when file didn't exist (Closes: #51498,#51789) + * debian/config: uncomment second line of rewrite configuration (Closes: + #51496,#52111,#52148,) + * debian/rules: clean target deletes Local/Makefile-Linux (Closes: #50435) + * doc/spec.txt: example cyrus configuration refers to debian location of + binary + + -- Mark Baker <mbaker@iee.org> Tue, 7 Dec 1999 22:24:04 +0000 + +exim (3.03-5) unstable; urgency=low + + * Local/Makefile: don't link with libwrap any more; it causes too many + problems for people upgrading (#50250) + * debian/config: don't include userforward or procmail directors in + satellite configuration (#40570) + * debian/crontab: only run queue if /etc/exim.conf exists (#43419) + * debian/rules, debian/ipv6.sh, OS/Makefile-Default: Fix so IPv6 support + is only included if available, so exim will build on m68k (#50435) + * debian/config: exit if not run as root (#50543) + * debian/config: don't comment out the example rewrite rule: it is + sufficiently widely used, at least for dialups, that it should be in + by default (#49202) + + -- Mark Baker <mbaker@iee.org> Sat, 27 Nov 1999 19:11:33 +0000 + +exim (3.03-4) unstable; urgency=low + + * debian/control: put quotes around $etc/exim.conf (#50071) + * Create symlinks in /usr/doc from postinst, not rules (#50072) + . debian/postinst: create symlink in /usr/doc if required + . debian/postinst-eximon (new file): create symlink in /usr/doc if required + . debian/prerm: delete symlink in /usr/doc + . debian/prerm-eximon (new file): delete symlink in /usr/doc + . debian/rules: don't create symlinks in /usr/doc + . debian/rules: install {postinst,prerm}-eximon + * debian/rules: install man pages in /usr/share/man as required by + policy 3.1.0 + * debian/copyright: refer to GPL in new location + /usr/share/common-licences/GPL instead of /usr/doc/copyright/GPL + + -- Mark Baker <mbaker@iee.org> Sat, 13 Nov 1999 16:52:59 +0000 + +exim (3.03-3) unstable; urgency=low + + * debian/rules: install docs in /usr/share/doc/exim with symlink from + /usr/doc/exim, as required by policy 3.1.0 + * debian/control: policy version upgraded to 3.1.0 + * debian/config: if exim.conf already exists, warn that continuing with + eximconfig will trash it (#49201) + * debian/*: updated Tim Cutts' email address + + -- Mark Baker <mbaker@iee.org> Thu, 11 Nov 1999 21:07:56 +0000 + +exim (3.03-2) unstable; urgency=low + + * debian/config: don't shift things off @names, as that was removing + localhost (#48102) + * exim_monitor/em_main.c: fix bindings for popup menu so they work with + all combinations of modifiers, working round Xt misfeature. Thanks + Kevin Ryde for patch (#20485) + * debian/config: fixed typo (FRC instead of RFC) + * debian/README.debian: extra backslashes in sample filter (#46462) + * debian/crontab: only run every 30 mins instead of every 15; this is + the same frequency as we ask a daemon to do a queue run and it makes + sense for them to be the same + * debian/config: generated configuration will call procmail if it is + installed and if users have .procmailrc files + * debian/init.d: start exim daemon if no smtp entry in inetd.conf + * OS/Makefile-Default: define HAVE_IPV6. The attempt to auto-detect it + was a failure (it detected it correctly, but the config.h builder + doesn't understand anything so fancy in the makefile) + * Local/Makefile: include LDAP support + * Local/Makefile: link with libwrap + + -- Mark Baker <mbaker@iee.org> Thu, 4 Nov 1999 21:22:20 +0000 + +exim (3.03-1) unstable; urgency=low + + * new upstream version + * src/exim.h: include <pcre.h> rather than "pcre/pcre.h" + * OS/Makefile.Base: don't build pcre (it's not used anyway) + * debian/postinst: don't do upgrade from pre-3.0 stuff if /etc/exim.conf + doesn't exist (#42305) + * debian/eximconfig.8: mention -i option (#41786) + + -- Mark Baker <mbaker@iee.org> Wed, 4 Aug 1999 22:24:57 +0100 + +exim (3.02-5) unstable; urgency=low + + * OS/Makefile-Linux, OS/Makefile-Default: applied patch from Roman Hodek + so it will compile on m68k which doesn't yet have glibc2.1 (#41365) + * debian/config: applied patch from Andrew Pimlott so system users with + a hyphen in the login name (only www-data normally) get added to + aliases file (#41235) + * debian/config: typo (exim-doc package name without hyphen) (#41071) + * debian/exim.8: updated command line options in manpage (#41082) + + -- Mark Baker <mbaker@iee.org> Mon, 19 Jul 1999 23:26:34 +0100 + +exim (3.02-4) unstable; urgency=low + + * src/daemon.c: patch in previous release only did half the job; I now + have a patch from the upstream author instead. + + -- Mark Baker <mbaker@iee.org> Wed, 7 Jul 1999 22:35:44 +0100 + +exim (3.02-3) unstable; urgency=low + + * src/daemon.c: if attempt to open AF_INET6 fails, try again as AF_INET; this + will hopefully make it work for people without IPv6 in their kernels + (#40248) + * src/host.c: apply upstream patch so ::ffff:w.x.y.z style IPv4 compatibility + addresses will reverse lookup correctly + + -- Mark Baker <mbaker@iee.org> Wed, 30 Jun 1999 23:28:35 +0100 + +exim (3.02-2) unstable; urgency=low + + * debian/config: fix received headers (#40185,#40210,#40216) + + -- Mark Baker <mbaker@iee.org> Tue, 29 Jun 1999 00:58:15 +0100 + +exim (3.02-1) unstable; urgency=low + + * New upstream release (bug fixes) + * Applied patch for GNU/Hurd support (#39262) + * debian/config: include "localhost" as a local domain by default. I do + this reluctantly, so fetchmail will work out the box. + * debian/config: include "for <x@y>" in received headers (#39344) + * debian/config: add Envelope-to: header in local delivery transport + * debian/copyright: update copyright date to 1999 + * src/host.c: Fixed bug with IPv6 address handling properly + * src/verify.c: Removed work-around introduced in last release + + -- Mark Baker <mbaker@iee.org> Mon, 21 Jun 1999 22:37:56 +0100 + +exim (3.01-1) unstable; urgency=low + + * New upstream release (bug fixes) + * src/verify.c: Fixed bug with IPv6 address handling + * debian/config: eximconfig -i should restart daemon + + -- Mark Baker <mbaker@iee.org> Tue, 25 May 1999 23:33:00 +0100 + +exim (3.00-1) unstable; urgency=low + + * New upstream release + * OS/Makefile-Default: Enabled IPv6 support (this therefore requires + glibc 2.1) + * debian/config: Outputs new configuration file format + * debian/config: If called with -i option, installs exim in inetd.conf etc + * debian/postinst: When upgrading from pre-3.00 versions, convert + configuration file to new format. Leave exim not running, as the + configuration file will need to be manually checked. + * debian/postinst: registration of init.d script only done if exim configured + + -- Mark Baker <mbaker@iee.org> Sat, 15 May 1999 01:22:33 +0100 + +exim (2.11-4) unstable; urgency=low + + * debian/cron.daily: only cycle logs if files exist (#35544, #35585, + #34645, #36271) + * debian/control: suggests exim-doc (#34086) + * debian/README.debian: include sample .forward file to handle mail on + debian mailing lists (thanks Giuliano) + * debian/config: allow domain name components that start with a + number. While these are strictly speaking not allowed, there are + plenty out there, and not allowing them was causing problems (#36320) + + -- Mark Baker <mbaker@iee.org> Thu, 22 Apr 1999 23:08:16 +0100 + +exim (2.11-3) unstable; urgency=low + + * debian/config: recommend adding localhost to local domains if + fetchmail is to be used (#34088) + * debian/config: was generating invalid rewrite rules for a satellite + system with no root alias specified (#34060) + * debian/config: generated config includes "for" information in received + headers + * debian/config: set smtp_accept_queue_per_connection to 100 in + generated config, as the default of 10 is much too low for dialup + users + * debian/config: set freeze_tell_mailmaster to true in generated config + * debian/config: always allow relaying from localhost (#31844) + * debian/cron.daily: use savelog instead of exicyclog (#33467) + + -- Mark Baker <mbaker@iee.org> Thu, 4 Mar 1999 23:50:16 +0000 + +exim (2.11-2) unstable; urgency=low + + * debian/config: write config files to /etc instead of /tmp (oops!) + + -- Mark Baker <mbaker@iee.org> Mon, 1 Feb 1999 23:27:05 +0000 + +exim (2.11-1) unstable; urgency=low + + * New upstream version + * (Uses libpcre2 instead of libpcre1) + * debian/config: don't set never_users if user doesn't set up a root alias + + -- Mark Baker <mbaker@iee.org> Fri, 28 Jan 1999 00:21:00 +0000 + +exim (2.05-1) frozen unstable; urgency=low + + * New upstream version (mostly bugfixes) + + -- Mark Baker <mbaker@iee.org> Sat, 7 Nov 1998 00:24:44 +0000 + +exim (2.04-3) unstable; urgency=low + + * debian/init.d: don't enable inetd service when stopping daemon (#27265) + * delete lots of .orig files that didn't need to be in source diff (#27267) + * recompile against libident with correct shlibs (#27265) + + -- Mark Baker <mbaker@iee.org> Thu, 1 Oct 1998 21:23:30 +0100 + +exim (2.04-2) unstable; urgency=low + + * debian/postinst: use -e so it dies on errors + * debian/preinst: don't use crontab if it isn't installed + + -- Mark Baker <mbaker@iee.org> Sun, 27 Sep 1998 22:07:51 +0100 + +exim (2.04-1) unstable; urgency=low + + * New upstream version (mostly bug fixes) + * debian/crontab: check exim exists and is executable (#26953) + + -- Mark Baker <mbaker@iee.org> Sat, 26 Sep 1998 21:26:19 +0100 + +exim (2.02-4) unstable; urgency=low + + * debian/crontab: 2>&1 should be after >/dev/null + + -- Mark Baker <mbaker@iee.org> Tue, 01 Sep 1998 22:49:00 +0100 + +exim (2.02-3) unstable; urgency=low + + * Local/Makefile: include maildir support (#25575) + + -- Mark Baker <mbaker@iee.org> Mon, 10 Aug 1998 21:46:08 +0100 + +exim (2.02-2) unstable; urgency=medium + + * debian/crontab: should be 2>&1 instead of 2&>1 (#25539,#25552,#25558) + + -- Mark Baker <mbaker@iee.org> Sun, 09 Aug 1998 22:23:00 +0100 + +exim (2.02-1) unstable; urgency=low + + * New upstream version (#24692) + * debian/crontab: send output to /dev/null (#24384) + + -- Mark Baker <mbaker@iee.org> Thu, 06 Aug 1998 21:46:27 +0100 + +exim (1.92-4) unstable; urgency=low + + * debian/preinst: redirect stderr of some commands to /dev/null (#22867) + * src/macros.h: define iscntrl() so 8-bit strings work in headers + (#22932 and hopefully #20958) + + -- Mark Baker <mbaker@iee.org> Sat, 30 May 1998 13:11:27 +0100 + +exim (1.92-3) frozen unstable; urgency=low + + * debian/config: write config files in /etc, not . (#22387) + * debian/config: properly comment out example rewriter (#22388) + * debian/postrm: remove rc.d links only on purge, not remove + + -- Mark Baker <mbaker@iee.org> Wed, 13 May 1998 09:55:00 +0100 + +exim (1.92-2) frozen unstable; urgency=low + + * These together answer all but one of the issues raised in #22067 + * debian/config: fix typo in "TRANPORTS" + * debian/config: put separator between each question + * debian/config: clarify question about qualifying domain for satellite + system + * debian/config: rewrite rule for satellite systems now matches root etc + case insensitively + * debian/config: include in output (commented out) example of how to + rewrite all outgoing addresses according to lookup table + + -- Mark Baker <mbaker@iee.org> Mon, 04 May 1998 22:08:00 +0100 + +exim (1.92-1) frozen unstable; urgency=low + + * New upstream version (minor bug fixes) + * OS/Makefile-Linux: compile with -O2 + * OS/Makefile-Base: link with existing libident.a + * src/eximon.src: don't set LD_LIBRARY_PATH in eximon wrapper script + * exim_monitor/em_main.c: show last 8k of log when you start (#21956) + * debian/postinst: don't install in inetd.conf unless /etc/exim.conf + exists (#19548) + * debian/rules: minor changes + + -- Mark Baker <mbaker@iee.org> Fri, 01 May 1998 22:55:25 +0100 + +exim (1.91-1) frozen unstable; urgency=low + + * New upstream version (bug fixes) + + -- Mark Baker <mbaker@iee.org> Tue, 28 Apr 1998 10:12:38 +0100 + +exim (1.90-5) frozen unstable; urgency=low + + * debian/postinst: don't die if exim already running (#21181) + * debian/config: set umask to 022, so aliases file created has mode that + exim won't complain about (#21410) + * debian/control: suggest mail-reader, not mail-user-agent (which doesn't + exist) + + -- Mark Baker <mbaker@iee.org> Thu, 16 Apr 1998 19:45:55 +0100 + +exim (1.90-4) frozen unstable; urgency=low + + * Delete debian/files before packaging source (#21217) + + -- Mark Baker <mbaker@iee.org> Thu, 16 Apr 1998 19:45:55 +0100 + +exim (1.90-3) frozen unstable; urgency=low + + * Fixed silly bug that stopped eximconfig from running (I hadn't tested + it, as it was just one minor change to a comment. However, the comment + was in the generated exim.conf file, so was embedded in a perl + string---using an unescaped apostrophe broke things) + + -- Mark Baker <mbaker@iee.org> Wed, 08 Apr 1998 19:42:51 +0100 + +exim (1.90-2) frozen unstable; urgency=low + + * Configuration written by eximconfig will not fail if mailbox has a + stricter mode than the default 0660 + + -- Mark Baker <mbaker@iee.org> Fri, 03 Apr 1998 11:06:20 +0100 + +exim (1.90-1) frozen unstable; urgency=low + + * New upstream version (bug fixes) + * Split out documentation, allowing pristine source to be used + + -- Mark Baker <mbaker@iee.org> Wed, 01 Apr 1998 11:06:20 +0100 + +exim (1.89.1-1) frozen unstable; urgency=low + + * New upstream version 1.891 (bug fixes) + + -- Mark Baker <mbaker@iee.org> Wed, 18 Mar 1998 20:11:30 +0000 + +exim (1.89.0-2) frozen unstable; urgency=low + + * Improved inetd.conf handling, hopefully won't lose any changes you make + over upgrades + + -- Mark Baker <mbaker@iee.org> Sat, 14 Mar 1998 14:32:00 +0000 + +exim (1.89.0-1) unstable; urgency=low + + * New upstream version (1.890, a beta test of 1.90) + * Fixed cron scripts so they don't fail if exim not installed (eg when + upgrading) + * Added newline to end of generated /etc/aliases + * Pause after first paragraph of eximconfig (#19547) + + -- Mark Baker <mbaker@iee.org> Sat, 14 Mar 1998 14:32:00 +0000 + +exim (1.82-11) unstable; urgency=low + + * Make ip-up.d script a config file + * Check for existence of exim before running it from ip-up.d (#19119) + * Only run eximconfig if there is no exim.conf file + * This means eximconfig doesn't need to check for exim.conf itself, and + so doesn't need a --force option + + -- Mark Baker <mbaker@iee.org> Sat, 07 Mar 1998 21:02:30 +0000 + +exim (1.82-10) unstable; urgency=low + + * Fixed update-rc.d calls in postrm (#16355) + * Replaces: mail-transport-agent (#9305) + + -- Mark Baker <mbaker@iee.org> Sat, 07 Mar 1998 17:54:30 +0000 + +exim (1.82-9) unstable; urgency=low + + * Added mailq manpage link + * Install docs copyright before calculating md5sums + + -- Mark Baker <mbaker@iee.org> Fri, 27 Feb 1998 21:36:38 +0000 + +exim (1.82-8) unstable; urgency=low + + * Fixed manpages so whatis information can be extracted (#18667) + * Added a script for ip-up.d (#18675) + + -- Mark Baker <mbaker@iee.org> Fri, 27 Feb 1998 21:36:38 +0000 + +exim (1.82-7) unstable; urgency=low + + * Corrected URL in eximconfig script (#18422) + + -- Mark Baker <mbaker@iee.org> Fri, 20 Feb 1998 18:32:27 +0000 + +exim (1.82-6) unstable; urgency=low + + * exim-doc package doesn't depend on exim (#18285) + + -- Mark Baker <mbaker@iee.org> Wed, 18 Feb 1998 12:03:10 +0000 + +exim (1.82-5) unstable; urgency=low + + * exim-doc package depends on exim + * Inserted space that was missing from depends line for eximon + * Added force-reload and restart options to init.d script + + -- Mark Baker <mbaker@iee.org> Sun, 15 Feb 1998 22:29:00 +0000 + +exim (1.82-4) unstable; urgency=low + + * Written manpages for exiqsumm and eximconfig + * Updated FSF snail-mail address in copyright file + * Moved eximon.bin into /usr/lib/exim + * Updated standards-version to 2.4.0.0 + * Fixed md5sum generation + * Symlinks from /usr/doc/{eximon,exim-doc} to exim + * Fixed typo in exim.conf generated by eximconfig (#18054) + + -- Mark Baker <mbaker@iee.org> Tue, 10 Feb 1998 00:45:00 +0000 + +exim (1.82-3) unstable; urgency=low + + * Rewritten eximconfig + + Relaying configuration + + RBL spam-blocking (#17805) + + Ask before overwriting /etc/aliases (#16056) + + New configuration for system with local deliveries but smarthost + for remote mail---useful for dialup users + + Generally tidied up + * use /etc/cron.d instead of mail's crontab + + -- Mark Baker <mbaker@iee.org> Sat, 7 Feb 1998 21:56:25 +0000 + +exim (1.82-2) unstable; urgency=low + + * Write startup messages in standard format + + -- Mark Baker <mbaker@iee.org> Wed, 7 Jan 1998 21:21:35 +0000 + +exim (1.82-1) unstable; urgency=low + + * New upstream release + + -- Mark Baker <mbaker@iee.org> Sat, 27 Dec 1997 12:17:23 +0000 + +exim (1.81-1) unstable; urgency=low + + * New upstream release (bug fixes) + * Removed bogus Replaces: line (#16054) + * Mark /etc/init.d/exim as a conffile + + -- Mark Baker <mbaker@iee.org> Thu, 18 Dec 1997 11:28:11 +0000 + +exim (1.80-2) unstable; urgency=low + + * Fixed typo in control (#15927) + * Removed suggestion of metamail + * Don't include docs in exim package + + -- Mark Baker <mbaker@iee.org> Sun, 14 Dec 1997 20:12:14 +0000 + +exim (1.80-1) unstable; urgency=low + + * New upstream release + * Strip binaries (#15720) + + -- Mark Baker <mbaker@iee.org> Sat, 13 Dec 1997 20:46:18 +0000 + +exim (1.73-11) unstable; urgency=low + + * Really depend on cron. I put it in the changelog but forgot to + do it last time! + + -- Mark Baker <mbaker@iee.org> Mon, 24 Nov 1997 23:24:09 +0000 + +exim (1.73-10) unstable; urgency=low + + * Rewritten copyright file + * Put note in prerm about deleting multiple inetd lines (#14554) + * Depend on cron (#15229) + + -- Mark Baker <mbaker@iee.org> Mon, 24 Nov 1997 21:29:51 +0000 + +exim (1.73-9) unstable; urgency=low + + * The | I removed in 1.73-7 should have been changed to a \, not + removed altogether. I hope I haven't screwed up too many people's + /etc/crontab with this bug :( + + -- Mark Baker <mbaker@iee.org> Tue, 11 Nov 1997 23:04:19 +0000 + +exim (1.73-8) unstable; urgency=low + + * Patch from upstream to fix bug with DB lookups + + -- Mark Baker <mbaker@iee.org> Mon, 3 Nov 1997 11:25:37 +0000 + +exim (1.73-7) unstable; urgency=low + + * Remove spurious | from preinst that trashed /etc/crontab + * Remove from inetd etc in prerm rather than postrm + + -- Mark Baker <mbaker@iee.org> Wed, 22 Oct 1997 14:36:21 +0100 + +exim (1.73-6) unstable; urgency=low + + * Now really clear up crontab from old versions + * Fix sed expressions (#14044) + + -- Mark Baker <mbaker@iee.org> Wed, 22 Oct 1997 14:34:52 +0100 + +exim (1.73-5) unstable; urgency=low + + * Comment out crontab entry when removed (#14016) + + -- Mark Baker <mbaker@iee.org> Mon, 20 Oct 1997 21:01:44 +0100 + +exim (1.73-4) unstable; urgency=low + + * Use mail user's crontab instead of system one + * Clear up crontab installed by old versions (#13998) + * Add md5sums + + -- Mark Baker <mbaker@iee.org> Sun, 19 Oct 1997 23:21:35 +0100 + +exim (1.73-3) unstable; urgency=low + + * Rewrite postinst etc (I hadn't realised that they weren't complete) (#13940) + + -- Mark Baker <mbaker@iee.org> Thu, 16 Oct 1997 23:58:46 +0100 + +exim (1.73-2) unstable; urgency=low + + * Install README.debian file + * Install {pre,post}{inst,rm} (#13919) + + -- Mark Baker <mbaker@iee.org> Thu, 16 Oct 1997 14:45:42 +0100 + +exim (1.73-1) unstable; urgency=low + + * New upstream version + * New maintainer + * Rewritten most of debian/rules + * (and as a result, no longer use debmake) + * Documented what EXIM_GID is compiled in (#11907) + * Made eximconfig less confusing (#12664) + + -- Mark Baker <mbaker@iee.org> Wed, 15 Oct 1997 17:13:27 +0100 + +exim (1.71-1) unstable; urgency=low + + * Upstream update and libc6 build. Minimize the diffs to upstream sources. + + -- Christoph Lameter <clameter@debian.org> Thu, 25 Sep 1997 20:07:21 -0700 + +exim (1.62-3) unstable; urgency=high + + * Fixed buffer overrun security hole in .forward processing + + -- Tim Cutts <tjrc1@scalopus.bio.cam.ac.uk> Tue, 22 Jul 1997 10:00:00 +0100 + +exim (1.62-2) unstable; urgency=low + + * Fixed paths in exicyclog (bugs #9444, #9759 and #9996) + * Transferred eximon man page from exim to eximon (bug #9425) + + -- Tim Cutts <tjrc1@scalopus.bio.cam.ac.uk> Mon, 16 Jun 1997 11:37:56 +0100 + +exim (1.62-1) unstable; urgency=low + + * New upstream release + + -- Tim Cutts <tjrc1@scalopus.bio.cam.ac.uk> Mon, 28 Apr 1997 14:36:37 +0000 + +exim (1.61-1) unstable; urgency=low + + * New upstream release, fixes debian bug #7671 + + -- Tim Cutts <tjrc1@scalopus.bio.cam.ac.uk> Tue, 4 Mar 1997 15:24:21 +0000 + +exim (1.60-3) unstable; urgency=low + + * Added a 'sendmail' alias to the exim manpage + * Incorporated Christoph's -1 and -2 changes into my own 1.60 package. + + -- Tim Cutts <tjrc1@scalopus.bio.cam.ac.uk> Thu, 27 Feb 1997 17:57:30 +0000 + +exim (1.60-2) unstable; urgency=low + + * Add some more manpages + * /usr/sbin/sendmail and /usr/sbin/runq symlink was missing. + + -- Christoph Lameter <clameter@debian.org> Wed, 26 Feb 1997 12:34:08 -0800 + +exim (1.60-1) unstable; urgency=low + + * New upstream version + * Manpages written + + -- Christoph Lameter <clameter@debian.org> Wed, 26 Feb 1997 10:18:06 -0800 + +exim (1.59.8-2) unstable; urgency=low + + * Reversed some of Christoph's changes; put textual documentation + back into exim package, and info files into exim-doc package. + + -- Tim Cutts <tjrc1@scalopus.bio.cam.ac.uk> Thu, 27 Feb 1997 12:37:15 +0000 + +exim (1.59.8-1) unstable; urgency=low + + * Supplies some more information regaring uucp and kernel related NFS + problems + * New upstream release + + -- Christoph Lameter <clameter@debian.org> Mon, 24 Feb 1997 11:57:10 -0800 + +exim (1.59.6-1) unstable; urgency=low + + * Put into unstable + * Some fixes to the debian setup and the eximconfig script + * New upstream release + + -- Christoph Lameter <clameter@debian.org> Thu, 6 Feb 1997 10:26:23 -0800 + +exim (1.59.5-3) experimental; urgency=low + + * Rebuild with debmake 3.0.6 + * eximstats: Small bug fixed + + -- Christoph Lameter <clameter@debian.org> Fri, 31 Jan 1997 08:37:35 -0800 + +exim (1.59.5-2) experimental; urgency=low + + * Rebuild with debmake 3.0.1 + + -- Christoph Lameter <clameter@debian.org> Wed, 29 Jan 1997 12:57:12 -0800 + +exim (1.59.5-1) experimental; urgency=low + + * Experimental package for debstdn (debmake 2.80) + * New upstream release. NFS Hacks removed. + + -- Christoph Lameter <clameter@debian.org> Sat, 25 Jan 1997 17:21:41 -0800 + +exim (1.59-1.2) experimental; urgency=low + + * NFS Problem hacked around (just skipped offending section ....) + Locking via NFS is probably broken now. + + -- Christoph Lameter <clameter@debian.org> Fri, 27 Dec 1996 19:39:16 -0800 + +exim (1.59-1.1) experimental; urgency=low + + * Full Replacement for smail (and better, easier than smail) + * Compiled with db libraries instead of dbm. + * Send Daily Statistics to Postmaster + * Run eximcyclog from /etc/cron.daily + * Run exim from inetd.conf. Run queue hourly via crontab. + * newaliases command provided for sendmail compatibility. + + -- Christoph Lameter <clameter@debian.org> Mon, 23 Dec 1996 20:45:44 -0800 + +exim (1.59-1) experimental; urgency=low + + * Upgraded to exim 1.59 + * Putting PID files in /var/run/exim/ + * Changes to exim-doc package by Christoph + * Included a postrm script (to remove /var/run/exim, /etc/exim.conf and + /var/log/exim if purging) + + -- Tim Cutts <tjrc1@scalopus.bio.cam.ac.uk> Wed, 18 Dec 1996 09:00:00 +0000 + +exim (1.58-7) experimental; urgency=low + + * Local/Makefile updated to be more FSSTND compliant + * Minor changes to debian/* files supporting this + * Default mail spool changed from /usr/spool/... to /var/spool/... + * Added a commented-out user = list line to the system_aliases director + for smartlist users to uncomment + + -- Tim Cutts <tjrc1@scalopus.bio.cam.ac.uk> Tue, 17 Dec 1996 17:00:00 +0000 + +exim (1.58-6) experimental; urgency=low + + * eximinstall script was not installed + * problems with the init scripts failing + + -- Christoph Lameter <clameter@debian.org> Mon, 16 Dec 1996 20:45:44 -0800 + +exim (1.58-5) experimental; urgency=low + + * Revised + + -- Christoph Lameter <clameter@debian.org> Mon, 16 Dec 1996 07:11:31 -0800 + +exim (1.58-4) unstable; urgency=low + + * Initial efforts + + -- Tim Cutts <tjrc1@scalopus.bio.cam.ac.uk> Mon, 25 Nov 1996 22:33:17 +0000 + + diff --git a/debian/compat b/debian/compat new file mode 100644 index 0000000..b8626c4 --- /dev/null +++ b/debian/compat @@ -0,0 +1 @@ +4 diff --git a/debian/config-custom/create-custom-package b/debian/config-custom/create-custom-package new file mode 100755 index 0000000..df53609 --- /dev/null +++ b/debian/config-custom/create-custom-package @@ -0,0 +1,67 @@ +#!/bin/bash + +if [ -n "$1" ]; then + PACKAGESUFFIX="$1" +else + PACKAGESUFFIX="custom" +fi + +TARGETDIR="../exim4-config-$PACKAGESUFFIX" +#DEBUG=1 + +# copy over -changelog, generating a proper changelog entry +# copy over update-exim4defaults, ip-up.d, email-addresses + +dh_testdir + +copytextreplace() { + FILE="$1" + DSTFILE="$2" + DIR="${FILE%/*}" + FILE="${FILE##*/}" + if [ -z "$DSTFILE" ]; then + DSTFILE="$FILE" + fi + [ $DEBUG ] && echo >&2 "DBG: source $DIR/$FILE" + [ $DEBUG ] && echo >&2 "DBG: dst $TARGETDIR/$DIR/$DSTFILE" + mkdir -p $TARGETDIR/$DIR + if ! [ -e "$TARGETDIR/$DIR/$FILE" ]; then + < $DIR/$FILE \ + sed "s/exim4-config/exim4-config-$PACKAGESUFFIX/g" \ + > $TARGETDIR/$DIR/$DSTFILE + chmod `stat --format="%a" $DIR/$FILE` $TARGETDIR/$DIR/$DSTFILE + else + echo >&2 "ERR: can't write to $TARGETDIR/$DIR/$DSTFILE, file exists" + exit 1 + fi +} + +for file in manpages config templates postinst postrm dirs; do + copytextreplace debian/exim4-config.$file exim4-config-$PACKAGESUFFIX.$file +done + +for file in `cat debian/exim4-config.manpages`; do + copytextreplace $file +done + +for file in compat control copyright files rules; do + copytextreplace debian/config-custom/debian/$file +done +mv $TARGETDIR/debian/config-custom/debian/* $TARGETDIR/debian +rm -rf $TARGETDIR/debian/config-custom + +# TODO: generate new changelog entry + +for file in `find debian/debconf \( -path '*/CVS/*' -prune \) -or \( -type f -print \)`; do + copytextreplace $file +done + +for file in ip-up.d update-exim4defaults email-addresses; do + copytextreplace debian/$file +done + +< debian/changelog sed -n "/^exim4/{s/exim4/exim4-config-$PACKAGESUFFIX/p;q}" > $TARGETDIR/debian/changelog +echo -e "\n * automatically generated changelog" >> $TARGETDIR/debian/changelog +< debian/changelog sed -n '/^ --/{p;q}' >> $TARGETDIR/debian/changelog +cd $TARGETDIR +dch --append "generated source package by create-custom-package" diff --git a/debian/config-custom/debian/compat b/debian/config-custom/debian/compat new file mode 100644 index 0000000..b8626c4 --- /dev/null +++ b/debian/config-custom/debian/compat @@ -0,0 +1 @@ +4 diff --git a/debian/config-custom/debian/control b/debian/config-custom/debian/control new file mode 100644 index 0000000..3a8af63 --- /dev/null +++ b/debian/config-custom/debian/control @@ -0,0 +1,15 @@ +Source: exim4-config +Section: mail +Priority: important +Maintainer: locally built <root@localhost> +Standards-Version: 3.5.6 +Build-Depends-Indep: debhelper (>= 4.0.1) + +Package: exim4-config +Architecture: all +Priority: important +Conflicts: exim4-config +Depends: ${shlibs:Depends}, ${misc:Depends}, exim4-base +Description: custom Debian configuration for exim4 + This package provides the configuration for the exim4 daemon + packages. diff --git a/debian/config-custom/debian/copyright b/debian/config-custom/debian/copyright new file mode 100644 index 0000000..1910196 --- /dev/null +++ b/debian/config-custom/debian/copyright @@ -0,0 +1,15 @@ +This is a custom made configuration package for Debian GNU/Linux's +prepackaged version of exim4, a powerful yet easy to configure mail +transport agent. + +This package was originally made by create-custom-package, a script +written by Marc Haber <mh+debian-packages@zugschlus.de> using work +provided by Andreas Metzler <ametzler@downhill.at.eu.org>. +create-custom-package uses the exim4 source package to build this +source package. + +The files in this package are free software; you can redistribute them +and/or modify them under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2, or (at +your option) any later version. Full text of the license can be found +at /usr/share/common-licenses/GPL diff --git a/debian/config-custom/debian/files b/debian/config-custom/debian/files new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/debian/config-custom/debian/files @@ -0,0 +1 @@ + diff --git a/debian/config-custom/debian/rules b/debian/config-custom/debian/rules new file mode 100755 index 0000000..86280ad --- /dev/null +++ b/debian/config-custom/debian/rules @@ -0,0 +1,99 @@ +#!/usr/bin/make -f +# Sample debian/rules that uses debhelper. +# This file is public domain software, originally written by Joey Hess. +# +# This version is for a hypothetical package that builds an +# architecture-dependant package, as well as an architecture-independent +# package. + +# Uncomment this to turn on verbose mode. +export DH_VERBOSE=1 + +buildname=$${build:-`$(SHELL) scripts/os-type`-`$(SHELL) scripts/arch-type`} + +DEBIAN:=$(shell pwd)/debian + +configure: configure-stamp + +# the patches might change src/EDITME. +configure-stamp: + dh_testdir + touch configure-stamp + +build-indep: build-indep-stamp +build-indep-stamp: + dh_testdir + touch build-indep-stamp + +build: build-indep + +clean: cleanfiles + +cleanfiles: + dh_testdir + dh_testroot + rm -f build-indep-stamp configure-stamp install-stamp + + # Add here commands to clean up after the build process. + dh_clean + +install: install-stamp +install-stamp: build + dh_testdir + dh_testroot + dh_clean -k + dh_installdirs + + install -m 755 debian/debconf/update-exim4.conf debian/exim4-config/usr/sbin + install -m 755 $(DEBIAN)/update-exim4defaults $(DEBIAN)/exim4-config/usr/sbin + find debian/debconf/splitoff-parts -maxdepth 1 -type f | \ + xargs --replace install -m644 {} debian/exim4-config/var/lib/exim4 + install -m644 debian/debconf/splitoff-parts/[^C][^V][^S]* debian/exim4-config/var/lib/exim4 + # install -m644 debian/debconf/exim4.conf.template debian/exim4-config/etc/exim4 + + cd $(DEBIAN)/debconf/conf.d && \ + tar cf - `find \( -path '*/CVS/*' -prune \) -or \( -type f -print \)` | \ + { cd $(DEBIAN)/exim4-config/etc/exim4/conf.d/ && \ + tar xf - ; } + + # ship a copy in examples + # install -m644 debian/debconf/exim4.conf.template debian/exim4-config/usr/share/doc/exim4-config/examples/exim4.conf.template.debconf + install -m644 debian/email-addresses debian/exim4-config/etc/exim4 + install -m755 debian/ip-up.d debian/exim4-config/etc/ppp/ip-up.d/exim4 + +# dh_movefiles + touch install-stamp + +# Build architecture-independent files here. +binary-indep: build install + dh_testdir -i + dh_testroot -i + dh_installchangelogs -i + dh_installdocs -i + dh_installexamples -i + dh_installmenu -i + dh_installdebconf -i + dh_installlogrotate -i +# dh_installemacsen -i + dh_installpam -i + dh_installmime -i +# dh_installinit -i + dh_installcron -i +# dh_installinfo -i +# dh_undocumented -i + dh_installman -i + dh_install -i + dh_strip -i + dh_link -i + dh_compress -i + dh_fixperms -i +# dh_makeshlibs -i + dh_installdeb -i +# dh_perl -i + dh_shlibdeps -i + dh_gencontrol -i + dh_md5sums -i + dh_builddeb -i + +binary: binary-indep +.PHONY: build clean binary-indep binary-arch binary install diff --git a/debian/control b/debian/control new file mode 100644 index 0000000..3e5e1e4 --- /dev/null +++ b/debian/control @@ -0,0 +1,123 @@ +Source: exim4 +Section: mail +Priority: important +Maintainer: Andreas Metzler <ametzler@debian.org> +Uploaders: Marc Haber <mh+debian-packages@zugschlus.de> +Standards-Version: 3.5.6 +Build-depends: dpatch, libpcre3-dev, libldap2-dev, libpam0g-dev, libident-dev, libdb3-dev, xlibs-dev, libxaw7-dev | libxaw-dev, postgresql-dev, libmysqlclient10-dev, debhelper (>= 4.0.1), libperl-dev, libgnutls5-dev + +Package: exim4-base +Architecture: any +Priority: important +Suggests: mail-reader, eximon4, eximdoc4-html|eximdoc4-info +Conflicts: exim, exim-tls +Replaces: exim, exim-tls +Depends: ${shlibs:Depends}, cron (>=3.0pl1-42), ${misc:Depends}, exim4-config +Description: EXperimental Internal Mailer -- a Mail Transport Agent + This MTA is rather easier to configure than smail or sendmail. + It is a drop-in replacement for sendmail/mailq/rsmtp. + Advanced features include the ability to reject connections from + known spam sites, and an extremely efficient queue processing + algorithm. + . + This package provides the support files, you need an additional package + containing the main executable to make Exim work. The available packages + are: + . + exim4-daemon-light + exim4-daemon-heavy + exim4-daemon-custom + . + Exim comes with very extensive documentation in + /usr/share/doc/exim4-base/spec.txt.gz. + +Package: exim4-config +Architecture: all +Priority: important +Conflicts: exim4-config +Depends: ${shlibs:Depends}, ${misc:Depends}, exim4-base +Description: Debian configuration for exim4 + This package provides the configuration for the exim4 daemon + packages. The configuration framework has been split off the main + package to allow sites to replace the configuration scheme with their + own without having to change the actual exim packages. + . + Sites with special configuration needs (having a lot of identically + configured machines for example) can use this to distribute their own + custom configuration via the packaging system, using the magic + available with dpkg's conffile handling, without having to do local + changes on all of these machines. + +Package: exim4-daemon-light +Architecture: any +Priority: optional +Provides: mail-transport-agent +Conflicts: mail-transport-agent +Replaces: mail-transport-agent +Depends: exim4-base (= ${Source-Version}), ${shlibs:Depends} +Description: Lightweight version of the Exim (v4) MTA + Exim (v4) is a fully featured MTA (Mail Transport Agent) that is rather + easier to configure than smail or sendmail. It is a drop-in + replacement for sendmail/mailq/rsmtp. + . + This version of the Exim daemon has only basic features enabled. It + works well with the standard setups that are provided by Debian. + +Package: exim4 +Architecture: all +Priority: important +Depends: exim4-base (= ${Source-Version}), exim4-daemon-light | exim4-daemon-heavy | exim4-daemon-custom +Description: An MTA (Mail Transport Agent) + Exim (v4) is a fully featured MTA (Mail Transport Agent) that is rather + easier to configure than smail or sendmail. It is a drop-in + replacement for sendmail/mailq/rsmtp. + . + This metapackage provides the essential components for running + an Exim (v4) MTA. + +Package: exim4-daemon-heavy +Architecture: any +Priority: optional +Provides: mail-transport-agent +Conflicts: mail-transport-agent +Replaces: mail-transport-agent +Depends: exim4-base (= ${Source-Version}), ${shlibs:Depends} +Suggests: libexim-localscan-perl +Description: Exim (v4) with extended features + Exim (v4) is a fully featured MTA (Mail Transport Agent) that is rather + easier to configure than smail or sendmail. It is a drop-in + replacement for sendmail/mailq/rsmtp. + . + This version of the Exim daemon includes extra features such as LDAP, + PostgreSQL and MySQL data lookups, TLS (SSL) encryption, various + types of SMTP authentication and embedded Perl interpreter. + . + Additionally this package includes a plugin to use the embedded + Perl-interpreter for Exim's local_scan interface. + +Package: exim4-daemon-custom +Architecture: any +Priority: optional +Provides: mail-transport-agent +Conflicts: mail-transport-agent +Replaces: mail-transport-agent +Depends: exim4-base (= ${Source-Version}), ${shlibs:Depends} +Description: Customized version of Exim (v4) + Exim (v4) is a fully featured MTA (Mail Transport Agent) that is rather + easier to configure than smail or sendmail. It is a drop-in + replacement for sendmail/mailq/rsmtp. + . + This version of the Exim daemon is not provided by Debian but has been + built with a custom feature-set tailored for your local needs. See + /usr/share/doc/exim4-daemon-custom/ for details. + +Package: eximon4 +Architecture: any +Priority: optional +Conflicts: eximon +Replaces: eximon +Depends: ${shlibs:Depends}, exim4-base (>= 4.10) +Description: X monitor for the Exim (v4) mail transport agent + This allows administrators to view the Exim agent's mail queue + and logs, and perform a variety of actions on queued messages, + such as freezing, bouncing and thawing messages. diff --git a/debian/copyright b/debian/copyright new file mode 100644 index 0000000..ef52196 --- /dev/null +++ b/debian/copyright @@ -0,0 +1,210 @@ +This is Debian GNU/Linux's prepackaged version of exim, a powerful yet easy +to configure mail transport agent. + +----------------------------------------------------------------- +This package was put together from the original sources which are +maintained by Philip Hazel <ph10@cus.cam.ac.uk>, and which were +obtained from + + ftp://ftp.csx.cam.ac.uk/pub/software/email/exim/ + +Some modifications to the Makefiles have been made to fit with the Linux +FHS. +----------------------------------------------------------------- + + +----------------------------------------------------------------- +The local_scan.c perl plugin by Richard Baker <rich@mondaymorning.org> was +downloaded from http://oss.bibliotech.net/ and modified to compile as +shared object that can be dlopened. +Copyright (C) 2000 Biblio@Tech Ltd., Unit 2-3, 50 Carnwath Road, SW6 3EG, UK +Licensed under GPL. +----------------------------------------------------------------- + + +----------------------------------------------------------------- +Debian Maintainer history: +- The Debian package for exim was originally made by Tim Cutts + <timc@chiark.greenend.org.uk>. +- Mark Baker <mbaker@iee.org> took over until exim version 3 and is + still involved with packaging. +- Steve Haslam, Hilko Bengen and Marc Haber generated the initial + packages of Exim v4. +- The exim4 packages are now maintained by + - Andreas Metzler <ametzler@downhill.at.eu.org> (main maintainer) + - Marc Haber <mh+debian-packages@zugschlus.de> (Co-maintainer) + +The following people helped in preparing the exim4 packages and gave +important feedback: +- Marc Merlin provides the dlopen patch, making it possible to load + local_scan-routines for a external shared object. + The original patch was written by David Woodhouse, it was modified first + by Derrick 'dman' Hudson and afterwards by Marc Merlin. +- Sander Smeenk provided the TLS-docs and the script to generate the + solf-signed certificates. +- The people on the exim4debian list that submitted bug-reports and -fixes, + and helped with design issues: Matthias Klose, Alexander Koch, Ola + Lundqvist, Andrew Mulholland, David Pashley, Andreas Piesk, Nick Phillips + and whoever I forgot to mention. +----------------------------------------------------------------- + + +----------------------------------------------------------------- +exim is copyright (c) 1999 University of Cambridge. + +The original licence is as follows (from the file NOTICE in the upstream +distribution); the GPL should be in /usr/share/common-licenses/GPL on a debian +system. + +_________________________________________________________________________ +THE EXIM MAIL TRANSFER AGENT +---------------------------- + +Copyright (c) 2002 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. + + 1. Regular expressions are supported in the main Exim program and in the + Exim monitor using the freely-distributable PCRE library, copyright (c) + 2002 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. + + + 2. 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). + _________________________________________________________________________ + + + 3. Support for Microsoft's "Secure Password Authentication" is provided by + code contributed by Marc Prud'hommeaux. This includes code taken from the + Samba project, which is released under the Gnu GPL. + + + 4. Support for calling the Cyrus "pwcheck" daemon 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. + _________________________________________________________________________ + + + 5. The Exim Monitor program, which is an X-Window application, includes a + modified version 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. +___________________________________________________________________________ + + +-- +Philip Hazel University of Cambridge Computing Service, +ph10@cus.cam.ac.uk Cambridge, England. Phone: +44 1223 334714. diff --git a/debian/debconf.gamla/debconf_eximconfig b/debian/debconf.gamla/debconf_eximconfig new file mode 100644 index 0000000..5b888bd --- /dev/null +++ b/debian/debconf.gamla/debconf_eximconfig @@ -0,0 +1,628 @@ +#!/usr/bin/perl -w + +require 5; +use strict; +use Debconf::Client::ConfModule ':all'; +use Carp; + +sub get_value($) { + my $key = shift; + my($code,$text) = get($key); + return $text if ($code == 0); + croak("Unable to fetch value for \"$key\" (debconf code $code)\n"); +} + +version('2.0'); +#my $capb = capb('backup multiselect'); + +###################################################################### +# Get data, mainly from Debconf + +my $syshostname; +chomp($syshostname = `hostname --fqdn`); +my $configtype = get_value("exim/eximconfig/configtype"); +my $visiblename; +if ($configtype eq 'satellite') { + $visiblename = get_value("exim/eximconfig/satellite_hostname"); +} +elsif ($configtype eq 'local') { + $visiblename = $syshostname; +} +elsif ($configtype eq 'none') { + # leave their configuration alone + exit(0); +} +else { + $visiblename = get_value("exim/eximconfig/visible_hostname"); +} + +my @local_domains = ($visiblename, "localhost"); +my @relay_domains = (); +my @relay_nets = ('127.0.0.1', '::::1'); +if ($configtype eq 'satellite' || $configtype eq 'internet' || $configtype eq 'smarthost') { + push @local_domains, split(/[ ,]+/, get_value("exim/eximconfig/other_hostnames")); + push @relay_domains, split(/[ ,]+/, get_value("exim/eximconfig/relay_domains")); + push @relay_nets, split(/[ ,]+/, get_value("exim/eximconfig/relay_nets")); +} + +my $readhost; +if ($configtype eq 'satellite') { + $readhost = get_value("exim/eximconfig/readhost"); +} + +my $smarthost; +if ($configtype eq 'smarthost' || $configtype eq 'satellite') { + $smarthost = get_value("exim/eximconfig/smarthost"); +} + +my $overwrite_aliases = get_value("exim/eximconfig/overwrite_aliases") eq 'true'; + +my @postmasters = split(/[ ,]+/, get_value("exim/eximconfig/postmaster")); + +my $mailbox_format = get_value("exim/eximconfig/mailbox_format"); +my $local_delivery; +if ($mailbox_format eq 'spool') { + $local_delivery = 'mail_spool'; +} +elsif ($mailbox_format eq 'maildir') { + $local_delivery = 'maildir_home'; +} +else { + die "Unrecognised mailbox format \"$mailbox_format\"\n"; +} + +my $use_maildrop = ($mailbox_format eq 'maildir') && (get_value("exim/eximconfig/auto_maildrop") eq 'true'); +my $use_procmail = ($mailbox_format eq 'spool') && (get_value("exim/eximconfig/auto_procmail") eq 'true'); + +# Read password file and find users that need redirection +my @redirusers = ('nobody', 'hostmaster', 'usenet', 'news', 'webmaster', 'www', 'ftp', 'abuse', 'noc', 'security'); +while (my @a = getpwent) { + next unless ($a[2] < 1000); + next if ($a[0] eq 'root'); + push @redirusers, $a[0]; +} + +###################################################################### +# Show summary on stderr + +sub say { + my @words = map { split(/\s+/, $_) } @_; + my $out = ''; + while (@words) { + my $word = shift @words; + if (length($out)+length($word)+1 > 70) { + print STDERR "$out\n"; + $out = ''; + } + $out .= "$word "; + } + print STDERR "$out\n" if ($out); + print STDERR "\n"; +} + +say("Now using your answers to debconf questions to configure Exim 4. \ + Use \"dpkg-reconfigure exim\" to change your configuration, or \ + to disable automatic rebuilding of your configuration on each \ + and every upgrade."); + +say("Mail generated on this system will have \ + '".($configtype eq 'satellite' ? $readhost : $visiblename)."' used \ + as the domain part (after the \@) in the From: field and similar places."); + +say("The following domain(s) will be recognised as referring to this system: ", @local_domains); + +if (@relay_domains) { + say("Messages for the following domains will be relayed: ", @relay_domains); +} + +say("Mail for postmaster, root etc. will be sent to: ", @postmasters); + +if ($configtype ne 'satellite') { + if ($mailbox_format eq 'spool') { + say("Local mail is delivered to /var/spool/mail/\$USER mailboxes.", $use_procmail ? ".procmail files will automatically be used by procmail if found" : ""); + } + elsif ($mailbox_format eq 'maildir') { + say("Local mail is delivered to \$HOME/Maildir directories.", $use_procmail ? ".mailfilter files will automatically be used by maildrop if found" : ""); + } +} + +if ($configtype eq 'internet') { + say("Outbound remote mail is lookup up in the Internet DNS, and delivered using that data if any is found; otherwise such messages are bounced."); +} +elsif ($configtype eq 'smarthost') { + say("Outbound remote mail is sent via $smarthost"); +} +elsif ($configtype eq 'satellite') { + say("All mail is being routed and delivered via $smarthost"); +} +elsif ($configtype eq 'local') { + say("Any mail destined for remote addresses is bounced."); +} + +say("Note that you can set email addresses used for outgoing mail by editing /etc/email-addresses."); + +###################################################################### +# Write $visiblename into /etc/mailname + +if (open(MAILNAME, ">/etc/mailname")) { + print STDERR "Writing /etc/mailname...\n"; + print MAILNAME "$visiblename\n"; + close(MAILNAME); +} +else { + warn "Unable to write /etc/mailname: $!\n"; +} + +###################################################################### +# This subroutine autodetects whether a file was generated ourselves + +sub autogenerated($) { + my $filename = shift; + open(FILE, $filename) or die "Unable to read $filename: $!\n"; + my $top = <FILE>; + close FILE; + return ($top eq "# AUTOGENERATED\n"); +} + +###################################################################### +# Write /etc/aliases +if ($overwrite_aliases) { + if (open(ALIASES, ">/etc/aliases.exim-pkg-new.$$")) { + print STDERR "Writing /etc/aliases...\n"; + print ALIASES <<EOF +# AUTOGENERATED +# +# This is the aliases file - it says who gets mail for whom. +# +# This file automatically generated. You must reconfigure Exim to stop +# regenerating this file before you make changes yourself, or your +# changes will be lost when you upgrade Exim. +# (use: dpkg-reconfigure exim) +# + +EOF +; + print ALIASES "root: ".join(', ', map { "real-$_" } @postmasters)."\n"; + print ALIASES "postmaster: root\n"; + print ALIASES "mailer-daemon: postmaster\n"; + foreach my $redir (@redirusers) { + print ALIASES "$redir: root\n"; + } + + close(ALIASES); + if (-f "/etc/aliases" && !autogenerated("/etc/aliases")) { + print "Backing up old /etc/aliases to /etc/aliases.O...\n"; + unlink("/etc/aliases.O"); + rename("/etc/aliases", "/etc/aliases.O") + or die "Unable to rename /etc/aliases to /etc/aliases.O: $!\n"; + } + rename("/etc/aliases.exim-pkg-new.$$", "/etc/aliases") + or die "Unable to rename /etc/aliases.exim-pkg-new.$$ to /etc/aliases: $!\n"; + } + else { + warn "Unable to write /etc/aliases.exim-pkg-new.$$: $!\n"; + } +} +else { + print STDERR "Not writing /etc/aliases by user request\n"; +} + +###################################################################### +# Write /etc/exim4/exim4.conf + +unless (open(EXIMCONF, ">/etc/exim4/exim4.conf.exim-pkg-new.$$")) { + die "Unable to write /etc/exim4/exim4.conf.exim-pkg-new.$$: $!\n"; +} + +print STDERR "Writing /etc/exim4/exim4.conf...\n"; + +my $local_domains = join(' : ', '@', @local_domains); +my $relay_domains = join(' : ', @relay_domains); +my $relay_nets = join(' : ', @relay_nets); + +my $now = localtime(time); + +print EXIMCONF <<EOF; +# AUTOGENERATED + +# Runtime configuration file for Exim +# This file generated by debconf_eximconfig, $now + +# THIS FILE WILL BE REGENERATED EVERY TIME THE EXIM PACKAGE IS UPGRADED +# UNLESS YOU RUN +# dpkg-reconfigure exim +# AND CHOOSE "NONE" AS THE CONFIGURATION TYPE. + +# (you can check what the configuration type is currently set to using +# the command +# debconf-show exim | grep configtype +# ) + +# Main configuration settings + +# Let Exim autodetct this; we autodetected $syshostname at run-time +# primary_hostname = +EOF + +print EXIMCONF "domainlist local_domains = $local_domains\n"; +print EXIMCONF "domainlist relay_to_domains = $relay_domains\n"; +print EXIMCONF "hostlist relay_from_hosts = $relay_nets\n\n"; +print EXIMCONF "qualify_domain = $visiblename\n\n"; + +print EXIMCONF <<EOF; +acl_smtp_rcpt = acl_check_rcpt + +# qualify_recipient = + +# allow_domain_literals + +never_users = root + +host_lookup = * + +rfc1413_hosts = * +rfc1413_query_timeout = 30s + +# sender_unqualified_hosts = +# recipient_unqualified_hosts = + +# percent_hack_domains = + +ignore_bounce_errors_after = 2d + +timeout_frozen_after = 7d + +freeze_tell = postmaster + +received_header_text = "Received: \\ + \${if def:sender_rcvhost {from \${sender_rcvhost}\\n\\t}\\ + {\${if def:sender_ident {from \${sender_ident} }}\\ + \${if def:sender_helo_name {(helo=\${sender_helo_name})\\n\\t}}}}\\ + by \${primary_hostname} \\ + \${if def:received_protocol {with \${received_protocol}}} \\ + (Exim \${version_number} #\${compile_number} (Debian) [+araqnid])\\n\\t\\ + id \${message_id}\\ + \${if def:received_for {\\n\\tfor <\$received_for>}}" + +begin acl + +acl_check_rcpt: + accept hosts = : + deny local_parts = ^.[\@\%!/|] : ^\\\\. + accept local_parts = postmaster + domains = +local_domains + require verify = sender + + # deny message = rejected because \$sender_host_address is in a black list at \$dnslist_domain\\n\$dnslist_text + # dnslists = black.list.example.com + + # warn message = X-Warning: \$sender_host_address is in a black list at \$dnslist_domain + # dnslists = black.list.example.com + + accept domains = +local_domains + endpass + message = unknown user + verify = recipient + + accept domains = +relay_to_domains + endpass + message = unrouteable address + verify = recipient + + accept hosts = +relay_from_hosts + + accept authenticated = * + + deny message = relay not permitted + +begin routers + +EOF + ; + +if ($configtype eq 'internet') { + print EXIMCONF <<EOF; +dnslookup: + driver = dnslookup + domains = ! +local_domains + transport = remote_smtp + ignore_target_hosts = 0.0.0.0 : 127.0.0.0/8 + no_more + +EOF +} +elsif ($configtype eq 'smarthost' || $configtype eq 'satellite') { + print EXIMCONF <<EOF; +smarthost: + driver = manualroute + domains = ! +local_domains + transport = remote_smtp + route_list = * $smarthost + no_more + +EOF +} +else { + print EXIMCONF <<EOF; +# Stand-alone system, so generate an error for amil to a non-local domain +nonlocal: + driver = redirect + allow_fail + data = :fail: Mailing to remote domains not supported + no_more + domains = ! +local_domains + +EOF +} + +print EXIMCONF <<EOF; +# The "no_more" above means that all routers below here are for +# domains in the local_domains list, i.e. just like Exim 3 directors. + +real_local: + driver = accept + local_part_prefix = real- + check_local_user + transport = $local_delivery + +system_aliases: + driver = redirect + allow_fail + allow_defer + data = \${lookup{\$local_part}lsearch{/etc/aliases}} + file_transport = address_file + pipe_transport = address_pipe + +EOF + ; + +if ($configtype eq 'satellite') { + print EXIMCONF <<EOF; +hub_user: + driver = redirect + data = \${local_part}\@$readhost + check_local_user + +EOF + ; +} + +print EXIMCONF <<EOF; +userforward: + driver = redirect + check_local_user + file = \$home/.forward + no_verify + no_expn + check_ancestor +# allow_filter + file_transport = address_file + pipe_transport = address_pipe + reply_transport = address_reply + +EOF + +if ($use_procmail) { + print EXIMCONF <<EOF; +procmail: + driver = accept + check_local_user + transport = procmail_pipe + require_files = \${local_part}:\${home}/.procmailrc:+/usr/bin/procmail + no_verify + no_expn + +EOF +} + +if ($use_maildrop) { + print EXIMCONF <<EOF; +maildrop: + driver = accept + check_local_user + transport = maildrop_pipe + require_files = \${local_part}:\${home}/.mailfilter:+/usr/bin/maildrop + no_verify + no_expn + +EOF +} + + print EXIMCONF <<EOF; +local_user: + driver = accept + check_local_user + transport = $local_delivery + +begin transports + +EOF + ; +if ($configtype ne 'local') { + print EXIMCONF <<EOF; +remote_smtp: + driver = smtp + +EOF +; +} + +if ($mailbox_format eq 'spool') { + print EXIMCONF <<EOF; +mail_spool: + driver = appendfile + file = /var/spool/mail/\$local_part + delivery_date_add + envelope_to_add + return_path_add + group = mail + mode = 0660 + +EOF +} + +if ($mailbox_format eq 'maildir') { + print EXIMCONF <<EOF; +maildir_home: + driver = appendfile + directory = \$home/Maildir + maildir_format + mode = 0600 + +EOF +} + +print EXIMCONF <<EOF; +address_pipe: + driver = pipe + return_output + +address_file: + driver = appendfile + delivery_date_add + envelope_to_add + return_path_add + +address_reply: + driver = autoreply + +EOF + +if ($use_maildrop) { + print EXIMCONF <<EOF; +maildrop_pipe: + driver = pipe + path = "/bin:/usr/bin:/usr/local/bin" + command = "/usr/bin/maildrop" + return_path_add + delivery_date_add + envelope_to_add + +EOF +} + +if ($use_procmail) { + print EXIMCONF <<EOF; +procmail_pipe: + driver = pipe + path = "/bin:/usr/bin:/usr/local/bin" + command = "/usr/bin/procmail" + return_path_add + delivery_date_add + envelope_to_add + +EOF +} + +print EXIMCONF <<EOF; +begin retry + +# Domain Error Retries +# ------ ----- ------- + +* * F,2h,15m; G,16h,1h,1.5; F,4d,6h + +begin rewrite + +EOF + ; + +print EXIMCONF <<EOF; +# This rewriting rule is particularly useful for dialup users who +# don't have their own domain, but could be useful for anyone. +# It looks up the real address of all local users in a file + +EOF + ; + +for my $domain (@local_domains) { + print EXIMCONF "*\@$domain \${lookup{\${local_part}}lsearch{/etc/email-addresses}{\$value}fail} Ffrs\n"; +} + +if ($configtype eq 'satellite') { + print EXIMCONF <<EOF +# These rewriters make sure the mail messages appear to have originated +# from the real mail-reading host. + +EOF +; + + my $fuser = $postmasters[0]; + for my $domain (@local_domains) { + print EXIMCONF "^(?i)(root|postmaster|mailer-daemon)\@$domain \$\{local_part\}\@in.limbo Ffr\n" + if (@postmasters); + print EXIMCONF "*\@$domain \$\{local_part\}\@$readhost Ffr\n"; + } + print EXIMCONF "*\@in.limbo $fuser\@$readhost Ffr\n" + if (@postmasters); +} + +print EXIMCONF <<'EOF'; + +begin authenticators + +# The examples below are for server side authentication; they allow two +# styles of plain-text authentication against an /etc/exim4/passwd file +# which should have user IDs in the first column and crypted passwords +# in the second. + +# plain: +# driver = plaintext +# public_name = PLAIN +# server_condition = "${if crypteq{$2}{${extract{1}{:}{${lookup{$1}lsearch{/etc/exim4/passwd}{$value}{*:*}}}}}{1}{0}}" +# server_set_id = $1 +# +# login: +# driver = plaintext +# public_name = LOGIN +# server_prompts = "Username:: : Password::" +# server_condition = "${if crypteq{$3}{${extract{1}{:}{${lookup{$2}lsearch{/etc/exim4/passwd}{$value}{*:*}}}}}{1}{0}}" +# server_set_id = $3 +# +# cram_md5: +# driver = cram_md5 +# public_name = CRAM-MD5 +# server_condition = "${if crypteq{$2}{${extract{1}{:}{${lookup{$1}lsearch{/etc/exim4/passwd}{$value}{*:*}}}}}{1}{0}}" +# server_set_id = $1 + +# Here is an example of CRAM-MD5 authentication against PostgreSQL: +# +# psqldb_auth: +# driver = cram_md5 +# public_name = CRAM-MD5 +# server_condition = "${if crypteq{$2}{${lookup pgsql{SELECT pw FROM users WHERE username = '${quote_pgsql:$1}'}{$value}fail}{1}{0}}" +# server_set_id = $1 + +# These examples below are the equivalent for client side authentication. +# They assume that you only use client side authentication to connect to +# one host (such as a smarthost at your ISP), or else use the same user +# name and password everywhere + +# plain: +# driver = plaintext +# public_name = PLAIN +# client_send = "^username^password" +# +# login: +# driver = plaintext +# public_name = LOGIN +# client_send = ": username : password" +# +# cram_md5: +# driver = cram_md5 +# public_name = CRAM-MD5 +# client_name = username +# client_secret = password + +EOF +; + +close(EXIMCONF); + +unlink("/etc/exim4/exim4.conf.O"); +if (-f "/etc/exim4/exim4.conf") { + rename("/etc/exim4/exim4.conf", "/etc/exim4/exim4.conf.O") + or die "Unable to move /etc/exim4/exim4.conf to /etc/exim4/exim4.conf.O: $!\n"; +} +rename("/etc/exim4/exim4.conf.exim-pkg-new.$$", "/etc/exim4/exim4.conf") + or die "Unable to move /etc/exim4/exim4.conf.exim-pkg-new.$$ to /etc/exim4/exim4.conf: $!\n"; diff --git a/debian/debconf.gamla/exim4-base.config b/debian/debconf.gamla/exim4-base.config new file mode 100644 index 0000000..8c17115 --- /dev/null +++ b/debian/debconf.gamla/exim4-base.config @@ -0,0 +1,260 @@ +#!/usr/bin/perl -w + +require 5; +use strict; +use Debconf::Client::ConfModule ':all'; +use Carp; +use vars qw($reconfiguring $exim3conf $capb $default_configtype); + +sub get_value($) { + my $key = shift; + my($code,$text) = get($key); + return $text if ($code == 0); + croak("Unable to fetch value for \"$key\" (debconf code $code)"); +} + +sub enqueue_question($$) { + my $priority = shift; + my $template = shift; + my($code,$text) = input($priority, $template); + if ($code && $code != 30) { + croak("Error asking question \"$template\" (debconf code $code)"); + } +} + +sub set_default($$) { + my $key = shift; + my $defaultvalue = shift; + my($code, $text) = get($key); + if ($code == 0) { + if ($text eq '') { + ($code,$text) = set($key, $defaultvalue); + # Check $code... + } + } + else { + croak("Unable to fetch value for \"$key\" (debconf code $code)"); + } +} + +sub fetch_default($$) { + my $key = shift; + my $defaultcb = shift; + my($code, $text) = get($key); + if ($code == 0) { + if ($text eq '') { + my $defaultvalue = &$defaultcb; + if (defined($defaultvalue)) { + ($code, $text) = set($key, $defaultvalue); + # Check $code... + } + } + } + else { + croak("Unable to fetch value for \"$key\" (debconf code $code)"); + } +} + +sub debug { + if ($ENV{EXIMCONF_DEBUG}) { + print STDERR "$0: @_\n"; + } +} + +sub exim3_readconfig { + my $filename = shift || "/etc/exim/exim.conf"; + + if (open(EXIMCONF, $filename)) { + + my $config; + + my $keyword; + + scanmain: + while (<EXIMCONF>) { + chomp; + if (/^end\b/) { + last scanmain; + } + elsif (/^\s*([a-zA-z0-9_]+)\s*=\s*(.*)/) { + $keyword = $1; + my $value = $2; + while ($value =~ s/\\$//) { + my $nextline = <EXIMCONF>; + $value .= $nextline; + } + $config->{main}->{$keyword} = $value; + } + elsif (/^\s*no_([a-zA-Z0-9_]+)\s*$/) { + $config->{main}->{$keyword} = ''; + } + } + + for my $section (qw|transports directors routers|) { + scansection: + while (<EXIMCONF>) { + chomp; + + if (/^end\b/) { + last scansection; + } + elsif (/^([a-zA-Z0-9_]+):\s*/) { + my $objname = $1; + objectline: + while (<EXIMCONF>) { + next if (/^\s*\#/ || !/\S/); + if (/^\s*([a-zA-Z0-9_]+)\s*=\s*(.*)/) { + my $propname = $1; + my $value = $2; + while ($value =~ s/\\$//) { + my $nextline = <EXIMCONF>; + $value .= $nextline; + } + $config->{$section}->{$objname}->{$propname} = $value; + } + else { + redo scansection; + } + } + } + } + } + + close(EXIMCONF); + debug("Read Exim 3 config file $filename"); + return $config; + } + else { + debug("Unable to read $filename: $!"); + } + + return undef; +} + +version('2.0'); +$capb = capb(''); # FIXME: Support backup + +###################################################################### + +$reconfiguring = 1 if ($ARGV[0] eq 'reconfigure'); + +if (-f "/etc/exim4/exim4.conf" && !$reconfiguring) { + exit(0); # exit if exim4.conf already built and we are not explicitly reconfiguring +} + +###################################################################### +# Look for old Exim3 config file + +if (-f "/etc/exim/exim.conf") { + enqueue_question("high", "exim/configconvert/question"); + go(); + my $convertresponse = get_value("exim/configconvert/question"); + if ($convertresponse eq 'convert') { + enqueue_question("high", "exim/configconvert/convertnotice"); + go(); + system("/etc/init.d/exim4", "stop") if ($reconfiguring); + exit(0); + } + elsif ($convertresponse eq 'none') { + enqueue_question("high", "exim/configconvert/breakagenotice"); + go(); + exit(0); + } + elsif ($convertresponse eq 'createnew') { + # Do not read exim3 config file for defaults if exim4.conf has been created already + # The defaults should have been seen once by the user and stored in debconf anyway. + $exim3conf = exim3_readconfig() unless (-f "/etc/exim4/exim4.conf"); + } + else { + die "exim/configconvert/question has an unrecognised answer: (\"$convertresponse\")\n"; + } +} + +###################################################################### +# Ask eximconfig questions + +# Grab the configtype from the old exim3 config file +# TRANSPORT(remote_smtp) does not exist ==> local +# ROUTER(lookuphost) exists ==> internet +# DIRECTOR(smart) exists ==> satellite +# DEFAULT ==> smarthost +fetch_default("exim/eximconfig/configtype", sub { + return "local" if (!defined($exim3conf->{transports}->{remote_smtp})); + return "internet" if (defined($exim3conf->{routers}->{lookuphost})); + return "satellite" if (defined($exim3conf->{directors}->{smart})); + return "smarthost"; }); + +enqueue_question("high", "exim/eximconfig/configtype"); +go(); + +my $configtype = get_value("exim/eximconfig/configtype"); +if ($configtype eq 'none') { + exit(0); +} + +my $syshostname = $exim3conf->{main}->{primary_hostname} || $exim3conf->{main}->{qualify_domain} || `hostname --fqdn` || `hostname`; + +my $visiblename; + +if ($configtype eq 'satellite') { + set_default("exim/eximconfig/satellite_hostname", $syshostname); + enqueue_question("medium", "exim/eximconfig/satellite_hostname"); + go(); + $visiblename = get_value("exim/eximconfig/satellite_hostname"); +} +else { + set_default("exim/eximconfig/visible_hostname", $syshostname); + enqueue_question("medium", "exim/eximconfig/visible_hostname"); + go(); + $visiblename = get_value("exim/eximconfig/visible_hostname"); +} + +if ($configtype eq 'internet' || $configtype eq 'smarthost') { + subst("exim/eximconfig/other_hostnames", "visiblename", $visiblename); + + enqueue_question("high", "exim/eximconfig/other_hostnames"); + # Downgrade these to medium since having them empty is likely to be reasonable? + enqueue_question("high", "exim/eximconfig/relay_domains"); + enqueue_question("high", "exim/eximconfig/relay_nets"); +} + +my $ourdomain = $syshostname; +$ourdomain =~ s/^[^.][^.]*\.//; + +if ($configtype eq 'satellite') { + # Exim 3 satellite configuration? + # Look for director called "smart" + # .. and new_address setting of "${local_part}@SOME_DOMAIN" + if ($exim3conf->{directors}->{smart} && $exim3conf->{directors}->{smart}->{new_address} =~ /^\${local_part}\@(.+)/) { + set_default("exim/eximconfig/readhost", $1); + } + else { + set_default("exim/eximconfig/readhost", $ourdomain); + } + # This is high priority even though it has a default, since $ourdomain + # is not necessarily "reasonable".. mail.$ourdomain would be equally "reasonable" + enqueue_question("high", "exim/eximconfig/readhost"); + go(); + my $readhost = get_value("exim/eximconfig/readhost"); + set_default("exim/eximconfig/smarthost", $readhost); + enqueue_question("medium", "exim/eximconfig/smarthost"); +} +elsif ($configtype eq 'smarthost') { + set_default("exim/eximconfig/smarthost", $ourdomain); + enqueue_question("high", "exim/eximconfig/smarthost"); +} + +enqueue_question("medium", "exim/eximconfig/overwrite_aliases"); +enqueue_question("medium", "exim/daemon/permissions"); + +go(); + +if ($reconfiguring) { + system("/etc/init.d/exim4", "stop"); + if (-f "/etc/exim4/exim4.conf") { + unlink("/etc/exim4/exim4.conf-reconfigure"); + rename("/etc/exim4/exim4.conf", "/etc/exim4/exim4.conf-reconfigure"); + } +} + +exit(0); diff --git a/debian/debconf.gamla/exim4-base.postinst b/debian/debconf.gamla/exim4-base.postinst new file mode 100644 index 0000000..eacc8f7 --- /dev/null +++ b/debian/debconf.gamla/exim4-base.postinst @@ -0,0 +1,92 @@ +#!/bin/sh + +set -e +. /usr/share/debconf/confmodule + +db_version 2.0 + +get_value() { + db_get $1 + code="$?" + if [ "$code" -eq "0" ]; then + : + else + echo "Error getting debconf answer $1: debconf code=$code" >&2 + exit $code + fi +} + +case "$1" in + configure) + # Create directories for log etc + install -d -omail -gadm -m2750 /var/log/exim4 + install -d -omail -gmail /var/run/exim4 + + # Check that db files are readable by this Exim's db library + dbfiles="" + for f in /var/spool/exim/db/*; do + if [ -f "$f" ]; then + if echo $f | grep \.lockfile\$ >/dev/null 2>&1; then + : # ignore lock files + else + dbfiles="$dbfiles `basename $f`" + fi + fi + done + for dbfile in $dbfiles; do + if exim_dumpdb /var/spool/exim $dbfile >/dev/null 2>&1; then + : # File OK + else + echo "Resetting invalid $dbfile hints db" + rm -f /var/spool/exim/db/$dbfile /var/spool/exim/db/$dbfile.* + fi + done + + # Configure Exim + get_value exim/configconvert/question + convertanswer="$RET" + if [ -f /etc/exim4/exim4.conf ]; then + : # nothing: leave existing config alone + elif [ "$convertanswer" = "convert" ]; then + /usr/lib/exim4/convert4r4 < /etc/exim/exim.conf > /etc/exim4/exim4.conf + elif [ "$convertanswer" = "createnew" ]; then + /usr/lib/exim4/debconf_eximconfig + fi + + if [ -x "/etc/init.d/exim4" ]; then + update-rc.d exim4 defaults >/dev/null + fi + + get_value exim/daemon/permissions + case "$RET" in + "setuid root") + if ! dpkg-statoverride --list /usr/sbin/exim4 >/dev/null; then + dpkg-statoverride --update --add root root 4755 /usr/sbin/exim4 + fi + ;; + "setuid mail") + if ! dpkg-statoverride --list /usr/sbin/exim4 >/dev/null; then + dpkg-statoverride --update --add mail root 4755 /usr/sbin/exim4 + fi + ;; + "none") + if ! dpkg-statoverride --list /usr/sbin/exim4 >/dev/null; then + dpkg-statoverride --update --remove /usr/sbin/exim4 + fi + ;; + *) + echo "Error: Wrong answer for exim/daemon/permissions: $RET" >&3 + exit 1; + ;; + esac + + if [ -x /usr/sbin/invoke-rc.d ]; then + invoke-rc.d exim4 start + else + /etc/init.d/exim4 start + fi + + ;; +esac + +#DEBHELPER# diff --git a/debian/debconf.gamla/exim4-base.templates b/debian/debconf.gamla/exim4-base.templates new file mode 100644 index 0000000..11664e4 --- /dev/null +++ b/debian/debconf.gamla/exim4-base.templates @@ -0,0 +1,204 @@ +Template: exim/configconvert/question +Type: select +Choices: convert, createnew, none +Description: Exim 3 configuration not compatible with Exim 4 + Your existing Exim 3 configuration in /etc/exim/exim.conf cannot be + used by Exim 4. It is possible to try to convert your configuration file + using a script, or you can build a new configuration file by answering + a series of questions about your system. + . + As a third choice, you can leave Exim 4 unconfigured in case you want to + write a configuration file yourself. + +Template: exim/configconvert/convertnotice +Type: note +Description: Exim 3 configuration will be converted and put in exim4.conf + Exim 4 cannot read an Exim 3 configuration file. An attempt has been made + to convert your Exim 3 configuration file into an Exim 4 file, but this is + not guaranteed to work in all cases. + . + Exim 4's configuration file is in /etc/exim4/exim4.conf; your original + Exim 3 configuration file can still be found at /etc/exim/exim.conf, which + will be ignored from now on. + . + If the configuration file is badly broken, Exim will now refuse to start. + You should check your Exim configuration anyway to make sure that messages + are still being delivered correctly. + +Template: exim/configconvert/breakagenotice +Type: note +Description: Exim 4 is not configured + Exim 4 has not been configured. You must write an Exim 4 configuration file + as /etc/exim4/exim4.conf before Exim is usable. This host cannot + send or receive email until this is done. + +Template: exim/eximconfig/configtype +Type: select +Choices: internet, smarthost, satellite, local, none +Description: Which major configuration? + You must choose one of the options below: + . + Internet site; mail is sent and received directly using SMTP. If your + needs don't fit neatly into any category, you probably want to start + with this one and then edit the config file by hand. + . + Internet site using smarthost: You receive Internet mail on this + machine, either directly by SMTP or by running a utility such as + fetchmail. Outgoing mail is sent using a smarthost. optionally with + addresses rewritten. This is probably what you want for a dialup + system. + . + Satellite system: All mail is sent to another machine, called a "smart + host" for delivery. root and postmaster mail is delivered according + to /etc/aliases. No mail is received locally. + . + Local delivery only: You are not on a network. Mail for local users + is delivered. + . + No configuration: No configuration will be done now; your mail system + will be broken and should not be used. You must then do the + configuration yourself later or run "dpkg-reconfigure exim" + as root. Look in /usr/share/doc/exim/example.conf.gz + +Template: exim/eximconfig/satellite_hostname +Type: string +Description: What is the hostname for this system? + What is this system's name? It won't appear on From: lines of mail, + as rewriting is used. + +Template: exim/eximconfig/visible_hostname +Type: string +Description: What is the visible mail name of your system? + This will appear on From: lines of outgoing messages. + +Template: exim/eximconfig/syshostname +Type: string +Description: internal use only + This value is only used internally-- this template is never displayed. + +Template: exim/eximconfig/other_hostnames +Type: string +Description: What other domain names to recognise? + Does this system have any other names which may appear on incoming + mail messages, apart from the visible name (${visiblename}) and + localhost? + . + By default all domains will be treated the same; if you want different + domain names to be treated differently, you will need to edit the config + file afterwards. + . + If there are any more, enter them here, separated with spaces or commas. + +Template: exim/eximconfig/relay_domains +Type: string +Description: Which domains to relay for? + All mail from here or specified other local machines to anywhere on + the internet will be accepted, as will mail from anywhere on the + internet to here. + . + Are there any domains you want to relay mail for---that is, you are + prepared to accept mail for them from anywhere on the internet, but + they are not local domains. + . + If there are any, enter them here, separated with spaces or commas. You + can use wildcards. If you want to relay + mail for all domains that specify you as an MX, then say "mx". + +Template: exim/eximconfig/relay_nets +Type: string +Description: Which machines to allow relaying for? + Obviously, any machines that use us as a smarthost have to be excluded + from the relaying controls, as using us to relay mail for them is the + whole point. + . + Are there any networks of local machines you want to relay mail for? + . + If there are any, enter them here, separated with spaces or commas. You + should use the standard address/length format (e.g. 194.222.242.0/24) + . + You need to double the colons in IPv6 addreses (e.g. 5f03::1200::836f::::/48) + +Template: exim/eximconfig/readhost +Type: string +Description: Domain name for local users + Since this is going to be a satellite system, I need to know what domain + name to use for mail from local users; typically this is the machine on + which you normally receive your mail. + . + Where will your users read their mail? + +Template: exim/eximconfig/smarthost +Type: string +Description: Which machine will act as the smarthost and handle outgoing mail? + Enter the hostname of the machine to send outgoing mail to. + +Template: exim/eximconfig/postmaster +Type: string +Description: Who is to receive postmaster mail? + Mail for the "postmaster" and "root" accounts is usually redirected + to one or more user accounts, of the actual system administrators. + By default, I'll set things up so that mail for "postmaster" and for + various system accounts is redirected to "root", and mail for "root" + is redirected to a real user. This can be changed by editing /etc/aliases. + . + Note that postmaster-mail should usually be read on the system it is + directed to, rather than being forwarded elsewhere, so (at least one of) + the users you choose should not redirect their mail off this machine. + . + Which user account(s) should system administrator mail go to ? + Enter one or more usernames separated by spaces or commas . Enter + "none" if you want to leave this mail in "root"'s mailbox - NB this + is strongly discouraged. Also, note that usernames should be lowercase! + +Template: exim/eximconfig/overwrite_aliases +Type: boolean +Default: false +Description: Overwrite existing /etc/aliases? + You already have an /etc/aliases file. Do you want to replace this with + a new one (the old one will be kept and renamed to aliases.O)? + +Template: exim/eximconfig/mailbox_format +Type: select +Choices: spool, maildir +Default: spool +Description: Where to store user mailboxes? + The Debian default place to store user mail is in + /var/spool/mail/$USER. However, you may wish to store it + elsewhere. One popular choice (particularly with those migrating from + qmail) is to store user mail in a "Maildir" in their home directory. + . + You can choose to store mail in the normal mail spool, or a + home-directory Maildir. + +Template: exim/eximconfig/auto_procmail +Type: boolean +Default: true +Description: Automatically use procmail to deliver mail? + Do you want Exim to automagically deliver mail with procmail if: + . + a) it is installed, and + . + b) the target user has a ".procmailrc" file in their home directory. + +Template: exim/eximconfig/auto_maildrop +Type: boolean +Default: true +Description: Automatically use maildrop to deliver mail? + Do you want Exim to automagically deliver mail with maildrop if: + . + a) it is installed, and + . + b) the target user has a ".mailfilter" file in their home directory. + +Template: exim/daemon/permissions +Type: select +Choices: setuid root, setuid mail, none +Default: setuid root +Description: Install Exim daemon with SUID bit set? + Exim can be installed without extra privileges, setuid to mail (the + Exim user), or setuid to root. The safe default is to install it + setuid to root. Changing this can cause problems with usage of + .forward files and mail delivery, depending on your setup. + . + Be sure to read Chapter 55 "Security considerations" of the Exim + manual before you change this. diff --git a/debian/debconf/conf.d/acl/00_exim4-base_header b/debian/debconf/conf.d/acl/00_exim4-base_header new file mode 100644 index 0000000..76b017e --- /dev/null +++ b/debian/debconf/conf.d/acl/00_exim4-base_header @@ -0,0 +1,8 @@ + +###################################################################### +# ACL CONFIGURATION # +# Specifies access control lists for incoming SMTP mail # +###################################################################### +begin acl + + diff --git a/debian/debconf/conf.d/acl/30_exim4-base_check_rcpt b/debian/debconf/conf.d/acl/30_exim4-base_check_rcpt new file mode 100644 index 0000000..387c4ba --- /dev/null +++ b/debian/debconf/conf.d/acl/30_exim4-base_check_rcpt @@ -0,0 +1,83 @@ +# This access control list is used for every RCPT command in an incoming +# SMTP message. The tests are run in order until the address is either +# accepted or denied. +# +acl_check_rcpt: + # Accept if the source is local SMTP (i.e. not over TCP/IP). We do this by + # testing for an empty sending host field. + accept hosts = : + # Deny if the local part contains @ or % or / or | or !. These are rarely + # found in genuine local parts, but are often tried by people looking to + # circumvent relaying restrictions. + # + # Also deny if the local part starts with a dot. Empty components aren't + # strictly legal in RFC 2822, but Exim allows them because this is common. + # However, actually starting with a dot may cause trouble if the local part + # is used as a file name (e.g. for a mailing list). + # + deny local_parts = ^.*[@%!/|] : ^\\. + # Accept mail to postmaster in any local domain, regardless of the source, + # and without verifying the sender. + # + accept local_parts = postmaster + domains = +local_domains + # Deny unless the sender address can be verified. + # + # require verify = sender + + ############################################################################# + # There are no checks on DNS "black" lists because the domains that contain + # these lists are changing all the time. However, here are two examples of + # how you could get Exim to perform a DNS black list lookup at this point. + # The first one denies, while the second just warns. + # + # deny message = rejected because $sender_host_address is in a black list at $dnslist_domain\n$dnslist_text + # dnslists = black.list.example + # + # warn message = X-Warning: $sender_host_address is in a black list at $dnslist_domain + # log_message = found in $dnslist_domain + # dnslists = black.list.example + ############################################################################# + + # Accept if the address is in a local domain, but only if the recipient can + # be verified. Otherwise deny. The "endpass" line is the border between + # passing on to the next ACL statement (if tests above it fail) or denying + # access (if tests below it fail). + # + accept domains = +local_domains + endpass + message = unknown user + verify = recipient + + # Accept if the address is in a domain for which we are relaying, but again, + # only if the recipient can be verified. + # + accept domains = +relay_to_domains + endpass + message = unrouteable address + verify = recipient + + # If control reaches this point, the domain is neither in +local_domains + # nor in +relay_to_domains. + + # Accept if the message comes from one of the hosts for which we are an + # outgoing relay. Recipient verification is omitted here, because in many + # cases the clients are dumb MUAs that don't cope well with SMTP error + # responses. If you are actually relaying out from MTAs, you should probably + # add recipient verification here. + # + accept hosts = +relay_from_hosts + + # Accept if the message arrived over an authenticated connection, from + # any host. Again, these messages are usually from MUAs, so recipient + # verification is omitted. + # + accept authenticated = * + + # Reaching the end of the ACL causes a "deny", but we might as well give + # an explicit message. + # + deny message = relay not permitted + + + diff --git a/debian/debconf/conf.d/auth/00_exim4-base_header b/debian/debconf/conf.d/auth/00_exim4-base_header new file mode 100644 index 0000000..c5f8fc1 --- /dev/null +++ b/debian/debconf/conf.d/auth/00_exim4-base_header @@ -0,0 +1,8 @@ + +###################################################################### +# AUTHENTICATION CONFIGURATION # +###################################################################### + +begin authenticators + + diff --git a/debian/debconf/conf.d/auth/30_exim4-base_examples b/debian/debconf/conf.d/auth/30_exim4-base_examples new file mode 100644 index 0000000..c39ae61 --- /dev/null +++ b/debian/debconf/conf.d/auth/30_exim4-base_examples @@ -0,0 +1,63 @@ +# The examples below are for server side authentication; they allow two +# styles of plain-text authentication against an CONFDIR/passwd file +# which should have user IDs in the first column and crypted passwords +# in the second. The columns need to be separated by ':'. For CRAM-MD5 +# exim needs access to the UNECRYPTED passwd - the example below assumes +# it is avalable in the third column of CONFDIR/passwd + +# plain: +# driver = plaintext +# public_name = PLAIN +# server_condition = "${if crypteq{$3}{${extract{1}{:}{${lookup{$2}lsearch{CONFDIR/passwd}{$value}{*:*}}}}}{1}{0}}" +# server_set_id = $2 +# +# login: +# driver = plaintext +# public_name = LOGIN +# server_prompts = "Username:: : Password::" +# server_condition = "${if crypteq{$2}{${extract{1}{:}{${lookup{$1}lsearch{CONFDIR/passwd}{$value}{*:*}}}}}{1}{0}}" +# server_set_id = $1 +# +# cram_md5: +# driver = cram_md5 +# public_name = CRAM-MD5 +# server_secret = ${extract{2}{:}{${lookup{$1}lsearch{CONFDIR/passwd}{$value}fail}}} +# server_set_id = $1 + +# Here is an example of CRAM-MD5 authentication against PostgreSQL: +# +# psqldb_auth: +# driver = cram_md5 +# public_name = CRAM-MD5 +# server_secret = ${lookup pgsql{SELECT pw FROM users WHERE username = '${quote_pgsql:$1}'}{$value}fail} +# server_set_id = $1 + +# These examples below are the equivalent for client side authentication. +# They get the passwords from CONFDIR/passwd.client. This file should have +# three columns separated by colons, the first contains the name of the +# mailserver to authenticate against, the second the username and the third +# contains the password. + +### # example for CONFDIR/passwd.client +### mail.server:blah:secret +### # default entry: +### *:bar:foo + +# plain: +# driver = plaintext +# public_name = PLAIN +# client_send = "^${extract{1}{:}{${lookup{$host}lsearch*{CONFDIR/passwd.client}{$value}fail}}}^${extract{2}{:}{${lookup{$host}lsearch*{CONFDIR/passwd.client}{$value}fail}}}" +# +# login: +# driver = plaintext +# public_name = LOGIN +# client_send = ": ${extract{1}{:}{${lookup{$host}lsearch*{CONFDIR/passwd.client}{$value}fail}}} : ${extract{2}{:}{${lookup{$host}lsearch*{CONFDIR/passwd.client}{$value}fail}}}" +# +# cram_md5: +# driver = cram_md5 +# public_name = CRAM-MD5 +# client_name = ${extract{1}{:}{${lookup{$host}lsearch*{CONFDIR/passwd.client}{$value}fail}}} +# client_secret = ${extract{2}{:}{${lookup{$host}lsearch*{CONFDIR/passwd.client}{$value}fail}}} + + + diff --git a/debian/debconf/conf.d/main/01_exim4-base_listmacrosdefs b/debian/debconf/conf.d/main/01_exim4-base_listmacrosdefs new file mode 100644 index 0000000..b5c572a --- /dev/null +++ b/debian/debconf/conf.d/main/01_exim4-base_listmacrosdefs @@ -0,0 +1,64 @@ + +###################################################################### +# Runtime configuration file for Exim # +###################################################################### + +###################################################################### +# MAIN CONFIGURATION SETTINGS # +###################################################################### + +# Just for reference and scripts, on debian, the main binary is +# installed as exim4 +exim_path = /usr/sbin/exim4 + +# Macro defining the main configuration directory, we use no abolute +# paths. +CONFDIR = /etc/exim4 + +# Let Exim autodetect this +# primary_hostname = + +# The next three settings create two lists of domains and one list of hosts. +# These lists are referred to later in this configuration using the syntax +# +local_domains, +relay_to_domains, and +relay_from_hosts, respectively. They +# are all colon-separated lists: + +# '@' refers to 'the name of the local host' + +### EXPANSION-begins ###################### +domainlist local_domains = DEBCONFlocal_domainsDEBCONF + +domainlist relay_to_domains = DEBCONFrelay_domainsDEBCONF + +hostlist relay_from_hosts = 127.0.0.1 : ::::1 : DEBCONFrelay_netsDEBCONF + + +# Specify the domain you want to be added to all unqualified addresses +# here. An unqualified address is one that does not contain an "@" character +# followed by a domain. For example, "caesar@rome.example" is a fully qualified +# address, but the string "caesar" (i.e. just a login name) is an unqualified +# email address. Unqualified addresses are accepted only from local callers by +# default. See the recipient_unqualified_hosts option if you want to permit +# unqualified addresses from remote sources. If this option is not set, the +# primary_hostname value is used for qualification. +qualify_domain = DEBCONFvisiblenameDEBCONF + +# only used for satellite-system +DCreadhost = DEBCONFreadhostDEBCONF + +#for satellite and smarthost-systems +DCsmarthost = DEBCONFsmarthostDEBCONF + +# listen on all all interfaces? +DEBCONFlistenonpublicDEBCONF +### EXPANSION-ends ###################### + +# The default delivery method. See CONFDIR/conf.d/transports/ for other +# possibilities +LOCAL_DELIVERY=mail_spool + +# The gecos field in /etc/passwd holds not only the name. see passwd(5). +gecos_pattern = ^([^,:]*) +gecos_name = $1 + + diff --git a/debian/debconf/conf.d/main/02_exim4-base_options b/debian/debconf/conf.d/main/02_exim4-base_options new file mode 100644 index 0000000..5d0a092 --- /dev/null +++ b/debian/debconf/conf.d/main/02_exim4-base_options @@ -0,0 +1,99 @@ + + +# This option defines the access control list that is run when an +# SMTP RCPT command is received. +# +acl_smtp_rcpt = acl_check_rcpt + +# If you want unqualified recipient addresses to be qualified with a different +# domain to unqualified sender addresses, specify the recipient domain here. +# If this option is not set, the qualify_domain value is used. +# +# qualify_recipient = + +# The following line must be uncommented if you want Exim to recognize +# addresses of the form "user@[10.11.12.13]" that is, with a "domain literal" +# (an IP address) instead of a named domain. The RFCs still require this form, +# but it makes little sense to permit mail to be sent to specific hosts by +# their IP address in the modern Internet. This ancient format has been used +# by those seeking to abuse hosts by using them for unwanted relaying. If you +# really do want to support domain literals, uncomment the following line, and +# see also the "domain_literal" router below. +# +# allow_domain_literals + +# The setting below causes Exim to do a reverse DNS lookup on all incoming +# IP calls, in order to get the true host name. If you feel this is too +# expensive, you can specify the networks for which a lookup is done, or +# remove the setting entirely. +# +host_lookup = * + +# The settings below, which are actually the same as the defaults in the +# code, cause Exim to make RFC 1413 (ident) callbacks for all incoming SMTP +# calls. You can limit the hosts to which these calls are made, and/or change +# the timeout that is used. If you set the timeout to zero, all RFC 1413 calls +# are disabled. RFC 1413 calls are cheap and can provide useful information +# for tracing problem messages, but some hosts and firewalls have problems +# with them. This can result in a timeout instead of an immediate refused +# connection, leading to delays on starting up an SMTP session. +# +rfc1413_hosts = * +rfc1413_query_timeout = 30s + +# By default, Exim expects all envelope addresses to be fully qualified, that +# is, they must contain both a local part and a domain. If you want to accept +# unqualified addresses (just a local part) from certain hosts, you can specify +# these hosts by setting one or both of +# +# sender_unqualified_hosts = +# recipient_unqualified_hosts = +# +# to control sender and recipient addresses, respectively. When this is done, +# unqualified addresses are qualified using the settings of qualify_domain +# and/or qualify_recipient (see above). + +# If you want Exim to support the "percent hack" for certain domains, +# uncomment the following line and provide a list of domains. The "percent +# hack" is the feature by which mail addressed to x%y@z (where z is one of +# the domains listed) is locally rerouted to x@y and sent on. If z is not one +# of the "percent hack" domains, x%y is treated as an ordinary local part. This +# hack is rarely needed nowadays; you should not enable it unless you are sure +# that you really need it. +# +# percent_hack_domains = + +# When Exim can neither deliver a message nor return it to sender, it "freezes" +# the delivery error message (aka "bounce message"). There are also other +# circumstances in which messages get frozen. They will stay on the queue for +# ever unless one of the following options is set. + +# This option unfreezes frozen bounce messages after two days, tries +# once more to deliver them, and ignores any delivery failures. +# +ignore_bounce_errors_after = 2d + +# This option cancels (removes) frozen messages that are older than a week. +# +timeout_frozen_after = 7d + +freeze_tell = postmaster + +# uucp should be able to set envelope-from to arbitrary values +trusted_users = uucp + +#REMOVEMEBEFORERELEASE +# '[+prerelease]' from received-header +#REMOVEMEBEFORERELEASE +received_header_text = "Received: \ + ${if def:sender_rcvhost {from ${sender_rcvhost}\n\t}\ + {${if def:sender_ident {from ${sender_ident} }}\ + ${if def:sender_helo_name {(helo=${sender_helo_name})\n\t}}}}\ + by ${primary_hostname} \ + ${if def:received_protocol {with ${received_protocol}}} \ + (Exim ${version_number} #${compile_number} (Debian) [+prerelease])\n\t\ + id ${message_id}\ + ${if def:received_for {\n\tfor <$received_for>}}" + + + diff --git a/debian/debconf/conf.d/main/03_exim4-base_tlsoptions b/debian/debconf/conf.d/main/03_exim4-base_tlsoptions new file mode 100644 index 0000000..9c07b50 --- /dev/null +++ b/debian/debconf/conf.d/main/03_exim4-base_tlsoptions @@ -0,0 +1,30 @@ +# Example for TLS/SSL configuration. + +# See /usr/share/doc/exim4-base/README.TLS* for explanations. + +# Defines what hosts to 'advertise' AUTHentication to when they connect +# via TLS. Setting this to * will advertise this functionality to all +# hosts that connect with TLS and this is a good default +# +# hostlist auth_over_tls_hosts = * + +# Defines that you want to log what cipher your exim and the peer's mailer +# uses to encrypt the transaction. It also defines you want to log the 'DN' +# (Distinguished Name) of the certificate of the peer. +# +# log_selector = +tls_cipher +tls_peerdn + +# Defines what hosts to 'advertise' STARTTLS functionality to. Setting this +# to * will advertise to all hosts that connect with EHLO, and this is a +# good default +# +# tls_advertise_hosts = * + +# Defines where your SSL-certificate and SSL-Private Key are located. +# This requires a full path. The files pointed to must be kept 'secret' +# and should be owned my root.mail mode 640 (-rw-r-----). Usually the +# exim-gencert script takes care of these prerequisites. +# +# tls_certificate = CONFDIR/exim.crt +# tls_privatekey = CONFDIR/exim.key + diff --git a/debian/debconf/conf.d/retry/00_exim4-base_header b/debian/debconf/conf.d/retry/00_exim4-base_header new file mode 100644 index 0000000..e2bb4a4 --- /dev/null +++ b/debian/debconf/conf.d/retry/00_exim4-base_header @@ -0,0 +1,7 @@ + +###################################################################### +# RETRY CONFIGURATION # +###################################################################### + +begin retry + diff --git a/debian/debconf/conf.d/retry/30_exim4-base b/debian/debconf/conf.d/retry/30_exim4-base new file mode 100644 index 0000000..0ade295 --- /dev/null +++ b/debian/debconf/conf.d/retry/30_exim4-base @@ -0,0 +1,14 @@ + +# This single retry rule applies to all domains and all errors. It specifies +# retries every 15 minutes for 2 hours, then increasing retry intervals, +# starting at 1 hour and increasing each time by a factor of 1.5, up to 16 +# hours, then retries every 6 hours until 4 days have passed since the first +# failed delivery. + +# Domain Error Retries +# ------ ----- ------- + +* * F,2h,15m; G,16h,1h,1.5; F,4d,6h + + + diff --git a/debian/debconf/conf.d/rewrite/00_exim4-base_header b/debian/debconf/conf.d/rewrite/00_exim4-base_header new file mode 100644 index 0000000..a32db17 --- /dev/null +++ b/debian/debconf/conf.d/rewrite/00_exim4-base_header @@ -0,0 +1,7 @@ + +###################################################################### +# REWRITE CONFIGURATION # +###################################################################### + +begin rewrite + diff --git a/debian/debconf/conf.d/router/00_exim4-base_header b/debian/debconf/conf.d/router/00_exim4-base_header new file mode 100644 index 0000000..531e21f --- /dev/null +++ b/debian/debconf/conf.d/router/00_exim4-base_header @@ -0,0 +1,11 @@ + +###################################################################### +# ROUTERS CONFIGURATION # +# Specifies how addresses are handled # +###################################################################### +# THE ORDER IN WHICH THE ROUTERS ARE DEFINED IS IMPORTANT! # +# An address is passed to each router in turn until it is accepted. # +###################################################################### + +begin routers + diff --git a/debian/debconf/conf.d/router/20_exim4-base_domain_literal b/debian/debconf/conf.d/router/20_exim4-base_domain_literal new file mode 100644 index 0000000..c07a354 --- /dev/null +++ b/debian/debconf/conf.d/router/20_exim4-base_domain_literal @@ -0,0 +1,16 @@ + +# This router routes to remote hosts over SMTP by explicit IP address, +# when an email address is given in "domain literal" form, for example, +# <user@[192.168.35.64]>. The RFCs require this facility. However, it is +# little-known these days, and has been exploited by evil people seeking +# to abuse SMTP relays. Consequently it is commented out in the default +# configuration. If you uncomment this router, you also need to uncomment +# allow_domain_literals above, so that Exim can recognize the syntax of +# domain literal addresses. + +# domain_literal: +# debug_print = "R: domain_literal for $local_part@$domain" +# driver = ipliteral +# domains = ! +local_domains +# transport = remote_smtp + diff --git a/debian/debconf/conf.d/router/24_exim4-base_real_local b/debian/debconf/conf.d/router/24_exim4-base_real_local new file mode 100644 index 0000000..75fd115 --- /dev/null +++ b/debian/debconf/conf.d/router/24_exim4-base_real_local @@ -0,0 +1,8 @@ + +real_local: + debug_print = "R: real_local for $local_part@$domain" + driver = accept + local_part_prefix = real- + check_local_user + transport = LOCAL_DELIVERY + diff --git a/debian/debconf/conf.d/router/26_exim4-base_system_aliases b/debian/debconf/conf.d/router/26_exim4-base_system_aliases new file mode 100644 index 0000000..92e1d54 --- /dev/null +++ b/debian/debconf/conf.d/router/26_exim4-base_system_aliases @@ -0,0 +1,26 @@ + +# This router handles aliasing using a traditional /etc/aliases file. +# +##### NB You must ensure that /etc/aliases exists. It used to be the case +##### NB that every Unix had that file, because it was the Sendmail default. +##### NB These days, there are systems that don't have it. Your aliases +##### NB file should at least contain an alias for "postmaster". +# +# If any of your aliases expand to pipes or files, you will need to set +# up a user and a group for these deliveries to run under. You can do +# this by uncommenting the "user" option below (changing the user name +# as appropriate) and adding a "group" option if necessary. Alternatively, you +# can specify "user" on the transports that are used. Note that the transports +# listed below are the same as are used for .forward files; you might want +# to set up different ones for pipe and file deliveries from aliases. +# +system_aliases: + debug_print = "R: system_aliases for $local_part@$domain" + driver = redirect + allow_fail + allow_defer + data = ${lookup{$local_part}lsearch{/etc/aliases}} +# user = list + file_transport = address_file + pipe_transport = address_pipe + diff --git a/debian/debconf/conf.d/router/30_exim4-base_userforward b/debian/debconf/conf.d/router/30_exim4-base_userforward new file mode 100644 index 0000000..92b70ea --- /dev/null +++ b/debian/debconf/conf.d/router/30_exim4-base_userforward @@ -0,0 +1,32 @@ + +# This router handles forwarding using traditional .forward files in users' +# home directories. If you want it also to allow mail filtering when a forward +# file starts with the string "# Exim filter", uncomment the "allow_filter" +# option. +# +# The no_verify setting means that this router is skipped when Exim is +# verifying addresses. Similarly, no_expn means that this router is skipped if +# Exim is processing an EXPN command. +# +# The check_ancestor option means that if the forward file generates an +# address that is an ancestor of the current one, the current one gets +# passed on instead. This covers the case where A is aliased to B and B +# has a .forward file pointing to A. +# +# The three transports specified at the end are those that are used when +# forwarding generates a direct delivery to a file, or to a pipe, or sets +# up an auto-reply, respectively. +# +userforward: + debug_print = "R: userforward for $local_part@$domain" + driver = redirect + check_local_user + file = $home/.forward + no_verify + no_expn + check_ancestor +# allow_filter + file_transport = address_file + pipe_transport = address_pipe + reply_transport = address_reply + diff --git a/debian/debconf/conf.d/router/32_exim4-base_procmail b/debian/debconf/conf.d/router/32_exim4-base_procmail new file mode 100644 index 0000000..7a56894 --- /dev/null +++ b/debian/debconf/conf.d/router/32_exim4-base_procmail @@ -0,0 +1,10 @@ + +procmail: + debug_print = "R: procmail for $local_part@$domain" + driver = accept + check_local_user + transport = procmail_pipe + require_files = ${local_part}:${home}/.procmailrc:+/usr/bin/procmail + no_verify + no_expn + diff --git a/debian/debconf/conf.d/router/34_exim4-base_maildrop b/debian/debconf/conf.d/router/34_exim4-base_maildrop new file mode 100644 index 0000000..e6fedb6 --- /dev/null +++ b/debian/debconf/conf.d/router/34_exim4-base_maildrop @@ -0,0 +1,11 @@ + +# Use maildrop +# maildrop: +# debug_print = "R: maildrop for $local_part@$domain" +# driver = accept +# check_local_user +# transport = maildrop_pipe +# require_files = ${local_part}:${home}/.mailfilter:+/usr/bin/maildrop +# no_verify +# no_expn + diff --git a/debian/debconf/conf.d/router/36_exim4-base_local_user b/debian/debconf/conf.d/router/36_exim4-base_local_user new file mode 100644 index 0000000..6a97a65 --- /dev/null +++ b/debian/debconf/conf.d/router/36_exim4-base_local_user @@ -0,0 +1,9 @@ + +local_user: + debug_print = "R: local_user for $local_part@$domain" + driver = accept + check_local_user + transport = LOCAL_DELIVERY + + + diff --git a/debian/debconf/conf.d/transport/00_exim4-base_header b/debian/debconf/conf.d/transport/00_exim4-base_header new file mode 100644 index 0000000..48e45da --- /dev/null +++ b/debian/debconf/conf.d/transport/00_exim4-base_header @@ -0,0 +1,13 @@ + +###################################################################### +# TRANSPORTS CONFIGURATION # +###################################################################### +# ORDER DOES NOT MATTER # +# Only one appropriate transport is called for each delivery. # +###################################################################### + +# A transport is used only when referenced from a router that successfully +# handles an address. + +begin transports + diff --git a/debian/debconf/conf.d/transport/30_exim4-base_address_file b/debian/debconf/conf.d/transport/30_exim4-base_address_file new file mode 100644 index 0000000..82b55e2 --- /dev/null +++ b/debian/debconf/conf.d/transport/30_exim4-base_address_file @@ -0,0 +1,11 @@ + +# This transport is used for handling deliveries directly to files that are +# generated by aliasing or forwarding. +# +address_file: + debug_print = "T: address_file for $local_part@$domain" + driver = appendfile + delivery_date_add + envelope_to_add + return_path_add + diff --git a/debian/debconf/conf.d/transport/30_exim4-base_address_pipe b/debian/debconf/conf.d/transport/30_exim4-base_address_pipe new file mode 100644 index 0000000..5b66a2d --- /dev/null +++ b/debian/debconf/conf.d/transport/30_exim4-base_address_pipe @@ -0,0 +1,14 @@ + +# This transport is used for handling pipe deliveries generated by alias or +# .forward files. If the pipe generates any standard output, it is returned +# to the sender of the message as a delivery error. Set return_fail_output +# instead of return_output if you want this to happen only when the pipe fails +# to complete normally. You can set different transports for aliases and +# forwards if you want to - see the references to address_pipe in the routers +# section above. +# +address_pipe: + debug_print = "T: address_pipe for $local_part@$domain" + driver = pipe + return_output + diff --git a/debian/debconf/conf.d/transport/30_exim4-base_address_reply b/debian/debconf/conf.d/transport/30_exim4-base_address_reply new file mode 100644 index 0000000..b2b8862 --- /dev/null +++ b/debian/debconf/conf.d/transport/30_exim4-base_address_reply @@ -0,0 +1,8 @@ + +# This transport is used for handling autoreplies generated by the filtering +# option of the userforward router. +# +address_reply: + debug_print = "T: autoreply for $local_part@$domain" + driver = autoreply + diff --git a/debian/debconf/conf.d/transport/30_exim4-base_mail_spool b/debian/debconf/conf.d/transport/30_exim4-base_mail_spool new file mode 100644 index 0000000..9ce7365 --- /dev/null +++ b/debian/debconf/conf.d/transport/30_exim4-base_mail_spool @@ -0,0 +1,14 @@ + +# This transport is used for local delivery to user mailboxes in traditional +# BSD mailbox format. +# +mail_spool: + debug_print = "T: appendfile for $local_part@$domain" + driver = appendfile + file = /var/mail/$local_part + delivery_date_add + envelope_to_add + return_path_add + group = mail + mode = 0660 + diff --git a/debian/debconf/conf.d/transport/30_exim4-base_maildir_home b/debian/debconf/conf.d/transport/30_exim4-base_maildir_home new file mode 100644 index 0000000..33947a3 --- /dev/null +++ b/debian/debconf/conf.d/transport/30_exim4-base_maildir_home @@ -0,0 +1,11 @@ + +# Use this instead of mail_spool if you want to to deliver to Maildir in +# home-directory - change the definition of LOCAL_DELIVERY +# +maildir_home: + debug_print = "T: maildir_home for $local_part@$domain" + driver = appendfile + directory = $home/Maildir + maildir_format + mode = 0600 + diff --git a/debian/debconf/conf.d/transport/30_exim4-base_maildrop_pipe b/debian/debconf/conf.d/transport/30_exim4-base_maildrop_pipe new file mode 100644 index 0000000..0ba27bc --- /dev/null +++ b/debian/debconf/conf.d/transport/30_exim4-base_maildrop_pipe @@ -0,0 +1,10 @@ + +maildrop_pipe: + debug_print = "T: maildrop_pipe for $local_part@$domain" + driver = pipe + path = "/bin:/usr/bin:/usr/local/bin" + command = "/usr/bin/maildrop" + return_path_add + delivery_date_add + envelope_to_add + diff --git a/debian/debconf/conf.d/transport/30_exim4-base_procmail_pipe b/debian/debconf/conf.d/transport/30_exim4-base_procmail_pipe new file mode 100644 index 0000000..5fb03ff --- /dev/null +++ b/debian/debconf/conf.d/transport/30_exim4-base_procmail_pipe @@ -0,0 +1,10 @@ + +procmail_pipe: + debug_print = "T: procmail_pipe for $local_part@$domain" + driver = pipe + path = "/bin:/usr/bin:/usr/local/bin" + command = "/usr/bin/procmail" + return_path_add + delivery_date_add + envelope_to_add + diff --git a/debian/debconf/conf.d/transport/30_exim4-base_remote_smtp b/debian/debconf/conf.d/transport/30_exim4-base_remote_smtp new file mode 100644 index 0000000..0868953 --- /dev/null +++ b/debian/debconf/conf.d/transport/30_exim4-base_remote_smtp @@ -0,0 +1,11 @@ + +# This transport is used for delivering messages over SMTP connections. +remote_smtp: + debug_print = "T: remote_smtp for $local_part@$domain" + driver = smtp +# hosts_try_auth = DCsmarthost + +# To use SMTP AUTH when sending to your smarthost, uncomment the above line, +# and uncomment and customize also the example +# client-side authenticators at the bottom of the file + diff --git a/debian/debconf/splitoff-parts/primrout-internet b/debian/debconf/splitoff-parts/primrout-internet new file mode 100644 index 0000000..1830cd0 --- /dev/null +++ b/debian/debconf/splitoff-parts/primrout-internet @@ -0,0 +1,14 @@ +# primrout-internet +# +dnslookup: + driver = dnslookup + domains = ! +local_domains + transport = remote_smtp + same_domain_copy_routing = yes + # ignore private rfc1918 and APIPA addresses + ignore_target_hosts = 0.0.0.0 : 127.0.0.0/8 : 192.168.0.0/16 :\ + 172.16.0.0/12 : 10.0.0.0/8 : 169.254.0.0/16 + no_more + +##### end of primrout-internet ######## + diff --git a/debian/debconf/splitoff-parts/primrout-local b/debian/debconf/splitoff-parts/primrout-local new file mode 100644 index 0000000..050064f --- /dev/null +++ b/debian/debconf/splitoff-parts/primrout-local @@ -0,0 +1,12 @@ +# primrout-local +# +# Stand-alone system, so generate an error for mail to a non-local domain +nonlocal: + driver = redirect + allow_fail + data = :fail: Mailing to remote domains not supported + no_more + domains = ! +local_domains + +##### end of primrout-local ######## + diff --git a/debian/debconf/splitoff-parts/primrout-satellite b/debian/debconf/splitoff-parts/primrout-satellite new file mode 100644 index 0000000..9cc4dbf --- /dev/null +++ b/debian/debconf/splitoff-parts/primrout-satellite @@ -0,0 +1,13 @@ +# primrout-satellite +# +smarthost: + driver = manualroute + domains = ! +local_domains + transport = remote_smtp + route_list = * DCsmarthost + host_find_failed = defer + same_domain_copy_routing = yes + no_more + +##### end of primrout-satellite ####### + diff --git a/debian/debconf/splitoff-parts/primrout-smarthost b/debian/debconf/splitoff-parts/primrout-smarthost new file mode 100644 index 0000000..ee67018 --- /dev/null +++ b/debian/debconf/splitoff-parts/primrout-smarthost @@ -0,0 +1,13 @@ +# primrout-smarthost +# +smarthost: + driver = manualroute + domains = ! +local_domains + transport = remote_smtp + route_list = * DCsmarthost + host_find_failed = defer + same_domain_copy_routing = yes + no_more + +##### end of primrout-smarthost ####### + diff --git a/debian/debconf/update-exim4.conf b/debian/debconf/update-exim4.conf new file mode 100644 index 0000000..ebe5303 --- /dev/null +++ b/debian/debconf/update-exim4.conf @@ -0,0 +1,462 @@ +#!/bin/sh +# update-exim4.conf(8) - Generate /var/lib/exim4/config.autogenerated + + +# exit immediately if /etc/exim4/exim4.conf exists +[ -e /etc/exim4/exim4.conf ] && exit 0 + +UPEX4C_confd="/etc/exim4/conf.d" +UPEX4C_sections="main acl router transport retry rewrite auth" +EXIM="/usr/sbin/exim4" + +[ -d /var/lib/exim4/ ] && \ +[ -d ${UPEX4C_confd} ] || \ +{ printf "$0: Error, no ${UPEX4C_confd} or missing\n/var/lib/exim4/, exiting.\n" 1>&2 ; exit 1 ; } + +. /etc/exim4/update-exim4.conf.conf || \ +{ printf "$0: Error, no /etc/exim4/update-exim4.conf.conf, exiting.\n" 1>&2 ; exit 1 ; } + +[ -r /etc/default/exim4 ] && \ + . /etc/default/exim4 +[ "x${CFILEMODE}" = "x" ] && CFILEMODE=644 + +UPEX4C_verbose=no +UPEX4C_comments=no +UPEX4C_autoconfigfile=/var/lib/exim4/config.autogenerated +UPEX4C_outputfile="${UPEX4C_autoconfigfile}" + +usage() { +cat <<EOF +$0 - Generate exim4 configuration files + Options: + -v|--verbose - Enable verbose mode, tell about ignored files + -h|--help - Show this message + --keepcomments - Do not remove comment lines + --removecomments - Remove comment lines + -o|--output file - write output to file instead of ${UPEX4C_outputfile} +EOF +} + +## Parse commandline +TEMP=$(getopt -n update-exim4.conf \ + -l keepcomments,removecomments,output:,help,verbose -- \ + +o:vh "$@") + +if test "$?" != 0; then + echo "Terminating..." >&2 + exit 1 +fi + +eval set -- ${TEMP} +while test "$1" != "--"; do + case $1 in + -h|--help) + usage + exit 0 + ;; + -v|--verbose) + UPEX4C_verbose=yes + ;; + --keepcomments) + UPEX4C_comments=yes + ;; + --removecomments) + UPEX4C_comments=no + ;; + -o|--output) + shift + UPEX4C_outputfile="$1" + ;; + esac + shift +done +shift + +# No non-option arguments allowed. +if [ "$#" -ne 0 ]; then + echo "No non option arguments allowed" >&2 + usage >&2 + exit 1 +fi + +mailname=`cat /etc/mailname | head` + +# add localhost and mailname, get rid of spaces and trailing colons +local_domains="`echo ${mailname}:localhost:${dc_other_hostnames} | \ + sed -e 'sÄ[: ]*$ÄÄ' -e 'sÄ *ÄÄ'`" + +TEMPLATEFILE=/etc/exim4/exim4.conf.template + +UPEX4C_internal_tmp=`tempfile -m600 -p ex4` + +trap "rm -f ${UPEX4C_internal_tmp}" 0 2 15 + +# test if $1 is user modified, print message +unmodifandmessage() { + [ "$#" -eq 1 ] || return 1 + if unmodified "$1" ; then + return 0 + else + [ "${UPEX4C_verbose}" = "yes" ] && \ + echo "ignoring user modified file $1" + return 1 + fi +} + +# 0123456789abcdef0123456789abcdef +generatemasquerade() { + UPEX4C_internal_currfile="${UPEX4C_confd}/rewrite/35_exim4-base_masquerade" + unmodifandmessage "${UPEX4C_internal_currfile}" || return +cat << EOF > "${UPEX4C_internal_tmp}" +# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +# This is an md5sum. +####################################### +# WARNING WARNING WARNING WARNING +# This file is dynamically generated by update-exim4.conf(8) using the data +# in /etc/exim4/update-exim4.conf.conf. + +# If you make _any_ changes to it update-exim4.conf(8) won't update it any +# more! - Especially it will be used _even_ if you change to a different +# conftype. + +# If you just want to ADD your additional rewriting rules put them in a +# different file, for example CONFDIR/conf.d/rewrite/50_local_mywrite +################## +EOF + if [ "$1" = "yes" ] ; then + for domain in `echo "${local_domains}" | sed -e 's/:/ /g'` ; do + # mailfuerpostmaster=fuser + #fuser=sysmail + #echo '^(?i)(root|postmaster|mailer-daemon)@'"$domain" '${local_part}@in.limbo Ffr' + echo '*@'"$domain" '${local_part}@'"${dc_readhost} Ffr" + done >> "${UPEX4C_internal_tmp}" + #echo '*@in.limbo' "$fuser"'@'"${dc_readhost} Ffr" >> "${UPEX4C_internal_tmp}" + fi + UPEX4C_internal_md5=`cat "${UPEX4C_internal_tmp}" | md5sum | cut -d\ -f1` + { echo "# ${UPEX4C_internal_md5}" ; cat "${UPEX4C_internal_tmp}" ; } > \ + "${UPEX4C_internal_currfile}" +} + +# generate code for evaluation of email_addresses +generateemailaddresses() { + UPEX4C_internal_currfile="${UPEX4C_confd}/rewrite/30_exim4-base_email-addresses" + unmodifandmessage "${UPEX4C_internal_currfile}" || return +cat << EOF > "${UPEX4C_internal_tmp}" +# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +# This is an md5sum. +####################################### +# WARNING WARNING WARNING WARNING +# This file is dynamically generated by update-exim4.conf(8) using the data +# in /etc/exim4/update-exim4.conf.conf. + +# If you make _any_ changes to it update-exim4.conf(8) won't update it any +# more! - Especially it will be used _even_ if you change to a different +# conftype. + +# If you just want to ADD your additional rewriting rules put them in a +# different file, for example CONFDIR/conf.d/rewrite/50_local_mywrite +################## + +# This rewriting rule is particularly useful for dialup users who +# don't have their own domain, but could be useful for anyone. +# It looks up the real address of all local users in a file + +# it needs to be generated dynamically for i in local_domains +# +EOF + for domain in `echo ${local_domains} | sed -e 's/:/ /g'` ; do + echo '*@'"$domain" '${lookup{${local_part}}lsearch{CONFDIR/email-addresses}{$value}fail} Ffrs' + done >> "${UPEX4C_internal_tmp}" + UPEX4C_internal_md5=`cat "${UPEX4C_internal_tmp}" | md5sum | cut -d\ -f1` + { echo "# ${UPEX4C_internal_md5}" ; cat "${UPEX4C_internal_tmp}" ; } > \ + "${UPEX4C_internal_currfile}" +} + +# only for satellite +gen_hubuserrouter() { + UPEX4C_internal_currfile="${UPEX4C_confd}/router/28_exim4-base_hubuser" + unmodifandmessage "${UPEX4C_internal_currfile}" || return +cat << EOF > "${UPEX4C_internal_tmp}" +# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +# This is an md5sum. +####################################### +# WARNING WARNING WARNING WARNING +# This file is dynamically generated by update-exim4.conf(8) using the data +# in /etc/exim4/update-exim4.conf.conf. + +# If you make _any_ changes to it update-exim4.conf(8) won't update it any +# more! - Especially it will be used _even_ if you change to a different +# conftype. +################## +EOF + if [ "$1" = "yes" ] ; then + +cat << EOF >> "${UPEX4C_internal_tmp}" +# router-hub_user +# +hub_user: + debug_print = "R: hub_user for $local_part@$domain" + driver = redirect + data = \${local_part}@DCreadhost + check_local_user +##### end of router-hub_user ######## +EOF + fi + UPEX4C_internal_md5=`cat "${UPEX4C_internal_tmp}" | md5sum | cut -d\ -f1` + { echo "# ${UPEX4C_internal_md5}" ; cat "${UPEX4C_internal_tmp}" ; } > \ + "${UPEX4C_internal_currfile}" +} + +# insert primary router definition +gen_primaryrouter() { + UPEX4C_internal_currfile="${UPEX4C_confd}/router/22_exim4-base_primary" + unmodifandmessage "${UPEX4C_internal_currfile}" || return +cat << EOF > "${UPEX4C_internal_tmp}" +# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +# This is an md5sum. +####################################### +# WARNING WARNING WARNING WARNING +# This file is dynamically generated by update-exim4.conf(8) using the data +# in /etc/exim4/update-exim4.conf.conf. + +# If you make _any_ changes to it update-exim4.conf(8) won't update it any +# more! - Especially it will be used _even_ if you change to a different +# conftype. +################## +EOF + + cat /var/lib/exim4/primrout-${dc_eximconfig_configtype} >> \ + "${UPEX4C_internal_tmp}" + printf '# The "no_more" above means that all routers below here are for\n# domains in the local_domains list, i.e. just like Exim 3 directors.\n\n' >> \ + "${UPEX4C_internal_tmp}" + + UPEX4C_internal_md5=`cat "${UPEX4C_internal_tmp}" | md5sum | cut -d\ -f1` + { echo "# ${UPEX4C_internal_md5}" ; cat "${UPEX4C_internal_tmp}" ; } > \ + "${UPEX4C_internal_currfile}" +} + +# generate "never_users=root" option if root is aliased somewhere. +gen_neverusers(){ + UPEX4C_internal_currfile="${UPEX4C_confd}/main/03_exim4-base_neverusers" + unmodifandmessage "${UPEX4C_internal_currfile}" || return + cat << EOF > "${UPEX4C_internal_tmp}" +# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +# This is an md5sum. +####################################### +# WARNING WARNING WARNING WARNING +# This file is dynamically generated by update-exim4.conf(8) depending on +# the data in /etc/aliases. - If it finds an alias for root it'll +# set 'never_users=root' otherwise not. + +# If you make _any_ changes to this file update-exim4.conf(8) won't +# update it any more! +################## +# No deliveries will ever be run under the uids of these users (a colon- +# separated list). An attempt to do so causes a panic error to be logged, and +# the delivery to be deferred. This is a paranoic safety catch. Note that the +# default setting means you cannot deliver mail addressed to root as if it +# were a normal user. This isn't usually a problem, as most sites have an alias +# for root that redirects such mail to a human administrator. +# +EOF + if [ -r /etc/aliases ] &&\ + grep -q '^root:[[:space:]]*[^[:space:]]' /etc/aliases; then + echo 'never_users = root' >> "${UPEX4C_internal_tmp}" + else + echo '#never_users = root' >> "${UPEX4C_internal_tmp}" + fi + UPEX4C_internal_md5=`cat "${UPEX4C_internal_tmp}" | md5sum | cut -d\ -f1` + { echo "# ${UPEX4C_internal_md5}" ; cat "${UPEX4C_internal_tmp}" ; } > \ + "${UPEX4C_internal_currfile}" +} + +# use this as template for new gen_something functions. +UPEX4C_skeleton() { + UPEX4C_internal_currfile="${UPEX4C_confd}/foo/bar" + unmodifandmessage "${UPEX4C_internal_currfile}" || return + cat << EOF > "${UPEX4C_internal_tmp}" +# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +# This is an md5sum. +####################################### +# WARNING WARNING WARNING WARNING +# This file is dynamically generated by update-exim4.conf(8) using the data +# in /etc/exim4/update-exim4.conf.conf. +EOF +# insert more code that appends to ${UPEX4C_internal_tmp} + UPEX4C_internal_md5=`cat "${UPEX4C_internal_tmp}" | md5sum | cut -d\ -f1` + { echo "# ${UPEX4C_internal_md5}" ; cat "${UPEX4C_internal_tmp}" ; } > \ + "${UPEX4C_internal_currfile}" +} + +# run-parts emulation, stolen from Branden's /etc/X11/Xsession +# Addition: ignore file if file.disabled exists. +run_parts () { + # reset LC_COLLATE + unset LANG LC_COLLATE LC_ALL + + if [ -z "$1" ]; then + errormessage "$0: internal run_parts called without an argument" + fi + if [ ! -d "$1" ]; then + errormessage "$0: internal run_parts called, but $1 does not exist or is not a directory." + fi + for F in $(ls $1); do + if expr "$F" : '[[:alnum:]_-]\+$' > /dev/null 2>&1; then + if [ -f "$1/$F" ] && [ ! -f "$1/${F}.disabled" ] ; then + echo "$1/$F" + fi + fi + done; +} +# also from Branden +errormessage () { + # pretty-print messages of arbitrary length (no trailing newline) + echo "$*" | fold -s -w ${COLUMNS:-80} >&2; +} + +# check whether the file given as argument was modified by the user +# by comparing the md5sum in the first line with the real one. +unmodified() { + [ "$#" -eq 1 ] || return 1 + [ -f "$1" ] || return 1 + # first line, without the leading '# '. + checksum_current=`sed -n -e '1s/^# //' -e '1p;1q' "$1"` + + # md5sum over the rest of the file. + # some versions of md5sum produce + # '68b329da9893e34099c7d8ad5cb9c940 -' others don't add the dash. + # '68b329da9893e34099c7d8ad5cb9c940' + checksum_new=`sed -n '2,$p' "$1" | md5sum | cut -d\ -f1` + + if [ "${checksum_current}" = "${checksum_new}" ] ; then + return 0 + else + return 1 + fi +} + +# update the md5sum given in the first line, return an error if the file does +# not have an md5sum header in the first line. +updatechecksumheader() { + [ "$#" -eq 1 ] || return 1 + [ -f "$1" ] || return 1 + # check for correct format "# 76a51391da4a0687697224a124b71a17" + sed -n -e '1p;1q' "$1" | grep -q -E '^# [[:xdigit:]]{32}$' || \ + { echo "incorrect format" ; return 1 ;} + + NEWFILE=`tempfile -m600 -p ex4` + sed -n '2,$p' "$1" | md5sum | cut -d\ -f1 | sed '1s/^/# /' > $NEWFILE + sed -n '2,$p' "$1" >> $NEWFILE + mv -f $NEWFILE "$1" +} + +gentmpconf() { + touch ${UPEX4C_outputfile}.tmp + #chown --reference=${TEMPLATEFILE} \ + # ${UPEX4C_outputfile}.tmp ${UPEX4C_outputfile} + #chmod --reference=${TEMPLATEFILE} \ + # ${UPEX4C_outputfile}.tmp ${UPEX4C_outputfile} + chown root:mail ${UPEX4C_outputfile}.tmp + [ -e ${UPEX4C_outputfile} ] && chown root:mail ${UPEX4C_outputfile} + chmod 640 ${UPEX4C_outputfile}.tmp + [ -e ${UPEX4C_outputfile} ] && chmod 640 ${UPEX4C_outputfile} +} + +removecomments(){ + if [ "x${UPEX4C_comments}" = "xno" ] ; then + egrep -v '^[[:space:]]*#' ; + else + cat + fi +} + +case "$dc_eximconfig_configtype" in + satellite) + # include hub-user-router + gen_hubuserrouter yes + # hide mailname with rewriting rules + generatemasquerade yes + ;; + local) + gen_hubuserrouter no + generatemasquerade no + ;; + smarthost|internet) + gen_hubuserrouter no + generatemasquerade no + ;; + none|*) + gen_hubuserrouter no + generatemasquerade no + gentmpconf + for i in ${UPEX4C_sections} ; do + cat `run_parts ${UPEX4C_confd}/$i` + done | \ + sed -e "s/DEBCONF[^D][^E][^B].*DEBCONF//g" \ + > ${UPEX4C_outputfile}.tmp + mv -f ${UPEX4C_outputfile}.tmp ${UPEX4C_outputfile} + exit 0 + ;; +esac + +case "${dc_listenonpublic}" in + false) + listenonpublic='local_interfaces = 127.0.0.1' + ;; + true|*) + listenonpublic='# if local_interfaces is unset, we listen on all interfaces' + ;; +esac + +gen_neverusers +generateemailaddresses +gen_primaryrouter +gentmpconf + +cat << EOF > ${UPEX4C_outputfile}.tmp +######### +# WARNING WARNING WARNING +# WARNING WARNING WARNING +# WARNING WARNING WARNING +# WARNING WARNING WARNING +# WARNING WARNING WARNING +# this file is generated dynamically from the files in +# CONFDIR/conf.d/ and /etc/exim4/update-exim4.conf.conf +# Any changes you make here will be lost. +# See /usr/share/doc/exim4-base/README.Debian and update-exim4.conf(8) +# for instructions of customization. +# WARNING WARNING WARNING +# WARNING WARNING WARNING +# WARNING WARNING WARNING +# WARNING WARNING WARNING +# WARNING WARNING WARNING +######### +EOF + +for i in ${UPEX4C_sections} ; do + echo "# begin processing $i #####" + cat `run_parts ${UPEX4C_confd}/$i` + echo "# end of $i #####" +done | \ +removecomments | \ +sed -e "sÄDEBCONFlocal_domainsDEBCONFÄ@:${local_domains}Äg" \ + -e "sÄDEBCONFrelay_domainsDEBCONFÄ${dc_relay_domains}Äg" \ + -e "sÄDEBCONFrelay_netsDEBCONFÄ${dc_relay_nets}Äg" \ + -e "sÄDEBCONFvisiblenameDEBCONFÄ${mailname}Äg" \ + -e "sÄDEBCONFreadhostDEBCONFÄ${dc_readhost}Äg" \ + -e "sÄDEBCONFsmarthostDEBCONFÄ${dc_smarthost}Äg" \ + -e "sÄDEBCONFconfigtypeDEBCONFÄ${dc_eximconfig_configtype}Äg" \ + -e "sÄDEBCONFlistenonpublicDEBCONFÄ${listenonpublic}Äg" \ + >> ${UPEX4C_outputfile}.tmp + +# test validity if called without -o +if [ "x${UPEX4C_outputfile}" = "x${UPEX4C_autoconfigfile}" ] ; then + if ! ${EXIM} -C "${UPEX4C_outputfile}.tmp" -bV > /dev/null ; then + errormessage "Invalid new configfile ${UPEX4C_outputfile}.tmp" + errormessage "not installing ${UPEX4C_outputfile}.tmp to ${UPEX4C_outputfile}" + exit 1 + fi +fi + +mv -f ${UPEX4C_outputfile}.tmp ${UPEX4C_outputfile} +chmod ${CFILEMODE} ${UPEX4C_outputfile} diff --git a/debian/email-addresses b/debian/email-addresses new file mode 100644 index 0000000..8e4f2cb --- /dev/null +++ b/debian/email-addresses @@ -0,0 +1,9 @@ +# This is /etc/email-addresses. It is part of the exim package +# +# This file contains email addresses to use for outgoing mail. Any local +# part not in here will be qualified by the system domain as normal. +# +# It should contain lines of the form: +# +#user: someone@isp.com +#otheruser: someoneelse@anotherisp.com diff --git a/debian/exim-gencert b/debian/exim-gencert new file mode 100644 index 0000000..caf75f1 --- /dev/null +++ b/debian/exim-gencert @@ -0,0 +1,74 @@ +#!/bin/sh -e + +DIR=/etc/exim4 +CERT=$DIR/exim.crt +KEY=$DIR/exim.key + +# This exim-tls was built with GnuTLS which does not support dhparams +# from a file. See README.Debian in /usr/share/doc/exim-tls +#DH=$DIR/exim.dhparam + +if ! which openssl > /dev/null ;then + echo "$0: openssl is not installed, exiting" 1>&2 + exit 1 +fi + +# valid for three years +DAYS=1095 + +if [ "$1" != "--force" -a -f $CERT -a -f $KEY ]; then + echo "[*] $CERT and $KEY exists!" + echo " Use \"$0 --force\" to force generation!" + exit 0 +fi + +if [ "$1" = "--force" ]; then + shift +fi + +#SSLEAY=/tmp/exim.ssleay.$$.cnf +SSLEAY=`tempfile -m600 -pexi` + +cat > $SSLEAY <<EOM +RANDFILE = ~/.rnd +[ req ] +default_bits = 1024 +default_keyfile = exim.key +distinguished_name = req_distinguished_name +[ req_distinguished_name ] +countryName = Country Code (2 letters) +countryName_default = US +countryName_min = 2 +countryName_max = 2 +stateOrProvinceName = State or Province Name (full name) +stateOrProvinceName_default = Some-State +localityName = Locality Name (eg, city) +organizationName = Organization Name (eg, company; recommended) +organizationName_max = 64 +organizationalUnitName = Organizational Unit Name (eg, section) +organizationalUnitName_max = 64 +commonName = Server name (eg. ssl.domain.tld; required!!!) +commonName_max = 64 +emailAddress = Email Address +emailAddress_max = 40 +EOM + +echo "[*] Creating a self signed SSL certificate for Exim!" +echo " This may be sufficient to establish encrypted connections but for" +echo " secure identification you need to buy a real certificate!" +echo " " +echo " Please enter the hostname of your MTA at the Common Name (CN) prompt!" +echo " " + +openssl req -config $SSLEAY -x509 -newkey rsa:1024 -keyout $KEY -out $CERT -days $DAYS -nodes +#see README.Debian# openssl dhparam -check -text -5 512 -out $DH +rm -f $SSLEAY + +chown root.mail $KEY $CERT $DH +chmod 640 $KEY $CERT $DH + +echo "[*] Done generating self signed certificates for exim!" +echo " Refer to the documentation and example configuration files" +echo " over at /usr/share/doc/exim4-base/ for an idea on how to enable TLS" +echo " support in your mail transfer agent." + diff --git a/debian/exim4-base.cron.daily b/debian/exim4-base.cron.daily new file mode 100644 index 0000000..3a612e7 --- /dev/null +++ b/debian/exim4-base.cron.daily @@ -0,0 +1,26 @@ +#!/bin/sh + +# Only do anything if exim4 is actually installed +if [ ! -x /usr/lib/exim4/exim4 ]; then + exit 0 +fi + +# Uncomment the following lines to get daily e-mail reports +#if [ -x /usr/sbin/eximstats ]; then +# eximstats </var/log/exim4/mainlog \ +# | mail postmaster -s"$(hostname) Daily email activity report" +#fi + +if [ -x /usr/sbin/exim_tidydb ]; then + cd /var/spool/exim4/db || exit 1 + for file in *; do + if echo $file | grep \\.lockfile >/dev/null 2>&1; then + : # skip lock files + else + exim_tidydb /var/spool/exim4 $file >/dev/null + fi + done + # Make sure that db files are owned by mail:mail + find /var/spool/exim4/db/ -type f -print0 |\ + xargs -0 -r chown mail:mail +fi diff --git a/debian/exim4-base.dirs b/debian/exim4-base.dirs new file mode 100644 index 0000000..a675d3f --- /dev/null +++ b/debian/exim4-base.dirs @@ -0,0 +1,6 @@ +/usr/sbin +/usr/bin +/usr/share/man/man8 +/etc/cron.daily +/etc/cron.d +/etc/logrotate.d diff --git a/debian/exim4-base.doc-base.filter b/debian/exim4-base.doc-base.filter new file mode 100644 index 0000000..993e82c --- /dev/null +++ b/debian/exim4-base.doc-base.filter @@ -0,0 +1,8 @@ +Document: exim4-filter-txt +Title: Exim's interface to mail filtering +Author: Various +Abstract: Description of the user interface to Exim's in-built mail filtering facility. This is the text version. +Section: Apps/Net + +Format: text +Files: /usr/share/doc/exim4-base/filter.txt.gz diff --git a/debian/exim4-base.doc-base.spec b/debian/exim4-base.doc-base.spec new file mode 100644 index 0000000..da0b5f8 --- /dev/null +++ b/debian/exim4-base.doc-base.spec @@ -0,0 +1,8 @@ +Document: exim4-spec-txt +Title: Exim specification +Author: Various +Abstract: Exim reference manual. This is the text version. +Section: Apps/Net + +Format: text +Files: /usr/share/doc/exim4-base/spec.txt.gz diff --git a/debian/exim4-base.docs b/debian/exim4-base.docs new file mode 100644 index 0000000..31f1fe2 --- /dev/null +++ b/debian/exim4-base.docs @@ -0,0 +1,14 @@ +NOTICE +ACKNOWLEDGMENTS +doc/README +README.UPDATING +doc/dbm.discuss.txt +doc/Exim3.upgrade +doc/Exim4.upgrade +doc/filter.txt +doc/NewStuff +doc/OptionLists.txt +doc/pcre.txt +doc/spec.txt +debian/README.TLS +debian/changelog.Debian.old diff --git a/debian/exim4-base.examples b/debian/exim4-base.examples new file mode 100644 index 0000000..52da986 --- /dev/null +++ b/debian/exim4-base.examples @@ -0,0 +1,2 @@ +util/cramtest.pl util/logargs.sh util/unknownuser.sh +debian/exim-gencert diff --git a/debian/exim4-base.init b/debian/exim4-base.init new file mode 100644 index 0000000..b7aeb4a --- /dev/null +++ b/debian/exim4-base.init @@ -0,0 +1,145 @@ +#! /bin/sh +# /etc/init.d/exim4 +# +# Written by Miquel van Smoorenburg <miquels@drinkel.ow.org>. +# Modified for Debian GNU/Linux by Ian Murdock <imurdock@gnu.ai.mit.edu>. +# Modified for exim by Tim Cutts <timc@chiark.greenend.org.uk> +# Modified for exim4 by Andreas Metzler <ametzler@downhill.at.eu.org> + +set -e + +upex4conf() { + UPEX4CONF="update-exim4.conf" + OLDIFS="$IFS" + IFS=: + for p in $PATH; do + if [ -x "$p/$UPEX4CONF" ]; then + IFS="$OLDIFS" + $p/$UPEX4CONF + return 0 + fi + done + IFS="$OLDIFS" +} + +# Exit if exim runs from /etc/inetd.conf +if [ -f /etc/inetd.conf ] && grep -E -q "^ *([0-9.]+:)?smtp" /etc/inetd.conf; then + upex4conf + exit 0 +fi + + +DAEMON=/usr/sbin/exim4 +NAME=exim4 + +##test -x $DAEMON || exit 0 +test -x /usr/lib/exim4/exim4 || exit 0 + +#read default file +QUEUERUNNER='combined' +QUEUEINTERVAL='30m' +[ -f /etc/default/exim4 ] && . /etc/default/exim4 + +start_exim() +{ + case ${QUEUERUNNER} in + combined) + start-stop-daemon --start --pidfile /var/run/exim4/exim.pid \ + --exec $DAEMON -- -bd -q${QFLAGS}${QUEUEINTERVAL} \ + ${COMMONOPTIONS} ${QUEUERUNNEROPTIONS} ${SMTPLISTENEROPTIONS} + ;; + separate) + start-stop-daemon --start --pidfile /var/run/exim4/exim.pid \ + --exec $DAEMON -- -bd ${SMTPLISTENEROPTIONS} ${COMMONOPTIONS} + start-stop-daemon --start --pidfile /var/run/exim4/eximqr.pid \ + --exec $DAEMON -- -oP /var/run/exim4/eximqr.pid \ + -q${QFLAGS}${QUEUEINTERVAL} ${QUEUERUNNEROPTIONS} ${COMMONOPTIONS} + ;; + no) + start-stop-daemon --start --pidfile /var/run/exim4/exim.pid \ + --exec $DAEMON -- -bd ${SMTPLISTENEROPTIONS} + ;; + esac +} + +stop_exim() +{ +# we try to kill eximqr and exim SMTP listener, no matter what ${QUEUERUNNER} is +# set to, we could have switched since starting. + [ -f /var/run/exim4/eximqr.pid ] && \ + start-stop-daemon --stop --pidfile /var/run/exim4/eximqr.pid \ + --oknodo --retry 30 --exec $DAEMON + [ -f /var/run/exim4/exim.pid ] && \ + start-stop-daemon --stop --pidfile /var/run/exim4/exim.pid \ + --oknodo --retry 30 --exec $DAEMON + rm -f /var/run/exim4/eximqr.pid /var/run/exim4/exim.pid +} + +reload_exim() +{ + case ${QUEUERUNNER} in + combined|no) + start-stop-daemon --stop --pidfile /var/run/exim4/exim.pid \ + --signal 1 --exec $DAEMON + ;; + separate) + start-stop-daemon --stop --pidfile /var/run/exim4/exim.pid \ + --signal 1 --exec $DAEMON + start-stop-daemon --stop --pidfile /var/run/exim4/eximqr.pid \ + --signal 1 --exec $DAEMON + ;; + esac +} + + +# check for valid configuration file +isconfigvalid() +{ +if ! $DAEMON -bV > /dev/null ; then + echo + echo "Warning! Invalid configuration file for $NAME. Exiting." 1>&2 + exit 1 +fi +} + +case "$1" in + start) + echo -n "Starting MTA: " + # regenerate exim4.conf + upex4conf + isconfigvalid + start_exim + echo "$NAME." + ;; + stop) + echo -n "Stopping MTA: " + stop_exim + echo "$NAME." + ;; + restart) + echo -n "Restarting MTA: " + # regenerate exim4.conf + upex4conf + isconfigvalid + stop_exim + sleep 2 + start_exim + echo "$NAME." + ;; + reload|force-reload) + echo "Reloading $NAME configuration files" + # regenerate exim4.conf + upex4conf + isconfigvalid + reload_exim + ;; + status) + exiwhat + ;; + *) + echo "Usage: $0 {start|stop|restart|reload|status}" + exit 1 + ;; +esac + +exit 0 diff --git a/debian/exim4-base.links b/debian/exim4-base.links new file mode 100644 index 0000000..eb0ad89 --- /dev/null +++ b/debian/exim4-base.links @@ -0,0 +1,3 @@ +usr/share/man/man8/exim_db.8.gz usr/share/man/man8/exim_dumpdb.8.gz +usr/share/man/man8/exim_db.8.gz usr/share/man/man8/exim_fixdb.8.gz +usr/share/man/man8/exim_db.8.gz usr/share/man/man8/exim_tidydb.8.gz diff --git a/debian/exim4-base.logrotate b/debian/exim4-base.logrotate new file mode 100644 index 0000000..571b5b9 --- /dev/null +++ b/debian/exim4-base.logrotate @@ -0,0 +1,9 @@ +/var/log/exim4/mainlog /var/log/exim4/rejectlog /var/log/exim4/paniclog { + daily + missingok + rotate 10 + compress + delaycompress + notifempty + create 640 mail adm +} diff --git a/debian/exim4-base.manpages b/debian/exim4-base.manpages new file mode 100644 index 0000000..324403a --- /dev/null +++ b/debian/exim4-base.manpages @@ -0,0 +1,12 @@ +doc/exim.8 +debian/manpages/exicyclog.8 +debian/manpages/exigrep.8 +debian/manpages/exim_checkaccess.8 +debian/manpages/exim_db.8 +debian/manpages/exim_dbmbuild.8 +debian/manpages/exim_lock.8 +debian/manpages/exinext.8 +debian/manpages/exiqgrep.8 +debian/manpages/exiqsumm.8 +debian/manpages/exiwhat.8 +debian/manpages/exim_convert4r4.8 diff --git a/debian/exim4-base.postinst b/debian/exim4-base.postinst new file mode 100644 index 0000000..024e830 --- /dev/null +++ b/debian/exim4-base.postinst @@ -0,0 +1,53 @@ +#!/bin/sh + +set -e +. /usr/share/debconf/confmodule + + +db_version 2.0 + +case "$1" in + configure) + # Create directories for log etc + install -d -omail -gadm -m2750 /var/log/exim4 + install -d -omail -gmail -m750 /var/run/exim4 + install -d -omail -gmail -m750 /var/spool/exim4 + install -d -omail -gmail -m750 /var/spool/exim4/db \ + /var/spool/exim4/input /var/spool/exim4/msglog + + # Make sure that db files are owned by mail:mail + find /var/spool/exim4/db/ -type f -print0 |\ + xargs -0 -r chown mail:mail + # Check that db files are readable by this Exim's db library + dbfiles="" + for f in /var/spool/exim4/db/*; do + if [ -f "$f" ]; then + if echo $f | grep \.lockfile\$ >/dev/null 2>&1; then + : # ignore lock files + else + dbfiles="$dbfiles `basename $f`" + fi + fi + done + for dbfile in $dbfiles; do + if exim_dumpdb /var/spool/exim4 $dbfile >/dev/null 2>&1; then + : # File OK + else + echo "Resetting invalid $dbfile hints db" + rm -f /var/spool/exim4/db/$dbfile /var/spool/exim4/db/$dbfile.* + fi + done + +#inetd support has to wait for sarge +1 +# if [ -x /usr/sbin/update-inetd ]; then +# update-inetd --group MAIL --comment-chars '#exim4disabled' \ +# --add "smtp stream tcp nowait mail /usr/sbin/exim4 exim -bs" +# fi + if [ -x "/etc/init.d/exim4" ]; then + update-rc.d exim4 defaults >/dev/null + fi + + ;; +esac + +#DEBHELPER# diff --git a/debian/exim4-base.postrm b/debian/exim4-base.postrm new file mode 100644 index 0000000..e4e6809 --- /dev/null +++ b/debian/exim4-base.postrm @@ -0,0 +1,32 @@ +#!/bin/sh + +set -e + +. /usr/share/debconf/confmodule +case "$1" in + purge) + update-rc.d exim4 remove > /dev/null + rm -f /etc/default/exim4 + +#inetd support has to wait for sarge +1 +# if [ -x /usr/sbin/update-inetd ]; then +# update-inetd --remove exim4 +# fi + + if [ -e /var/spool/exim4/input ] && ! rmdir /var/spool/exim4/input 2>/dev/null ; then + db_version 2.0 + db_input medium exim4/purge_spool + db_go || true + db_get exim4/purge_spool + purge_spool="$RET" + [ "x${purge_spool}" = "xtrue" ] && rm -rf /var/spool/exim4/input + fi + + # remove logs and pid-dir. + rm -rf /var/run/exim4 /var/log/exim4 /var/spool/exim4/msglog \ + /var/spool/exim4/db /var/spool/exim4/exim-process.info + rmdir /var/spool/exim4 /var/lib/exim4 2> /dev/null || true + ;; +esac + +#DEBHELPER# diff --git a/debian/exim4-base.templates b/debian/exim4-base.templates new file mode 100644 index 0000000..712cbde --- /dev/null +++ b/debian/exim4-base.templates @@ -0,0 +1,10 @@ +Template: exim4/purge_spool +Type: boolean +Default: false +Description: Remove undelivered mails in spool directory? + There are mails in the exim spool directory /var/spool/exim4/input + which have not yet been delivered. You can keep them in case you + decide to re-install Exim at a later date, or you can choose to + remove them. + . + Should they be removed? diff --git a/debian/exim4-config-simple/debian/changelog b/debian/exim4-config-simple/debian/changelog new file mode 100644 index 0000000..bca4d25 --- /dev/null +++ b/debian/exim4-config-simple/debian/changelog @@ -0,0 +1,5 @@ +exim4-config-simple (4.12-0.0.17mh17) unstable; urgency=low + + * first version + + -- Marc Haber <mh+debian-packages@zugschlus.de> Sat, 15 Feb 2003 14:20:49 +0000 diff --git a/debian/exim4-config-simple/debian/compat b/debian/exim4-config-simple/debian/compat new file mode 100644 index 0000000..b8626c4 --- /dev/null +++ b/debian/exim4-config-simple/debian/compat @@ -0,0 +1 @@ +4 diff --git a/debian/exim4-config-simple/debian/control b/debian/exim4-config-simple/debian/control new file mode 100644 index 0000000..92d1d77 --- /dev/null +++ b/debian/exim4-config-simple/debian/control @@ -0,0 +1,24 @@ +Source: exim4-config-simple +Section: mail +Priority: important +Maintainer: Andreas Metzler <ametzler@downhill.at.eu.org> +Uploaders: Marc Haber <mh+debian-packages@zugschlus.de> +Standards-Version: 3.5.6 +Build-Depends-Indep: debhelper (>= 4.0.1) + +Package: exim4-config-simple +Architecture: all +Priority: important +Provides: exim4-config +Conflicts: exim4-config +Depends: ${shlibs:Depends}, ${misc:Depends}, exim4-base +Description: Simplest Debian configuration for exim4 + This package provides a simple configuration framework for the exim4 + daemon packages. It is meant as a proof-of-concept alternative imple- + mentation to exim4-config-debian and simply contains a exim4 config + file flagged as a dpkg-conffile. NO automatic configuration is in + place here. + . + Do not use this package in a production environment. It is only an + example. You can use it as base for your own packages providing + exim4-config. diff --git a/debian/exim4-config-simple/debian/copyright b/debian/exim4-config-simple/debian/copyright new file mode 100644 index 0000000..1484c04 --- /dev/null +++ b/debian/exim4-config-simple/debian/copyright @@ -0,0 +1,12 @@ +This is a simple configuration package for Debian GNU/Linux's prepackaged +version of exim4, a powerful yet easy to configure mail transport agent. + +This package was originally made by Marc Haber +<mh+debian-packages@zugschlus.de> using work provided by Andreas +Metzler <ametzler@downhill.at.eu.org>. + +The files in this package are free software; you can redistribute them +and/or modify them under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2, or (at +your option) any later version. Full text of the license can be found +at /usr/share/common-licenses/GPL diff --git a/debian/exim4-config-simple/debian/debconf/update-exim4.conf b/debian/exim4-config-simple/debian/debconf/update-exim4.conf new file mode 100755 index 0000000..5fffe05 --- /dev/null +++ b/debian/exim4-config-simple/debian/debconf/update-exim4.conf @@ -0,0 +1,158 @@ +#!/bin/sh +# update-exim4.conf(8) - Generate /var/lib/exim4/config.autogenerated + + +# exit immediately if /etc/exim4/exim4.conf exists +[ -e /etc/exim4/exim4.conf ] && exit 0 + +EXIM="/usr/sbin/exim4" + +[ -d /var/lib/exim4/ ] && \ +[ -f /etc/exim4/exim4.conf.source ] || \ +{ printf "$0: Error, no /etc/exim4/exim4.conf.source or missing\n/var/lib/exim4/, exiting.\n" 1>&2 ; exit 1 ; } + +. /etc/exim4/exim4.conf.defaults || \ +{ printf "$0: Error, no /etc/exim4/exim4.conf.defaults, exiting.\n" 1>&2 ; exit 1 ; } + + +UPEX4C_verbose=no +UPEX4C_comments=no +UPEX4C_autoconfigfile=/var/lib/exim4/config.autogenerated +UPEX4C_outputfile="${UPEX4C_autoconfigfile}" + +usage() { +cat <<EOF +$0 - Generate exim4 configuration files + Options: + -v|--verbose - Enable verbose mode, tell about ignored files + -h|--help - Show this message + --keepcomments - Do not remove comment lines + --removecomments - Remove comment lines + -o|--output file - write output to file instead of ${UPEX4C_outputfile} +EOF +} + +# also from Branden +errormessage () { + # pretty-print messages of arbitrary length (no trailing newline) + echo "$*" | fold -s -w ${COLUMNS:-80} >&2; +} + +## Parse commandline +TEMP=$(getopt -n update-exim4.conf \ + -l keepcomments,removecomments,output:,help,verbose -- \ + +o:vh "$@") + +if test "$?" != 0; then + echo "Terminating..." >&2 + exit 1 +fi + +eval set -- ${TEMP} +while test "$1" != "--"; do + case $1 in + -h|--help) + usage + exit 0 + ;; + -v|--verbose) + UPEX4C_verbose=yes + ;; + --keepcomments) + UPEX4C_comments=yes + ;; + --removecomments) + UPEX4C_comments=no + ;; + -o|--output) + shift + UPEX4C_outputfile="$1" + ;; + esac + shift +done +shift + +# No non-option arguments allowed. +if [ "$#" -ne 0 ]; then + echo "No non option arguments allowed" >&2 + usage >&2 + exit 1 +fi + +mailname=`cat /etc/mailname | head` + +# add localhost and mailname, get rid of spaces and trailing colons +local_domains="`echo ${mailname}:localhost:${dc_other_hostnames} | \ + sed -e 'sÄ[: ]*$ÄÄ' -e 'sÄ *ÄÄ'`" + +UPEX4C_internal_tmp=`tempfile -m600 -p ex4` + +trap "rm -f ${UPEX4C_internal_tmp}" 0 2 15 + +gentmpconf() { + touch ${UPEX4C_outputfile}.tmp + chown root:mail ${UPEX4C_outputfile}.tmp + [ -e ${UPEX4C_outputfile} ] && chown root:mail ${UPEX4C_outputfile} + chmod 640 ${UPEX4C_outputfile}.tmp + [ -e ${UPEX4C_outputfile} ] && chmod 640 ${UPEX4C_outputfile} +} + +removecomments(){ + if [ "x${UPEX4C_comments}" = "xno" ] ; then + egrep -v '^[[:space:]]*#' ; + else + cat + fi +} + +. /etc/exim4/exim4.conf.defaults + +case "${listenonpublic}" in + false) + listenonpublic='local_interfaces = 127.0.0.1' + ;; + true|*) + listenonpublic='# if local_interfaces is unset, we listen on all interfaces' + ;; +esac + +cat << EOF > ${UPEX4C_outputfile}.tmp +######### +# WARNING WARNING WARNING +# WARNING WARNING WARNING +# WARNING WARNING WARNING +# WARNING WARNING WARNING +# WARNING WARNING WARNING +# this file is generated dynamically +# Any changes you make here will be lost. +# WARNING WARNING WARNING +# WARNING WARNING WARNING +# WARNING WARNING WARNING +# WARNING WARNING WARNING +# WARNING WARNING WARNING +######### +EOF + +cat /etc/exim4/exim4.conf.source | \ +removecomments | \ +sed -e "sÄDEBCONFlocal_domainsDEBCONFÄ@:${local_domains}Äg" \ + -e "sÄDEBCONFrelay_domainsDEBCONFÄ${relay_domains}Äg" \ + -e "sÄDEBCONFrelay_netsDEBCONFÄ${relay_nets}Äg" \ + -e "sÄDEBCONFvisiblenameDEBCONFÄ${mailname}Äg" \ + -e "sÄDEBCONFreadhostDEBCONFÄ${readhost}Äg" \ + -e "sÄDEBCONFsmarthostDEBCONFÄ${smarthost}Äg" \ + -e "sÄDEBCONFconfigtypeDEBCONFÄ${eximconfig_configtype}Äg" \ + -e "sÄDEBCONFlistenonpublicDEBCONFÄ${listenonpublic}Äg" \ + >> ${UPEX4C_outputfile}.tmp + +# test validity if called without -o +if [ "x${UPEX4C_outputfile}" = "x${UPEX4C_autoconfigfile}" ] ; then + if ! ${EXIM} -C "${UPEX4C_outputfile}.tmp" -bV > /dev/null ; then + errormessage "Invalid new configfile ${UPEX4C_outputfile}.tmp" + errormessage "not installing ${UPEX4C_outputfile}.tmp to ${UPEX4C_outputfile}" + exit 1 + fi +fi + +mv -f ${UPEX4C_outputfile}.tmp ${UPEX4C_outputfile} diff --git a/debian/exim4-config-simple/debian/exim4-config-simple.dirs b/debian/exim4-config-simple/debian/exim4-config-simple.dirs new file mode 100644 index 0000000..76d4455 --- /dev/null +++ b/debian/exim4-config-simple/debian/exim4-config-simple.dirs @@ -0,0 +1,5 @@ +/usr/sbin +/etc/exim4 +/usr/share/doc/exim4-config-debian/examples +/usr/share/man/man8 +/var/lib/exim4 diff --git a/debian/exim4-config-simple/debian/exim4-config-simple.manpages b/debian/exim4-config-simple/debian/exim4-config-simple.manpages new file mode 100644 index 0000000..234e068 --- /dev/null +++ b/debian/exim4-config-simple/debian/exim4-config-simple.manpages @@ -0,0 +1 @@ +debian/manpages/update-exim4.conf.8 diff --git a/debian/exim4-config-simple/debian/exim4-config-simple.postinst b/debian/exim4-config-simple/debian/exim4-config-simple.postinst new file mode 100644 index 0000000..b4a7b85 --- /dev/null +++ b/debian/exim4-config-simple/debian/exim4-config-simple.postinst @@ -0,0 +1,13 @@ +#!/bin/sh + +set -e + + +case "$1" in + configure) + update-exim4.conf + + ;; +esac + +#DEBHELPER# diff --git a/debian/exim4-config-simple/debian/exim4-config-simple.postrm b/debian/exim4-config-simple/debian/exim4-config-simple.postrm new file mode 100644 index 0000000..3bbd538 --- /dev/null +++ b/debian/exim4-config-simple/debian/exim4-config-simple.postrm @@ -0,0 +1,14 @@ +#!/bin/sh + +set -e + +case "$1" in + purge) + rm -f /var/lib/exim4/config.autogenerated + + # remove empty directories in /etc/exim4 + rmdir /etc/exim4 2> /dev/null || true + ;; +esac + +#DEBHELPER# diff --git a/debian/exim4-config-simple/debian/exim4.conf.defaults b/debian/exim4-config-simple/debian/exim4.conf.defaults new file mode 100644 index 0000000..e7c98d1 --- /dev/null +++ b/debian/exim4-config-simple/debian/exim4.conf.defaults @@ -0,0 +1,7 @@ +local_domains= +relay_domains= +relay_nets= +visiblename=paola-chroot +readhost=paola-chroot +smarthost=smtp +listenonpublic=no diff --git a/debian/exim4-config-simple/debian/exim4.conf.source b/debian/exim4-config-simple/debian/exim4.conf.source new file mode 100644 index 0000000..5c743f4 --- /dev/null +++ b/debian/exim4-config-simple/debian/exim4.conf.source @@ -0,0 +1,502 @@ +###################################################################### +# Runtime configuration file for Exim # +###################################################################### + +###################################################################### +# MAIN CONFIGURATION SETTINGS # +###################################################################### + +# Just for reference and scripts, on debian, the main binary is +# installed as exim4 +exim_path = /usr/sbin/exim4 + +# Let Exim autodetect this +# primary_hostname = + +# The next three settings create two lists of domains and one list of hosts. +# These lists are referred to later in this configuration using the syntax +# +local_domains, +relay_to_domains, and +relay_from_hosts, respectively. They +# are all colon-separated lists: + +# '@' refers to 'the name of the local host' + +domainlist local_domains = DEBCONFlocal_domainsDEBCONF + +domainlist relay_to_domains = DEBCONFrelay_domainsDEBCONF + +hostlist relay_from_hosts = 127.0.0.1 : ::::1 : DEBCONFrelay_netsDEBCONF + + +# Specify the domain you want to be added to all unqualified addresses +# here. An unqualified address is one that does not contain an "@" character +# followed by a domain. For example, "caesar@rome.example" is a fully qualified +# address, but the string "caesar" (i.e. just a login name) is an unqualified +# email address. Unqualified addresses are accepted only from local callers by +# default. See the recipient_unqualified_hosts option if you want to permit +# unqualified addresses from remote sources. If this option is not set, the +# primary_hostname value is used for qualification. +qualify_domain = DEBCONFvisiblenameDEBCONF + +# only used for satellite-system +DCreadhost = DEBCONFreadhostDEBCONF + +#for satellite and smarthost-systems +DCsmarthost = DEBCONFsmarthostDEBCONF + +# listen on all all interfaces? +DEBCONFlistenonpublicDEBCONF +### EXPANSION-ends ###################### + +# The default delivery method. See /etc/exim4/conf.d/transports/ for other +# possibilities +LOCAL_DELIVERY=mail_spool + +# The gecos field in /etc/passwd holds not only the name. see passwd(5). +gecos_pattern = ^([^,:]*) +gecos_name = $1 + + + + +# This option defines the access control list that is run when an +# SMTP RCPT command is received. +# +acl_smtp_rcpt = acl_check_rcpt + +# If you want unqualified recipient addresses to be qualified with a different +# domain to unqualified sender addresses, specify the recipient domain here. +# If this option is not set, the qualify_domain value is used. +# +# qualify_recipient = + +# The following line must be uncommented if you want Exim to recognize +# addresses of the form "user@[10.11.12.13]" that is, with a "domain literal" +# (an IP address) instead of a named domain. The RFCs still require this form, +# but it makes little sense to permit mail to be sent to specific hosts by +# their IP address in the modern Internet. This ancient format has been used +# by those seeking to abuse hosts by using them for unwanted relaying. If you +# really do want to support domain literals, uncomment the following line, and +# see also the "domain_literal" router below. +# +# allow_domain_literals + +# The setting below causes Exim to do a reverse DNS lookup on all incoming +# IP calls, in order to get the true host name. If you feel this is too +# expensive, you can specify the networks for which a lookup is done, or +# remove the setting entirely. +# +host_lookup = * + +# The settings below, which are actually the same as the defaults in the +# code, cause Exim to make RFC 1413 (ident) callbacks for all incoming SMTP +# calls. You can limit the hosts to which these calls are made, and/or change +# the timeout that is used. If you set the timeout to zero, all RFC 1413 calls +# are disabled. RFC 1413 calls are cheap and can provide useful information +# for tracing problem messages, but some hosts and firewalls have problems +# with them. This can result in a timeout instead of an immediate refused +# connection, leading to delays on starting up an SMTP session. +# +rfc1413_hosts = * +rfc1413_query_timeout = 30s + +# By default, Exim expects all envelope addresses to be fully qualified, that +# is, they must contain both a local part and a domain. If you want to accept +# unqualified addresses (just a local part) from certain hosts, you can specify +# these hosts by setting one or both of +# +# sender_unqualified_hosts = +# recipient_unqualified_hosts = +# +# to control sender and recipient addresses, respectively. When this is done, +# unqualified addresses are qualified using the settings of qualify_domain +# and/or qualify_recipient (see above). + +# If you want Exim to support the "percent hack" for certain domains, +# uncomment the following line and provide a list of domains. The "percent +# hack" is the feature by which mail addressed to x%y@z (where z is one of +# the domains listed) is locally rerouted to x@y and sent on. If z is not one +# of the "percent hack" domains, x%y is treated as an ordinary local part. This +# hack is rarely needed nowadays; you should not enable it unless you are sure +# that you really need it. +# +# percent_hack_domains = + +# When Exim can neither deliver a message nor return it to sender, it "freezes" +# the delivery error message (aka "bounce message"). There are also other +# circumstances in which messages get frozen. They will stay on the queue for +# ever unless one of the following options is set. + +# This option unfreezes frozen bounce messages after two days, tries +# once more to deliver them, and ignores any delivery failures. +# +ignore_bounce_errors_after = 2d + +# This option cancels (removes) frozen messages that are older than a week. +# +timeout_frozen_after = 7d + +freeze_tell = postmaster + +# uucp should be able to set envelope-from to arbitrary values +trusted_users = uucp + +received_header_text = "Received: \ + ${if def:sender_rcvhost {from ${sender_rcvhost}\n\t}\ + {${if def:sender_ident {from ${sender_ident} }}\ + ${if def:sender_helo_name {(helo=${sender_helo_name})\n\t}}}}\ + by ${primary_hostname} \ + ${if def:received_protocol {with ${received_protocol}}} \ + (Exim ${version_number} #${compile_number} (Debian) [+prerelease])\n\t\ + id ${message_id}\ + ${if def:received_for {\n\tfor <$received_for>}}" + + + +# No deliveries will ever be run under the uids of these users (a colon- +# separated list). An attempt to do so causes a panic error to be logged, and +# the delivery to be deferred. This is a paranoic safety catch. Note that the +# default setting means you cannot deliver mail addressed to root as if it +# were a normal user. This isn't usually a problem, as most sites have an alias +# for root that redirects such mail to a human administrator. +# +never_users = root + +###################################################################### +# ACL CONFIGURATION # +# Specifies access control lists for incoming SMTP mail # +###################################################################### +begin acl + + +# This access control list is used for every RCPT command in an incoming +# SMTP message. The tests are run in order until the address is either +# accepted or denied. +# +acl_check_rcpt: + # Accept if the source is local SMTP (i.e. not over TCP/IP). We do this by + # testing for an empty sending host field. + accept hosts = : + # Deny if the local part contains @ or % or / or | or !. These are rarely + # found in genuine local parts, but are often tried by people looking to + # circumvent relaying restrictions. + # + # Also deny if the local part starts with a dot. Empty components aren't + # strictly legal in RFC 2822, but Exim allows them because this is common. + # However, actually starting with a dot may cause trouble if the local part + # is used as a file name (e.g. for a mailing list). + # + deny local_parts = ^.*[@%!/|] : ^\\. + # Accept mail to postmaster in any local domain, regardless of the source, + # and without verifying the sender. + # + accept local_parts = postmaster + domains = +local_domains + # Deny unless the sender address can be verified. + # + # require verify = sender + + ############################################################################# + # There are no checks on DNS "black" lists because the domains that contain + # these lists are changing all the time. However, here are two examples of + # how you could get Exim to perform a DNS black list lookup at this point. + # The first one denies, while the second just warns. + # + # deny message = rejected because $sender_host_address is in a black list at $dnslist_domain\n$dnslist_text + # dnslists = black.list.example + # + # warn message = X-Warning: $sender_host_address is in a black list at $dnslist_domain + # log_message = found in $dnslist_domain + # dnslists = black.list.example + ############################################################################# + + # Accept if the address is in a local domain, but only if the recipient can + # be verified. Otherwise deny. The "endpass" line is the border between + # passing on to the next ACL statement (if tests above it fail) or denying + # access (if tests below it fail). + # + accept domains = +local_domains + endpass + message = unknown user + verify = recipient + + # Accept if the address is in a domain for which we are relaying, but again, + # only if the recipient can be verified. + # + accept domains = +relay_to_domains + endpass + message = unrouteable address + verify = recipient + + # If control reaches this point, the domain is neither in +local_domains + # nor in +relay_to_domains. + + # Accept if the message comes from one of the hosts for which we are an + # outgoing relay. Recipient verification is omitted here, because in many + # cases the clients are dumb MUAs that don't cope well with SMTP error + # responses. If you are actually relaying out from MTAs, you should probably + # add recipient verification here. + # + accept hosts = +relay_from_hosts + + # Accept if the message arrived over an authenticated connection, from + # any host. Again, these messages are usually from MUAs, so recipient + # verification is omitted. + # + accept authenticated = * + + # Reaching the end of the ACL causes a "deny", but we might as well give + # an explicit message. + # + deny message = relay not permitted + + + +###################################################################### +# ROUTERS CONFIGURATION # +# Specifies how addresses are handled # +###################################################################### +# THE ORDER IN WHICH THE ROUTERS ARE DEFINED IS IMPORTANT! # +# An address is passed to each router in turn until it is accepted. # +###################################################################### + +begin routers + + +# This router routes to remote hosts over SMTP by explicit IP address, +# when an email address is given in "domain literal" form, for example, +# <user@[192.168.35.64]>. The RFCs require this facility. However, it is +# little-known these days, and has been exploited by evil people seeking +# to abuse SMTP relays. Consequently it is commented out in the default +# configuration. If you uncomment this router, you also need to uncomment +# allow_domain_literals above, so that Exim can recognize the syntax of +# domain literal addresses. + +# domain_literal: +# driver = ipliteral +# domains = ! +local_domains +# transport = remote_smtp + +smarthost: + driver = manualroute + domains = ! +local_domains + transport = remote_smtp + route_list = * DCsmarthost + host_find_failed = defer + no_more + +# The "no_more" above means that all routers below here are for +# domains in the local_domains list, i.e. just like Exim 3 directors. + + +real_local: + driver = accept + local_part_prefix = real- + check_local_user + transport = LOCAL_DELIVERY + + +# This router handles aliasing using a traditional /etc/aliases file. +# +##### NB You must ensure that /etc/aliases exists. It used to be the case +##### NB that every Unix had that file, because it was the Sendmail default. +##### NB These days, there are systems that don't have it. Your aliases +##### NB file should at least contain an alias for "postmaster". +# +# If any of your aliases expand to pipes or files, you will need to set +# up a user and a group for these deliveries to run under. You can do +# this by uncommenting the "user" option below (changing the user name +# as appropriate) and adding a "group" option if necessary. Alternatively, you +# can specify "user" on the transports that are used. Note that the transports +# listed below are the same as are used for .forward files; you might want +# to set up different ones for pipe and file deliveries from aliases. +# +system_aliases: + driver = redirect + allow_fail + allow_defer + data = ${lookup{$local_part}lsearch{/etc/aliases}} +# user = list + file_transport = address_file + pipe_transport = address_pipe + +hub_user: + driver = redirect + data = ${local_part}@DCreadhost + check_local_user + +# This router handles forwarding using traditional .forward files in users' +# home directories. If you want it also to allow mail filtering when a forward +# file starts with the string "# Exim filter", uncomment the "allow_filter" +# option. +# +# The no_verify setting means that this router is skipped when Exim is +# verifying addresses. Similarly, no_expn means that this router is skipped if +# Exim is processing an EXPN command. +# +# The check_ancestor option means that if the forward file generates an +# address that is an ancestor of the current one, the current one gets +# passed on instead. This covers the case where A is aliased to B and B +# has a .forward file pointing to A. +# +# The three transports specified at the end are those that are used when +# forwarding generates a direct delivery to a file, or to a pipe, or sets +# up an auto-reply, respectively. +# +userforward: + driver = redirect + check_local_user + file = $home/.forward + no_verify + no_expn + check_ancestor +# allow_filter + file_transport = address_file + pipe_transport = address_pipe + reply_transport = address_reply + + +procmail: + driver = accept + check_local_user + transport = procmail_pipe + require_files = ${local_part}:${home}/.procmailrc:+/usr/bin/procmail + no_verify + no_expn + + +# Use maildrop +# maildrop: +# driver = accept +# check_local_user +# transport = maildrop_pipe +# require_files = ${local_part}:${home}/.mailfilter:+/usr/bin/maildrop +# no_verify +# no_expn + + +local_user: + driver = accept + check_local_user + transport = LOCAL_DELIVERY + + + +###################################################################### +# TRANSPORTS CONFIGURATION # +###################################################################### +# ORDER DOES NOT MATTER # +# Only one appropriate transport is called for each delivery. # +###################################################################### + +# A transport is used only when referenced from a router that successfully +# handles an address. + +begin transports + + +# This transport is used for handling deliveries directly to files that are +# generated by aliasing or forwarding. +# +address_file: + driver = appendfile + delivery_date_add + envelope_to_add + return_path_add + + +# This transport is used for handling pipe deliveries generated by alias or +# .forward files. If the pipe generates any standard output, it is returned +# to the sender of the message as a delivery error. Set return_fail_output +# instead of return_output if you want this to happen only when the pipe fails +# to complete normally. You can set different transports for aliases and +# forwards if you want to - see the references to address_pipe in the routers +# section above. +# +address_pipe: + driver = pipe + return_output + + +# This transport is used for handling autoreplies generated by the filtering +# option of the userforward router. +# +address_reply: + driver = autoreply + + +# This transport is used for local delivery to user mailboxes in traditional +# BSD mailbox format. +# +mail_spool: + driver = appendfile + file = /var/mail/$local_part + delivery_date_add + envelope_to_add + return_path_add + group = mail + mode = 0660 + + +# Use this instead of mail_spool if you want to to deliver to Maildir in +# home-directory - change the definition of LOCAL_DELIVERY +# +maildir_home: + driver = appendfile + directory = $home/Maildir + maildir_format + mode = 0600 + + +maildrop_pipe: + driver = pipe + path = "/bin:/usr/bin:/usr/local/bin" + command = "/usr/bin/maildrop" + return_path_add + delivery_date_add + envelope_to_add + + +procmail_pipe: + driver = pipe + path = "/bin:/usr/bin:/usr/local/bin" + command = "/usr/bin/procmail" + return_path_add + delivery_date_add + envelope_to_add + + +# This transport is used for delivering messages over SMTP connections. +remote_smtp: + driver = smtp + +###################################################################### +# RETRY CONFIGURATION # +###################################################################### + +begin retry + + +# This single retry rule applies to all domains and all errors. It specifies +# retries every 15 minutes for 2 hours, then increasing retry intervals, +# starting at 1 hour and increasing each time by a factor of 1.5, up to 16 +# hours, then retries every 6 hours until 4 days have passed since the first +# failed delivery. + +# Domain Error Retries +# ------ ----- ------- + +* * F,2h,15m; G,16h,1h,1.5; F,4d,6h + + + +###################################################################### +# REWRITE CONFIGURATION # +###################################################################### + +begin rewrite + +###################################################################### +# AUTHENTICATION CONFIGURATION # +###################################################################### + +begin authenticators diff --git a/debian/exim4-config-simple/debian/manpages/update-exim4.conf.8 b/debian/exim4-config-simple/debian/manpages/update-exim4.conf.8 new file mode 100644 index 0000000..e1019ac --- /dev/null +++ b/debian/exim4-config-simple/debian/manpages/update-exim4.conf.8 @@ -0,0 +1,75 @@ +.\" Hey, EMACS: -*- nroff -*- +.\" First parameter, NAME, should be all caps +.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection +.\" other parameters are allowed: see man(7), man(1) +.TH UPDATE-EXIM4.CONF 8 "February 4, 2003" EXIM4 +.\" Please adjust this date whenever revising the manpage. +.\" +.\" Some roff macros, for reference: +.\" .nh disable hyphenation +.\" .hy enable hyphenation +.\" .ad l left justify +.\" .ad b justify to both left and right margins +.\" .nf disable filling +.\" .fi enable filling +.\" .br insert line break +.\" .sp <n> insert n+1 empty lines +.\" for manpage-specific macros, see man(7) +.SH NAME +update-exim4.conf \- Generate exim4 configuration files. +.SH SYNOPSIS +.B update-exim4.conf [-v|--verbose] [-h|--help] [--keepcomments] [--removecomments] [-o|--output file] + +.SH OPTIONS +.TP +.I -v|--verbose +Enable verbose mode, tell about ignored, user modified files +.TP +.I -h|--help +Show short help message and exit +.TP +.I --keepcomments +Do not remove comment lines from the output file. +.TP +.I --removecomments +Remove comment lines from the output file. [Default] +.TP +.I -o|--output file +Write output to file instead of /var/lib/exim4/config.autogenerated. Be careful, + +.SH DESCRIPTION +The script +.B update-exim4.conf +generates the main configuration files +.I /var/lib/exim4/config.autogenerated +for +.B Exim v4 +by merging the data in the template files in the +.I /etc/exim4/exim4.conf.source +and +.I /etc/exim4/exim4.conf.defaults +files to the output file +.I /var/lib/exim4/config.autogenerated. +.PP + +.B update-exim4.conf +exits silently and does nothing if /etc/exim4/exim4.conf exists. + +If +.B update-exim4.conf +is called without the option -o it checks the validity of the +freshly generated configurationfile and exits with an error instead +of installing the file to /var/lib/exim4/config.autogenerated. + +.SH FILES +.B update-exim4.conf +manages these files: +.TP +.I /var/lib/exim4/config.autogenerated +Exim's main configuration file +.SH SEE ALSO +.BR exim (8) + +.SH AUTHOR +Marc Haber <mh+debian-packages@zugschlus.de> using work prepared by +Andreas Metzler <ametzler at downhill.at.eu.org> diff --git a/debian/exim4-config-simple/debian/rules b/debian/exim4-config-simple/debian/rules new file mode 100755 index 0000000..505a055 --- /dev/null +++ b/debian/exim4-config-simple/debian/rules @@ -0,0 +1,86 @@ +#!/usr/bin/make -f +# Sample debian/rules that uses debhelper. +# This file is public domain software, originally written by Joey Hess. +# +# This version is for a hypothetical package that builds an +# architecture-dependant package, as well as an architecture-independent +# package. + +# Uncomment this to turn on verbose mode. +export DH_VERBOSE=1 + +buildname=$${build:-`$(SHELL) scripts/os-type`-`$(SHELL) scripts/arch-type`} + +DEBIAN:=$(shell pwd)/debian + +configure: configure-stamp + +# the patches might change src/EDITME. +configure-stamp: + dh_testdir + touch configure-stamp + +build-indep: build-indep-stamp +build-indep-stamp: + dh_testdir + touch build-indep-stamp + +build: build-indep + +clean: cleanfiles + +cleanfiles: + dh_testdir + dh_testroot + rm -f build-indep-stamp configure-stamp install-stamp + + # Add here commands to clean up after the build process. + dh_clean + +install: install-stamp +install-stamp: build + dh_testdir + dh_testroot + dh_clean -k + dh_installdirs + + install -m 755 debian/debconf/update-exim4.conf debian/exim4-config-simple/usr/sbin + install -m 644 debian/exim4.conf.source debian/exim4-config-simple/etc/exim4 + install -m 644 debian/exim4.conf.defaults debian/exim4-config-simple/etc/exim4 + +# dh_movefiles + touch install-stamp + +# Build architecture-independent files here. +binary-indep: build install + dh_testdir -i + dh_testroot -i + dh_installchangelogs -i + dh_installdocs -i + dh_installexamples -i + dh_installmenu -i + dh_installdebconf -i + dh_installlogrotate -i +# dh_installemacsen -i + dh_installpam -i + dh_installmime -i +# dh_installinit -i + dh_installcron -i +# dh_installinfo -i +# dh_undocumented -i + dh_installman -i + dh_install -i + dh_strip -i + dh_link -i + dh_compress -i +# dh_fixperms -i +# dh_makeshlibs -i + dh_installdeb -i +# dh_perl -i + dh_shlibdeps -i + dh_gencontrol -i + dh_md5sums -i + dh_builddeb -i + +binary: binary-indep +.PHONY: build clean binary-indep binary-arch binary install diff --git a/debian/exim4-config.config b/debian/exim4-config.config new file mode 100644 index 0000000..7ac0a42 --- /dev/null +++ b/debian/exim4-config.config @@ -0,0 +1,424 @@ +#!/bin/sh +set -e + +alias stripwhitespace="sed -e 's/^[[:blank:]]*//' -e 's/[[:blank:]]*$//'" + +. /usr/share/debconf/confmodule + + +# store environment variables in debconf db. +storevar2db() { + dc_eximconfig_configtype=`echo "${dc_eximconfig_configtype}" | stripwhitespace` + dc_listenonpublic=`echo "${dc_listenonpublic}" | stripwhitespace` + dc_other_hostnames=`echo "${dc_other_hostnames}" | stripwhitespace` + dc_readhost=`echo "${dc_readhost}" | stripwhitespace` + dc_relay_domains=`echo "${dc_relay_domains}" | stripwhitespace` + dc_relay_nets=`echo "${dc_relay_nets}" | stripwhitespace` + dc_smarthost=`echo "${dc_smarthost}" | stripwhitespace` + # store externally changed values to debconf.db + db_set exim4/dc_eximconfig_configtype "${dc_eximconfig_configtype}" + db_set exim4/dc_listenonpublic "${dc_listenonpublic}" + db_set exim4/dc_other_hostnames "${dc_other_hostnames}" + db_set exim4/dc_readhost "${dc_readhost}" + db_set exim4/dc_relay_domains "${dc_relay_domains}" + db_set exim4/dc_relay_nets "${dc_relay_nets}" + db_set exim4/dc_smarthost "${dc_smarthost}" +} + +# ipv6: replace double colons in colon-separated host lists with umlaut-o +# replace ':' with ' : ', add leading and ending whitespace. +# return empty string if custom delimiter was used: + # local_domains = <; 172.16.0.0/12; 3ffe:ffff:836f::/48 +# e.g: 'localhost : 172.16.0.1 :3ffe::ffff::836f::::: foo.org' +# ===> ' localhost : 172.16.0.1 : 3ffeöffffö836föö : foo.org ' +alias coloncolon2oe="sed -e 's/[[:blank:]]*//g' -e '/^</d' -e 's/:::::/:öö/g' -e 's/::::/öö/g' -e 's/:::/:ö/g' -e 's/::/ö/g' -e 's/:/ : /g' -e 's/^/ /' -e 's/$/ /'" + +# try to parse exim3 configuration file - works only if it was generated +# with eximconfig. +parseexim3() { + dc_mailname=`head -1 /etc/mailname | stripwhitespace` || true + + # get the .... entries from + # host_accept_relay = 127.0.0.1 : ::::1 : ...... + # if they exist, ie. parse list, and remove "127.0.0.1", "::::1" + # and "localhost" from it. + # + dc_relay_nets=`cat $1 | grep -h '^host_accept_relay[[:blank:]]*=' | sed -e 's/^host_accept_relay[[:blank:]]*=//' | coloncolon2oe | sed -e 's/ 127\.0\.0\\.1 //g' -e 's/ localhost //g' -e 's/ öö1//g' -e 's/[[:blank:]]*//g' -e 's/::/:/g' -e 's/^://' -e 's/:$//' -e 's/ö/::/g'` + + # 'local_domains = $colonhostnames', including mailname and "localhost" + # + dc_other_hostnames=`cat $1 | grep -h '^local_domains[[:blank:]]*=' | sed -e 's/^local_domains[[:blank:]]*=//' | coloncolon2oe | sed -e 's/ localhost //g' -e "s/ ${dc_mailname} //g" -e 's/[[:blank:]]*//g' -e 's/::/:/g' -e 's/^://' -e 's/:$//' -e 's/ö/::/g'` + + # relay_domains = some.domain + dc_relay_domains=`cat $1 | grep -h '^relay_domains = ' | sed -e 's/^relay_domains[[:blank:]]*=[[:blank:]]*//' -e 's/[[:blank:]]*$//'` + + # lookuphost router exist ---> dc_eximconfig_configtype=internet + # + if cat $1 | grep -h -A2 '^lookuphost:' | \ + grep -h -A1 '[[:blank:]]*driver = lookuphost' | \ + grep -h -q '[[:blank:]]*transport = remote_smtp' ; then + dc_eximconfig_configtype=internet + else + # smart:-director exists ---> dc_eximconfig_configtype=satellite + # + # Later we need the new_address directive to find dc_readhost. + # ' || true' is required for "set -e" + dc_readhost=`cat $1 | grep -h -A2 '^smart:' | grep -h -A1 '^[[:blank:]]*driver = smartuser' | grep -h '^[[:blank:]]*new_address' || true` + + # smarthost router exists --> dc_eximconfig_configtype is satellite or smarthost + # + # we need the route_list directive to find dc_smarthost + # ' || true' is required for "set -e" + dc_smarthost=`cat $1 | grep -h -A3 '^smarthost:' | grep -h -A2 '[[:blank:]]*driver = domainlist' | grep -h -A1 '^[[:blank:]]*transport = remote_smtp' | grep -h '^[[:blank:]]*route_list = "' || true` + + if [ ! -z "${dc_readhost}" ] ; then + dc_eximconfig_configtype=satellite + elif [ ! -z "${dc_smarthost}" ] ; then + dc_eximconfig_configtype=smarthost + elif ! cat "$1" | grep -h -q '^remote_smtp:'; then + # dc_eximconfig_configtype=local has no remote_smtp transport. + dc_eximconfig_configtype=local + else + # handcrafted config. We probably misparsed, reset values + # and exit. + dc_eximconfig_configtype='' + dc_listenonpublic='' + dc_other_hostnames='' + dc_readhost='' + dc_relay_domains='' + dc_relay_nets='' + dc_smarthost='' + return 1 + fi + fi + + case ${dc_eximconfig_configtype} in + internet|local) + #paranoia + dc_readhost='' + dc_smarthost='' + ;; + satellite) + # new_address = ${local_part}@$readhost + dc_readhost=`echo "${dc_readhost}" | sed -e 's/^.*@//' -e 's/[[:blank:]]*$//'` + # route_list = "* $smtphost bydns_a" + dc_smarthost=`echo "${dc_smarthost}" | \ + sed -e 's/^ *route_list = "\* //' -e 's/ bydns_a"//' -e 's/[[:blank:]]*$//'` + ;; + smarthost) + # route_list = "* $smtphost bydns_a" + dc_smarthost=`echo "${dc_smarthost}" | \ + sed -e 's/^ *route_list = "\* //' -e 's/ bydns_a"//' -e 's/[[:blank:]]*$//'` + ;; + esac +} + +# REMOVEMEBEFORERELEASE begins +# cruft from renaming debconf.results to update-exim4.conf.conf +if [ -e /etc/exim4/debconf.results ] && \ + [ ! -e /etc/exim4/update-exim4.conf.conf ]; then + cp -a /etc/exim4/debconf.results /etc/exim4/update-exim4.conf.conf +fi +# REMOVEMEBEFORERELEASE ends + +db_get exim4/dc_eximconfig_configtype +dc_eximconfig_configtype="$RET" + +if [ -e /etc/exim4/update-exim4.conf.conf ] ; then + . /etc/exim4/update-exim4.conf.conf || true + # set defaults using these values + storevar2db +else + # If there are no debconf answers (running first time) and we are + # making a cross upgrade from exim3, try to parse its config file + # to seed debconf db. + if [ "x${dc_eximconfig_configtype}" = "x" ] && [ -r /etc/exim/exim.conf ] ; then + # parse old configfile + if parseexim3 /etc/exim/exim.conf ; then + # set defaults using these values + storevar2db + fi + fi +fi + +## set up default values, we cannot do this in templates file because +## config script is called two times before update-exim4.conf.conf exists. +[ "x${dc_eximconfig_configtype}" = "x" ] && \ + dc_eximconfig_configtype="local" && \ + db_set exim4/dc_eximconfig_configtype "${dc_eximconfig_configtype}" + + +if [ -e /etc/mailname ] ; then + dc_mailname=`head -1 /etc/mailname | stripwhitespace` || true + # store values + db_set exim4/mailname "${dc_mailname}" +else + db_get exim4/mailname + dc_mailname="$RET" +fi + + +#Set default mailname +if [ "x${dc_mailname}" = "x" ] ; then + dc_mailname=`hostname --fqdn` || dc_mailname=`hostname` && \ + dc_mailname=`echo "${dc_mailname}" | stripwhitespace` && \ + db_set exim4/mailname "${dc_mailname}" +fi +if [ "x${dc_readhost}" = "x" ] ; then + db_get exim4/dc_readhost + dc_readhost="$RET" +fi +if [ "x${dc_smarthost}" = "x" ] ; then + db_get exim4/dc_smarthost + dc_smarthost="$RET" +fi +if [ "x${dc_listenonpublic}" = "x" ] ; then + db_get exim4/dc_listenonpublic + dc_listenonpublic="$RET" +fi + + +db_version 2.0 + +db_capb backup +# initial state +STATE=1 +# last valid state +STATELIMIT=29 +while [ "$STATE" != 0 -a "$STATE" -le "$STATELIMIT" ]; do + case "$STATE" in + 1) + db_input medium exim4/mailname || true + PREVSTATE=$STATE + NEXTSTATE=$(($STATE + 1)) + ;; + 2) + PREVSTATE=$(($STATE - 1)) + NEXTSTATE=$(($STATE + 1)) + db_input critical exim4/dc_eximconfig_configtype || true + ;; + 3) + db_get exim4/dc_eximconfig_configtype + dc_eximconfig_configtype="$RET" + db_get exim4/mailname + dc_mailname="$RET" + db_subst exim4/dc_other_hostnames mailname ${dc_mailname} + PREVSTATE=$(($STATE - 1)) + case "${dc_eximconfig_configtype}" in + none) + # dont ask more questions + NEXTSTATE=$(($STATELIMIT + 1)) + ;; + internet) + NEXTSTATE=7 + ;; + smarthost) + NEXTSTATE=14 + ;; + satellite) + NEXTSTATE=21 + ;; + local) + NEXTSTATE=28 + ;; + *) + # Should not happen. Break loop + NEXTSTATE=$(($STATELIMIT + 1)) + ;; + esac + ;; + + 7) + # internet site + PREVSTATE=2 + NEXTSTATE=$(($STATE + 1)) + if [ "x${dc_listenonpublic}" = "x" ] ; then + dc_listenonpublic=true + db_set exim4/dc_listenonpublic true + fi + db_input medium exim4/dc_listenonpublic || true + ;; + 8) + PREVSTATE=$(($STATE - 1)) + NEXTSTATE=$(($STATE + 1)) + db_input medium exim4/dc_other_hostnames || true + ;; + 9) + db_input medium exim4/dc_relay_domains || true + PREVSTATE=$(($STATE - 1)) + NEXTSTATE=$(($STATE + 1)) + ;; + 10) + db_input medium exim4/dc_relay_nets || true + PREVSTATE=$(($STATE - 1)) + NEXTSTATE=$(($STATELIMIT + 1)) + ;; + + 14) + # internet site with smarthost + PREVSTATE=2 + NEXTSTATE=$(($STATE + 1)) + if [ "x${dc_listenonpublic}" = "x" ] ; then + dc_listenonpublic=true + db_set exim4/dc_listenonpublic true + fi + db_input medium exim4/dc_listenonpublic || true + ;; + 15) + PREVSTATE=$(($STATE - 1)) + NEXTSTATE=$(($STATE + 1)) + db_input medium exim4/dc_other_hostnames || true + ;; + 16) + db_input medium exim4/dc_relay_domains || true + PREVSTATE=$(($STATE - 1)) + NEXTSTATE=$(($STATE + 1)) + ;; + 17) + db_input medium exim4/dc_relay_nets || true + PREVSTATE=$(($STATE - 1)) + NEXTSTATE=$(($STATE + 1)) + ;; + 18) + if [ "x${dc_smarthost}" = "x" ] ; then + # default to mail.mailname + dc_smarthost="mail.${dc_mailname}" + db_set exim4/dc_smarthost "${dc_smarthost}" + fi + db_input high exim4/dc_smarthost || true + PREVSTATE=$(($STATE - 1)) + NEXTSTATE=$(($STATELIMIT + 1)) + ;; + + 21) + # satellite + PREVSTATE=2 + NEXTSTATE=$(($STATE + 1)) + if [ "x${dc_listenonpublic}" = "x" ] ; then + dc_listenonpublic=false + db_set exim4/dc_listenonpublic false + fi + db_input medium exim4/dc_listenonpublic || true + ;; + 22) + PREVSTATE=2 + NEXTSTATE=$(($STATE + 1)) + db_input medium exim4/dc_other_hostnames || true + ;; + 23) + PREVSTATE=$(($STATE - 1)) + NEXTSTATE=$(($STATE + 1)) + if [ "x${dc_readhost}" = "x" ] ; then + # default to domain of mailname + dc_readhost=`echo ${dc_mailname} | sed -e 's/^[^.][^.]*\.//'` + db_set exim4/dc_readhost "${dc_readhost}" + fi + db_input high exim4/dc_readhost || true + ;; + 24) + PREVSTATE=$(($STATE - 1)) + NEXTSTATE=$(($STATE + 1)) + db_get exim4/dc_readhost + dc_readhost="$RET" + if [ "x${dc_smarthost}" = "x" ] ; then + # default to read_host + dc_smarthost="${dc_readhost}" + db_set exim4/dc_smarthost "${dc_smarthost}" + fi + db_input high exim4/dc_smarthost || true + ;; + 25) + PREVSTATE=$(($STATE - 1)) + NEXTSTATE=$(($STATELIMIT + 1)) + # satellite-system! Only ask for relay_nets/relay_domains if they are + # nonempty - we cannot distinguish whether they were set outside debconf + # or whether the user switched dc_eximconfig_configtype + db_get exim4/dc_relay_nets || true + dc_relay_nets="$RET" + db_get exim4/dc_relay_domains || true + dc_relay_domains="$RET" + if [ "x${dc_relay_nets}" != "x" ] ; then + db_input medium exim4/dc_relay_nets + NEXTSTATE=$(($STATE + 1)) + fi + if [ "x${dc_relay_domains}" != "x" ] ; then + NEXTSTATE=$(($STATELIMIT + 1)) + db_input medium exim4/dc_relay_domains + fi + ;; + + 28) + # local mail only + PREVSTATE=2 + NEXTSTATE=$(($STATE + 1)) + if [ "x${dc_listenonpublic}" = "x" ] ; then + dc_listenonpublic=false + db_set exim4/dc_listenonpublic false + fi + db_input medium exim4/dc_listenonpublic || true + ;; + 29) + PREVSTATE=$(($STATE - 1)) + NEXTSTATE=$(($STATELIMIT + 1)) + # local mail only -system! Only ask for relay_nets/relay_domains if they are + # nonempty - we cannot distinguish whether they were set outside debconf + # or whether the user switched dc_eximconfig_configtype + db_get exim4/dc_relay_nets || true + dc_relay_nets="$RET" + db_get exim4/dc_relay_domains || true + dc_relay_domains="$RET" + + if [ "x${dc_relay_nets}" != "x" ] ; then + db_input medium exim4/dc_relay_nets + NEXTSTATE=$(($STATE + 1)) + fi + if [ "x${dc_relay_domains}" != "x" ] ; then + NEXTSTATE=$(($STATELIMIT + 1)) + db_input medium exim4/dc_relay_domains + fi + ;; + + esac + if db_go; then + STATE=$NEXTSTATE + else + STATE=$PREVSTATE + fi +done + +if [ ! -e /etc/aliases ] ; then + db_input high exim4/dc_postmaster || true + db_go || true +fi + +db_get exim4/dc_postmaster || true +dc_postmaster=`echo "$RET" | stripwhitespace` + +if [ -e /etc/aliases ] && + ! grep -q '^root:[[:space:]]*[[:alnum:]]' /etc/aliases && \ + [ "x${dc_postmaster}" != "xnone" ]; then + # no alias for root and exim4/dc_postmaster != "none". + db_input high exim4/dc_noalias_regenerate || true + db_go || true + db_get exim4/dc_noalias_regenerate + dc_noalias_regenerate="$RET" + if [ "x${dc_noalias_regenerate}" = "xtrue" ] ; then + db_input high exim4/dc_postmaster || true + db_go || true + db_get exim4/dc_postmaster || true + dc_postmaster=`echo "$RET" | stripwhitespace` + fi +fi + +if [ "x${dc_postmaster}" = "x" ] ; then + # FIXME convert empty string to "none" + db_set exim4/dc_postmaster "none" + dc_postmaster="none" +fi + +# if [ "x${dc_eximconfig_configtype}" = "xsatellite" ] || [ "x${dc_eximconfig_configtype}" = "xlocal" ] ; then +# # reset dc_relay_domains dc_relay_nets and dc_other_hostnames +# db_set exim4/dc_relay_domains "" +# db_set exim4/dc_relay_nets "" +# db_set exim4/dc_other_hostnames "" +# fi diff --git a/debian/exim4-config.dirs b/debian/exim4-config.dirs new file mode 100644 index 0000000..e3a0edd --- /dev/null +++ b/debian/exim4-config.dirs @@ -0,0 +1,6 @@ +/usr/sbin +/etc/exim4/conf.d +/etc/ppp/ip-up.d +/usr/share/doc/exim4-config/examples +/usr/share/man/man8 +/var/lib/exim4 diff --git a/debian/exim4-config.manpages b/debian/exim4-config.manpages new file mode 100644 index 0000000..6359efc --- /dev/null +++ b/debian/exim4-config.manpages @@ -0,0 +1,2 @@ +debian/manpages/update-exim4.conf.8 +debian/manpages/update-exim4defaults.8 diff --git a/debian/exim4-config.postinst b/debian/exim4-config.postinst new file mode 100644 index 0000000..69c8f87 --- /dev/null +++ b/debian/exim4-config.postinst @@ -0,0 +1,140 @@ +#!/bin/sh + +set -e +. /usr/share/debconf/confmodule + + +db_version 2.0 + +get_value() { + db_get $1 + code="$?" + if [ "$code" -eq "0" ]; then + : + else + echo "Error getting debconf answer $1: debconf code=$code" >&2 + exit $code + fi +} + +write_header() { + cat <<EOF > /etc/exim4/update-exim4.conf.conf +# /etc/exim4/update-exim4.conf.conf +# +# Edit this file and /etc/mailname by hand and execute update-exim4.conf +# yourself or use 'dpkg-reconfigure exim4-config' +# +# comments will be lost. + +EOF +} + +writealiases() { +echo '# /etc/aliases' > /etc/aliases.tmp +echo 'mailer-daemon: postmaster' >> /etc/aliases.tmp +for i in postmaster nobody hostmaster usenet news webmaster www ftp abuse noc security ; do + echo "${i}: root" +done >> /etc/aliases.tmp +#poma=`echo "$1" | sed -e 's/^[^A-Za-z.0-9_-]*//' -e 's/[^A-Za-z.0-9_-]*$//' \ +# -e 's/ */,/g'` +# remove leading and ending whitespace, shrink multiple whitespace, separate +# entries with commas +poma=`echo "$1" | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//' -e 's/[[:space:]][[:space:]]*/,/g'` +if [ "xnone" != "x$poma" ] ; then + echo "root: $poma" >> /etc/aliases.tmp +fi +mv /etc/aliases.tmp /etc/aliases +} + +alias stripwhitespace="sed -e 's/^[[:blank:]]*//' -e 's/[[:blank:]]*$//'" + +# REMOVEMEBEFORERELEASE begins +# cruft from renaming debconf.results to update-exim4.conf.conf +if [ -e /etc/exim4/debconf.results ] ; then + if [ ! -e /etc/exim4/update-exim4.conf.conf ]; then + mv /etc/exim4/debconf.results /etc/exim4/update-exim4.conf.conf + else + rm -f /etc/exim4/debconf.results + fi +fi +# REMOVEMEBEFORERELEASE ends + +case "$1" in + configure) + # Configure Exim############################## + ############################################## + # Generate config-file if it does yet not exist + if [ ! -e /etc/exim4/update-exim4.conf.conf ] ; then + write_header + for variable in dc_eximconfig_configtype dc_other_hostnames \ + dc_readhost dc_relay_domains \ + dc_relay_nets dc_smarthost ; do + echo "${variable}=" + done >> /etc/exim4/update-exim4.conf.conf + fi + + # generate dummy files, which will be overwritten by update-exim4.conf + for file in /etc/exim4/conf.d/main/03_exim4-base_neverusers /etc/exim4/conf.d/rewrite/30_exim4-base_email-addresses /etc/exim4/conf.d/rewrite/35_exim4-base_masquerade /etc/exim4/conf.d/router/28_exim4-base_hubuser /etc/exim4/conf.d/router/22_exim4-base_primary ; do + if [ ! -f "$file" ] ; then + echo "# d41d8cd98f00b204e9800998ecf8427e" > "$file" + chmod 644 "$file" + fi + done + # generate defaultfile + update-exim4defaults --init + + # Substitute values from debconf db + db_get exim4/dc_eximconfig_configtype || true + dc_eximconfig_configtype=`echo "$RET" | stripwhitespace` + db_get exim4/dc_listenonpublic || true + dc_listenonpublic=`echo "$RET" | stripwhitespace` + db_get exim4/dc_other_hostnames || true + dc_other_hostnames=`echo "$RET" | stripwhitespace` + db_get exim4/dc_readhost || true + dc_readhost=`echo "$RET" | stripwhitespace` + db_get exim4/dc_relay_domains || true + dc_relay_domains=`echo "$RET" | stripwhitespace` + db_get exim4/dc_relay_nets || true + dc_relay_nets=`echo "$RET" | stripwhitespace` + db_get exim4/dc_smarthost || true + dc_smarthost=`echo "$RET" | stripwhitespace` + db_get exim4/mailname || true + mailname=`echo "$RET" | stripwhitespace` + + ### write configuration to files # + write_header + echo "dc_eximconfig_configtype='${dc_eximconfig_configtype}'" >> /etc/exim4/update-exim4.conf.conf + echo "dc_listenonpublic='${dc_listenonpublic}'" >> /etc/exim4/update-exim4.conf.conf + echo "dc_other_hostnames='${dc_other_hostnames}'" >> /etc/exim4/update-exim4.conf.conf + echo "dc_readhost='${dc_readhost}'" >> /etc/exim4/update-exim4.conf.conf + echo "dc_relay_domains='${dc_relay_domains}'" >> /etc/exim4/update-exim4.conf.conf + echo "dc_relay_nets='${dc_relay_nets}'" >> /etc/exim4/update-exim4.conf.conf + echo "dc_smarthost='${dc_smarthost}'" >> /etc/exim4/update-exim4.conf.conf + + echo $mailname > /etc/mailname + ### configuration files written ## + + db_get exim4/dc_postmaster + dc_postmaster=`echo "$RET" | stripwhitespace` + + if [ ! -e /etc/aliases ] ; then + writealiases "${dc_postmaster}" + #check whether /etc/aliases has a entry for root + elif ! grep -q '^root:[[:space:]]*[[:alnum:]]' /etc/aliases && \ + [ "x${dc_postmaster}" != "xnone" ]; then + db_get exim4/dc_noalias_regenerate + dc_noalias_regenerate="$RET" + if [ "x${dc_noalias_regenerate}" = "xtrue" ] ; then + mv /etc/aliases /etc/aliases.0 + writealiases "${dc_postmaster}" + fi + fi + + if [ "${dc_eximconfig_configtype}" != "none" ] ; then + update-exim4.conf + fi + + ;; +esac + +#DEBHELPER# diff --git a/debian/exim4-config.postrm b/debian/exim4-config.postrm new file mode 100644 index 0000000..577ff75 --- /dev/null +++ b/debian/exim4-config.postrm @@ -0,0 +1,25 @@ +#!/bin/sh + +set -e +. /usr/share/debconf/confmodule + +case "$1" in + purge) + rm -f /etc/exim4/update-exim4.conf.conf + rm -f /var/lib/exim4/config.autogenerated + rm -f /etc/exim4/conf.d/main/03_exim4-base_neverusers \ + /etc/exim4/conf.d/rewrite/30_exim4-base_email-addresses \ + /etc/exim4/conf.d/rewrite/35_exim4-base_masquerade \ + /etc/exim4/conf.d/router/28_exim4-base_hubuser \ + /etc/exim4/conf.d/router/22_exim4-base_primary + + # remove empty directories in /etc/exim4 + rmdir /etc/exim4/conf.d/auth /etc/exim4/conf.d/acl \ + /etc/exim4/conf.d/transport /etc/exim4/conf.d/main \ + /etc/exim4/conf.d/retry /etc/exim4/conf.d/rewrite \ + /etc/exim4/conf.d/router /etc/exim4/conf.d \ + /etc/exim4 /var/lib/exim4 2> /dev/null || true + ;; +esac + +#DEBHELPER# diff --git a/debian/exim4-config.templates b/debian/exim4-config.templates new file mode 100644 index 0000000..19346f3 --- /dev/null +++ b/debian/exim4-config.templates @@ -0,0 +1,140 @@ +Template: exim4/dc_eximconfig_configtype +Type: select +Choices: internet, smarthost, satellite, local, none +Description: Which major configuration? + You must choose one of the options below: + . + Internet site; mail is sent and received directly using SMTP. If your + needs don't fit neatly into any category, you probably want to start + with this one and then edit the config file by hand. + . + Internet site using smarthost: You receive Internet mail on this + machine, either directly by SMTP or by running a utility such as + fetchmail. Outgoing mail is sent using a smarthost. optionally with + addresses rewritten. This is probably what you want for a dialup + system. + . + Satellite system: All mail is sent to another machine, called a "smart + host" for delivery. root and postmaster mail is delivered according + to /etc/aliases. No mail is received locally. + . + Local delivery only: You are not on a network. Mail for local users + is delivered. + . + No configuration: No configuration will be done now; your mail system + will be broken and cannot be used. You must do the configuration + yourself later by hand or by running "dpkg-reconfigure exim4-config" + as root. + . + Choose this option if you want to configure exim4 by hand instead of + with debconf or if you want to convert an existing handcrafted Exim v3 + configuration to v4-format with exim_convert4r4(8). Consult + /usr/share/doc/exim4-base/examples/example.conf.gz and + /usr/share/doc/exim4-base/README.Debian! + +Template: exim4/mailname +Type: string +Description: `mail name' of your system, (not visible for satellite-system) + Please enter the `mail name' of your system. This is the + hostname portion of the address to be shown on outgoing + news and mail messages. If you are configuring this system as 'satellite' + this name won't appear on From: lines of mail, as rewriting is used. + +Template: exim4/dc_other_hostnames +Type: string +Default: +Description: What other domain names to recognise? + Does this system have any other names which may appear on incoming + mail messages, apart from the mail name (${mailname}) and + localhost? + . + By default all domains will be treated the same; if you want different + domain names to be treated differently, you will need to edit the config + file afterwards. + . + If there are any more, enter them here, separated with colons. + +Template: exim4/dc_relay_domains +Type: string +Default: +Description: Which domains to relay for? + All mail from here or specified other local machines to anywhere on + the internet will be accepted, as will mail from anywhere on the + internet to here. + . + Are there any domains you want to relay mail for---that is, you are + prepared to accept mail for them from anywhere on the internet, but + they are not local domains. + . + If there are any, enter them here, separated with colons. You + can use wildcards. + +Template: exim4/dc_relay_nets +Type: string +Default: +Description: Which machines to allow relaying for? + Obviously, any machines that use us as a smarthost have to be excluded + from the relaying controls, as using us to relay mail for them is the + whole point. + . + Are there any networks of local machines you want to relay mail for? + . + If there are any, enter them here, separated with colons. You + should use the standard address/length format (e.g. 194.222.242.0/24) + . + You need to double the colons in IPv6 addreses (e.g. 5f03::1200::836f::::/48) + +Template: exim4/dc_readhost +Type: string +Description: Domain name for local users + Since this is going to be a satellite system, I need to know what domain + name to use for mail from local users; typically this is the machine on + which you normally receive your mail. + . + Where will your users read their mail? + +Template: exim4/dc_smarthost +Type: string +Description: Which machine will act as the smarthost and handle outgoing mail? + Enter the hostname of the machine to send outgoing mail to. + +Template: exim4/dc_postmaster +Type: string +Description: Who is to receive postmaster mail? + Mail for the "postmaster" and "root" accounts is usually redirected + to one or more user accounts, of the actual system administrators. + By default, I'll set things up so that mail for "postmaster" and for + various system accounts is redirected to "root", and mail for "root" + is redirected to a real user. This can be changed by editing /etc/aliases. + . + Note that postmaster-mail should usually be read on the system it is + directed to, rather than being forwarded elsewhere, so (at least one of) + the users you choose should not redirect their mail off this machine. + . + Which user account(s) should system administrator mail go to ? + Enter one or more usernames separated by spaces or commas . Enter + "none" if you want to leave this mail in "root"'s mailbox - NB this + is strongly discouraged. Also, note that usernames should be lowercase! + +Template: exim4/dc_noalias_regenerate +Type: boolean +Default: false +Description: Overwrite existing /etc/aliases? + You already have an /etc/aliases file, but it does not redirect mail for + root to a user account, which is strongly recommended. Shall I overwrite it? + (the old one will be kept and renamed to aliases.O)? + +Template: exim4/dc_listenonpublic +Type: boolean +Description: Listen for SMTP connections on public network interfaces? + Exim listens per default for connection on the SMTP port of all + network interfaces. If this computer does not receive e-mail directly per + SMTP from other hosts, but only from local services like fetchmail or + your e-mail program (MUA) talking to localhost you can safely prohibit + external connections to Exim. + . + Should Exim listen for incoming connections on all interfaces? + . + You might want to answer `No' for dialup and satellite systems and + `Yes' for any machine that acts as smarthost for others. Say `Yes' + if you are not sure. diff --git a/debian/exim4-daemon-custom.dirs b/debian/exim4-daemon-custom.dirs new file mode 100644 index 0000000..45e1018 --- /dev/null +++ b/debian/exim4-daemon-custom.dirs @@ -0,0 +1,3 @@ +/usr/lib/exim4 +/usr/sbin +/usr/share/man/man8 diff --git a/debian/exim4-daemon-custom.docs b/debian/exim4-daemon-custom.docs new file mode 100644 index 0000000..bf9c376 --- /dev/null +++ b/debian/exim4-daemon-custom.docs @@ -0,0 +1 @@ +EDITME.exim4-custom diff --git a/debian/exim4-daemon-custom.links b/debian/exim4-daemon-custom.links new file mode 100644 index 0000000..4cc91fc --- /dev/null +++ b/debian/exim4-daemon-custom.links @@ -0,0 +1,16 @@ +usr/share/man/man8/exim.8.gz usr/share/man/man8/exim4.8.gz +usr/sbin/exim4 usr/lib/exim4/exim4 +usr/sbin/exim4 usr/lib/sendmail +usr/sbin/exim4 usr/sbin/sendmail +usr/sbin/exim4 usr/sbin/runq +usr/sbin/exim4 usr/sbin/rmail +usr/sbin/exim4 usr/sbin/rsmtp +usr/sbin/exim4 usr/bin/mailq +usr/sbin/exim4 usr/bin/newaliases +usr/share/man/man8/exim.8.gz usr/share/man/man8/sendmail.8.gz +usr/share/man/man8/exim.8.gz usr/share/man/man8/runq.8.gz +usr/share/man/man8/exim.8.gz usr/share/man/man8/rmail.8.gz +usr/share/man/man8/exim.8.gz usr/share/man/man8/rsmtp.8.gz +usr/share/man/man8/exim.8.gz usr/share/man/man8/mailq.8.gz +usr/share/man/man8/exim.8.gz usr/share/man/man8/newaliases.8.gz +usr/share/doc/exim4-base/changelog.gz usr/share/doc/exim4-daemon-custom/changelog.gz diff --git a/debian/exim4-daemon-custom.postinst b/debian/exim4-daemon-custom.postinst new file mode 100644 index 0000000..f76328a --- /dev/null +++ b/debian/exim4-daemon-custom.postinst @@ -0,0 +1,27 @@ +#!/bin/sh + +set -e + +. /usr/share/debconf/confmodule + +case "$1" in + configure) + + # needed for woody: "start" will fail on dpkg-reconfigure because + # daemon is already running. + # Afaik this has changed, dpkg-reconfigure from sid/sarge will call + # prerm on reconfigure. + # || true is needed for succesfull installation with configtype 'none' + if [ -x /etc/init.d/exim4 ]; then + if [ -x /usr/sbin/invoke-rc.d ]; then + invoke-rc.d exim4 start || invoke-rc.d exim4 reload || true + else + /etc/init.d/exim4 start || /etc/init.d/exim4 reload || true + fi + fi + db_stop + + ;; +esac + +#DEBHELPER# diff --git a/debian/exim4-daemon-custom.prerm b/debian/exim4-daemon-custom.prerm new file mode 100644 index 0000000..75c380b --- /dev/null +++ b/debian/exim4-daemon-custom.prerm @@ -0,0 +1,17 @@ +#!/bin/sh + +set -e + +case "$1" in + remove|upgrade) + if [ -x /etc/init.d/exim4 ]; then + if [ -x /usr/sbin/invoke-rc.d ]; then + invoke-rc.d exim4 stop + else + /etc/init.d/exim4 stop + fi + fi + ;; +esac + +#DEBHELPER# diff --git a/debian/exim4-daemon-heavy.dirs b/debian/exim4-daemon-heavy.dirs new file mode 100644 index 0000000..1971556 --- /dev/null +++ b/debian/exim4-daemon-heavy.dirs @@ -0,0 +1,4 @@ +/usr/lib/exim4 +/usr/sbin +/usr/share/man/man8 +/usr/lib/exim4/local_scan diff --git a/debian/exim4-daemon-heavy.docs b/debian/exim4-daemon-heavy.docs new file mode 100644 index 0000000..919678b --- /dev/null +++ b/debian/exim4-daemon-heavy.docs @@ -0,0 +1,3 @@ +EDITME.exim4-heavy +contrib/local-scan-perl/localscan-install.html +debian/README.local_scan-perl diff --git a/debian/exim4-daemon-heavy.install b/debian/exim4-daemon-heavy.install new file mode 100644 index 0000000..d74aa36 --- /dev/null +++ b/debian/exim4-daemon-heavy.install @@ -0,0 +1 @@ +contrib/local-scan-perl/*so usr/lib/exim4/local_scan diff --git a/debian/exim4-daemon-heavy.links b/debian/exim4-daemon-heavy.links new file mode 100644 index 0000000..4bc0920 --- /dev/null +++ b/debian/exim4-daemon-heavy.links @@ -0,0 +1,16 @@ +usr/share/man/man8/exim.8.gz usr/share/man/man8/exim4.8.gz +usr/sbin/exim4 usr/lib/exim4/exim4 +usr/sbin/exim4 usr/lib/sendmail +usr/sbin/exim4 usr/sbin/sendmail +usr/sbin/exim4 usr/sbin/runq +usr/sbin/exim4 usr/sbin/rmail +usr/sbin/exim4 usr/sbin/rsmtp +usr/sbin/exim4 usr/bin/mailq +usr/sbin/exim4 usr/bin/newaliases +usr/share/man/man8/exim.8.gz usr/share/man/man8/sendmail.8.gz +usr/share/man/man8/exim.8.gz usr/share/man/man8/runq.8.gz +usr/share/man/man8/exim.8.gz usr/share/man/man8/rmail.8.gz +usr/share/man/man8/exim.8.gz usr/share/man/man8/rsmtp.8.gz +usr/share/man/man8/exim.8.gz usr/share/man/man8/mailq.8.gz +usr/share/man/man8/exim.8.gz usr/share/man/man8/newaliases.8.gz +usr/share/doc/exim4-base/changelog.gz usr/share/doc/exim4-daemon-heavy/changelog.gz diff --git a/debian/exim4-daemon-heavy.postinst b/debian/exim4-daemon-heavy.postinst new file mode 100644 index 0000000..f76328a --- /dev/null +++ b/debian/exim4-daemon-heavy.postinst @@ -0,0 +1,27 @@ +#!/bin/sh + +set -e + +. /usr/share/debconf/confmodule + +case "$1" in + configure) + + # needed for woody: "start" will fail on dpkg-reconfigure because + # daemon is already running. + # Afaik this has changed, dpkg-reconfigure from sid/sarge will call + # prerm on reconfigure. + # || true is needed for succesfull installation with configtype 'none' + if [ -x /etc/init.d/exim4 ]; then + if [ -x /usr/sbin/invoke-rc.d ]; then + invoke-rc.d exim4 start || invoke-rc.d exim4 reload || true + else + /etc/init.d/exim4 start || /etc/init.d/exim4 reload || true + fi + fi + db_stop + + ;; +esac + +#DEBHELPER# diff --git a/debian/exim4-daemon-heavy.prerm b/debian/exim4-daemon-heavy.prerm new file mode 100644 index 0000000..75c380b --- /dev/null +++ b/debian/exim4-daemon-heavy.prerm @@ -0,0 +1,17 @@ +#!/bin/sh + +set -e + +case "$1" in + remove|upgrade) + if [ -x /etc/init.d/exim4 ]; then + if [ -x /usr/sbin/invoke-rc.d ]; then + invoke-rc.d exim4 stop + else + /etc/init.d/exim4 stop + fi + fi + ;; +esac + +#DEBHELPER# diff --git a/debian/exim4-daemon-light.dirs b/debian/exim4-daemon-light.dirs new file mode 100644 index 0000000..45e1018 --- /dev/null +++ b/debian/exim4-daemon-light.dirs @@ -0,0 +1,3 @@ +/usr/lib/exim4 +/usr/sbin +/usr/share/man/man8 diff --git a/debian/exim4-daemon-light.docs b/debian/exim4-daemon-light.docs new file mode 100644 index 0000000..53db684 --- /dev/null +++ b/debian/exim4-daemon-light.docs @@ -0,0 +1 @@ +EDITME.exim4-light diff --git a/debian/exim4-daemon-light.links b/debian/exim4-daemon-light.links new file mode 100644 index 0000000..52bf604 --- /dev/null +++ b/debian/exim4-daemon-light.links @@ -0,0 +1,16 @@ +usr/share/man/man8/exim.8.gz usr/share/man/man8/exim4.8.gz +usr/sbin/exim4 usr/lib/exim4/exim4 +usr/sbin/exim4 usr/lib/sendmail +usr/sbin/exim4 usr/sbin/sendmail +usr/sbin/exim4 usr/sbin/runq +usr/sbin/exim4 usr/sbin/rmail +usr/sbin/exim4 usr/sbin/rsmtp +usr/sbin/exim4 usr/bin/mailq +usr/sbin/exim4 usr/bin/newaliases +usr/share/man/man8/exim.8.gz usr/share/man/man8/sendmail.8.gz +usr/share/man/man8/exim.8.gz usr/share/man/man8/runq.8.gz +usr/share/man/man8/exim.8.gz usr/share/man/man8/rmail.8.gz +usr/share/man/man8/exim.8.gz usr/share/man/man8/rsmtp.8.gz +usr/share/man/man8/exim.8.gz usr/share/man/man8/mailq.8.gz +usr/share/man/man8/exim.8.gz usr/share/man/man8/newaliases.8.gz +usr/share/doc/exim4-base/changelog.gz usr/share/doc/exim4-daemon-light/changelog.gz diff --git a/debian/exim4-daemon-light.postinst b/debian/exim4-daemon-light.postinst new file mode 100644 index 0000000..f76328a --- /dev/null +++ b/debian/exim4-daemon-light.postinst @@ -0,0 +1,27 @@ +#!/bin/sh + +set -e + +. /usr/share/debconf/confmodule + +case "$1" in + configure) + + # needed for woody: "start" will fail on dpkg-reconfigure because + # daemon is already running. + # Afaik this has changed, dpkg-reconfigure from sid/sarge will call + # prerm on reconfigure. + # || true is needed for succesfull installation with configtype 'none' + if [ -x /etc/init.d/exim4 ]; then + if [ -x /usr/sbin/invoke-rc.d ]; then + invoke-rc.d exim4 start || invoke-rc.d exim4 reload || true + else + /etc/init.d/exim4 start || /etc/init.d/exim4 reload || true + fi + fi + db_stop + + ;; +esac + +#DEBHELPER# diff --git a/debian/exim4-daemon-light.prerm b/debian/exim4-daemon-light.prerm new file mode 100644 index 0000000..75c380b --- /dev/null +++ b/debian/exim4-daemon-light.prerm @@ -0,0 +1,17 @@ +#!/bin/sh + +set -e + +case "$1" in + remove|upgrade) + if [ -x /etc/init.d/exim4 ]; then + if [ -x /usr/sbin/invoke-rc.d ]; then + invoke-rc.d exim4 stop + else + /etc/init.d/exim4 stop + fi + fi + ;; +esac + +#DEBHELPER# diff --git a/debian/exim4.links b/debian/exim4.links new file mode 100644 index 0000000..9602836 --- /dev/null +++ b/debian/exim4.links @@ -0,0 +1 @@ +usr/share/doc/exim4-base usr/share/doc/exim4 diff --git a/debian/eximon4.dirs b/debian/eximon4.dirs new file mode 100644 index 0000000..802fe2e --- /dev/null +++ b/debian/eximon4.dirs @@ -0,0 +1,2 @@ +usr/sbin +usr/lib/exim4 diff --git a/debian/eximon4.manpages b/debian/eximon4.manpages new file mode 100644 index 0000000..4f0a832 --- /dev/null +++ b/debian/eximon4.manpages @@ -0,0 +1 @@ +debian/manpages/eximon.8 diff --git a/debian/eximonconf-patch b/debian/eximonconf-patch new file mode 100644 index 0000000..2b00af7 --- /dev/null +++ b/debian/eximonconf-patch @@ -0,0 +1,7 @@ +--- exim_monitor/EDITME 2002-07-22 09:59:52.000000000 +0100 ++++ config-eximon 2002-09-03 11:51:20.000000000 +0100 +@@ -1,3 +1,4 @@ ++# -*- makefile -*- + ################################################## + # The Exim Monitor # + ################################################## diff --git a/debian/ip-up.d b/debian/ip-up.d new file mode 100644 index 0000000..dea0e3b --- /dev/null +++ b/debian/ip-up.d @@ -0,0 +1,9 @@ +#!/bin/sh +[ -x /usr/lib/exim4/exim4 ] || exit 0 + +[ -f /etc/default/exim4 ] && . /etc/default/exim4 + +if [ "x${QUEUERUNNER}" != "xno" ] ; then +# Flush exim queue + /usr/sbin/exim4 -qf ${QUEUERUNNEROPTIONS} ${COMMONOPTIONS} +fi diff --git a/debian/manpages/exicyclog.8 b/debian/manpages/exicyclog.8 new file mode 100644 index 0000000..dedc066 --- /dev/null +++ b/debian/manpages/exicyclog.8 @@ -0,0 +1,67 @@ +.\" Hey, EMACS: -*- nroff -*- +.\" First parameter, NAME, should be all caps +.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection +.\" other parameters are allowed: see man(7), man(1) +.TH EXICYCLOG 8 "December 4, 2002" +.\" Please adjust this date whenever revising the manpage. +.\" +.\" Some roff macros, for reference: +.\" .nh disable hyphenation +.\" .hy enable hyphenation +.\" .ad l left justify +.\" .ad b justify to both left and right margins +.\" .nf disable filling +.\" .fi enable filling +.\" .br insert line break +.\" .sp <n> insert n+1 empty lines +.\" for manpage-specific macros, see man(7) +.SH NAME +exicyclog \- Cycle exim's logfiles +.SH SYNOPSIS +.B eximcyclog +.SH DESCRIPTION +The +.B exicyclog +script can be used to cycle (rotate) +.I mainlog +and +.I rejectlog +files. +This is not necessary if only syslog is being used. +Some operating systems have their own standard mechanisms for log cycling, +and these can be used instead of +.B exicyclog +if preferred. + +Each time +.B exicyclog +is run the file names get 'shuffled down' by one. +If the main log file name is mainlog (the default) then when +.B exicyclog +is run mainlog becomes mainlog.01, the previous mainlog.01 becomes mainlog.02 +and so on, up to a limit which is set in the script, and which defaults to 10. +Reject logs are handled similarly. + +If no mainlog file exists, the script does nothing. +Files that 'drop off' the end are deleted. +All files with numbers greater than 01 are compressed, using a compression +command which is configured by the COMPRESS_COMMAND setting in +Local/Makefile. +It is usual to run "exicyclog" daily from a root "crontab" entry of the +form + + 1 0 * * * su exim -c /usr/exim/bin/exicyclog + +assuming you have used the name 'exim' for the Exim user. +You can run +.B exicyclog +as root if you wish, but there is no need. + +.SH SEE ALSO +.BR exim (8), +/usr/share/doc/exim4-base/ + +.SH AUTHOR +This manual page was stitched together from spec.txt by +Andreas Metzler <ametzler at downhill.at.eu.org>, +for the Debian GNU/Linux system (but may be used by others). diff --git a/debian/manpages/exigrep.8 b/debian/manpages/exigrep.8 new file mode 100644 index 0000000..4de6422 --- /dev/null +++ b/debian/manpages/exigrep.8 @@ -0,0 +1,62 @@ +.\" Hey, EMACS: -*- nroff -*- +.\" First parameter, NAME, should be all caps +.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection +.\" other parameters are allowed: see man(7), man(1) +.TH EXIGREP 8 "December 4, 2002" +.\" Please adjust this date whenever revising the manpage. +.\" +.\" Some roff macros, for reference: +.\" .nh disable hyphenation +.\" .hy enable hyphenation +.\" .ad l left justify +.\" .ad b justify to both left and right margins +.\" .nf disable filling +.\" .fi enable filling +.\" .br insert line break +.\" .sp <n> insert n+1 empty lines +.\" for manpage-specific macros, see man(7) +.SH NAME +EXIGREP \- Search Exim's main log +.SH SYNOPSIS +.B exigrep +.I [-l] pattern [log file] ... + +.SH DESCRIPTION +The +.B exigrep +utility is a Perl script that searches one or more main log files for +entries that match a given pattern. +When it finds a match, it extracts all the log entries for the relevant +message, not just those that match the pattern. +Thus, +.B exigrep +can extract complete log entries for a given message, or all mail for a given +user, or for a given host, for example. + +The +.I -l +flag means 'literal', that is, treat all characters in the pattern as +standing for themselves. +Otherwise the pattern must be a Perl regular expression. +The pattern match is case-insensitive. +If no file names are given on the command line, the standard input is +read. + +If the location of a +.B zcat +command is known from the definition of ZCAT_COMMAND in Local/Makefile, +.B exigrep +automatically passes any file whose +name ends in COMPRESS_SUFFIX through +.B zcat +as it searches it. +.SH SEE ALSO +.BR exim (8), +.BR perlre (1), +/usr/share/doc/exim4-base/ + + +.SH AUTHOR +This manual page was stitched together from spec.txt by +Andreas Metzler <ametzler at downhill.at.eu.org>, +for the Debian GNU/Linux system (but may be used by others). diff --git a/debian/manpages/exim_checkaccess.8 b/debian/manpages/exim_checkaccess.8 new file mode 100644 index 0000000..1062af3 --- /dev/null +++ b/debian/manpages/exim_checkaccess.8 @@ -0,0 +1,73 @@ +.\" Hey, EMACS: -*- nroff -*- +.\" First parameter, NAME, should be all caps +.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection +.\" other parameters are allowed: see man(7), man(1) +.TH EXIM_CHECKACCESS 8 "December 4, 2002" +.\" Please adjust this date whenever revising the manpage. +.\" +.\" Some roff macros, for reference: +.\" .nh disable hyphenation +.\" .hy enable hyphenation +.\" .ad l left justify +.\" .ad b justify to both left and right margins +.\" .nf disable filling +.\" .fi enable filling +.\" .br insert line break +.\" .sp <n> insert n+1 empty lines +.\" for manpage-specific macros, see man(7) +.SH NAME +exim_checkaccess \- Check address acceptance from given IP +.SH SYNOPSIS +.B exim_checkaccess +.I IP-address email@address [more Exim options] + +.SH DESCRIPTION +.B Exim's +.I -bh +command line argument allows you to run a fake SMTP session with debugging +output, in order to check what Exim is doing when it is applying policy +controls to incoming SMTP mail. +However, not everybody is sufficiently familiar with the SMTP protocol to +be able to make full use of -bh, and sometimes you just want to answer the +question "Does this address have access?" without bothering with any +further details. + +The +.B exim_checkaccess +utility is a 'packaged' version of +.I -bh. +It takes two arguments, an IP address and an email address: + + exim_checkaccess 10.9.8.7 A.User@a.domain.example + +The utility runs a call to +.B Exim +with the -bh option, to test whether the given email address would be +accepted in a RCPT command in a TCP/IP connection from the host with the +given IP address. +The output of the utility is either the word 'accepted', or the SMTP error +response, for example: + + Rejected: + 550 Relay not permitted + +When running this test, the utility uses "<>" as the envelope sender address +for the MAIL command, but you can change this by providing additional options. +These are passed directly to the Exim command. +For example, to specify that the test is to be run with the sender address +"himself@there.example" you can use: + + exim_checkaccess 10.9.8.7 A.User@a.domain.example \ + -f himself@there.example + +Note that these additional Exim command line items must be given after the +two mandatory arguments. + +.SH SEE ALSO +.BR exim (8), +/usr/share/doc/exim4-base/ + +.SH AUTHOR +This manual page was stitched together from spec.txt by +Andreas Metzler <ametzler at downhill.at.eu.org>, +for the Debian GNU/Linux system (but may be used by others). diff --git a/debian/manpages/exim_convert4r4.8 b/debian/manpages/exim_convert4r4.8 new file mode 100644 index 0000000..e9029e1 --- /dev/null +++ b/debian/manpages/exim_convert4r4.8 @@ -0,0 +1,65 @@ +.\" Hey, EMACS: -*- nroff -*- +.\" First parameter, NAME, should be all caps +.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection +.\" other parameters are allowed: see man(7), man(1) +.TH EXIM_CONVERT4R4 8 "December 4, 2002" +.\" Please adjust this date whenever revising the manpage. +.\" +.\" Some roff macros, for reference: +.\" .nh disable hyphenation +.\" .hy enable hyphenation +.\" .ad l left justify +.\" .ad b justify to both left and right margins +.\" .nf disable filling +.\" .fi enable filling +.\" .br insert line break +.\" .sp <n> insert n+1 empty lines +.\" for manpage-specific macros, see man(7) +.SH NAME +exim_convert4r4 \- Convert Exim configuration from v3 to v4 format +.SH SYNOPSIS +.B exim_convert4r4 + +.SH DESCRIPTION +This script is provided to assist in updating Exim configuration files. +It reads an Exim 3 configuration file on the standard input, and writes a +modified file on the standard output. +It also writes comments about what it has done to the standard error file. +It assumes that the input is a valid Exim 3 configuration file. +A typical call to the conversion script might be + +.I exim_convert4r4 < /etc/exim/exim.conf > /etc/exim4/exim4.conf.new + +The output file +.B MUST +be checked and tested before trying to use it on a live system. +The conversion script is just an aid which does a lot of the "grunt work". +It does not guarantee to produce an Exim 4 configuration that behaves +exactly the same as the Exim 3 configuration it reads. + +Each option change in the new file is preceded by an identifying comment. +In fact, the conversion script tends to make quite a mess of your +configuration, and you should expect to go through it afterwards and tidy +it up by hand. + +Unless you are running a very straightforward configuration, the automatic +conversion is likely to generate a non-optimal configuration. +You should not only check it thoroughly, but also run as many tests as you +can, to ensure that it is working as you expect. +In particular, you should test address routing, using -bt and -bv, and the +policy controls, using -bh. +If possible, you should also do some live tests (i.e. send and receive +some messages) before putting Exim 4 into service. + +If you have a very complicated configuration, it is possible that +exim_convert4r4 will break it in some situations, which is why thorough +testing is strongly recommended. + +.SH SEE ALSO +.BR exim (8), +the files in /usr/share/doc/exim4-base/, especially Exim4.upgrade.gz + +.SH AUTHOR +This manual page was stitched together from Exim4.upgrade by +Andreas Metzler <ametzler at downhill.at.eu.org>, +for the Debian GNU/Linux system (but may be used by others). diff --git a/debian/manpages/exim_db.8 b/debian/manpages/exim_db.8 new file mode 100644 index 0000000..1c823fd --- /dev/null +++ b/debian/manpages/exim_db.8 @@ -0,0 +1,162 @@ +.\" Hey, EMACS: -*- nroff -*- +.\" First parameter, NAME, should be all caps +.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection +.\" other parameters are allowed: see man(7), man(1) +.TH EXIM_DB 8 "December 4, 2002" +.\" Please adjust this date whenever revising the manpage. +.\" +.\" Some roff macros, for reference: +.\" .nh disable hyphenation +.\" .hy enable hyphenation +.\" .ad l left justify +.\" .ad b justify to both left and right margins +.\" .nf disable filling +.\" .fi enable filling +.\" .br insert line break +.\" .sp <n> insert n+1 empty lines +.\" for manpage-specific macros, see man(7) +.SH NAME +exim_db \- Manage Exim's hint databases (exim_dumpdb, exim_fixdb, exim_tidydb) +.SH SYNOPSIS +.B exim_dumpdb +.I " spooldir" " database" +.br +.B exim_fixdb +.I " spooldir" " database" +.br +.B exim_tidydb +.I [-f] [-t time] " spooldir" " database" + +.SH DESCRIPTION +Three utility programs are provided for maintaining the DBM files that +Exim uses to contain its delivery hint information. +Each program requires two arguments. +The first specifies the name of Exim's spool directory, and the second is +the name of the database it is to operate on. +These are as follows: +.TP +.B retry +the database of retry information +.TP +.B wait-<transport name> +databases of information about messages waiting for remote hosts +.TP +.B misc +other hints data (for example, for serializing ETRN runs) + +The entire contents of a database are written to the standard output by the +.B exim_dumpdb +program, which has no options or arguments other than the spool +and database names. +For example, to dump the retry database: + +.I exim_dumpdb /var/spool/exim retry + +Two lines of output are produced for each entry: +.nf + T:mail.ref.example:192.168.242.242 146 77 Connection refused + 31-Oct-1995 12:00:12 02-Nov-1995 12:21:39 02-Nov-1995 20:21:39 * + +.fi +The first item on the first line is the key of the record. +It starts with one of the letters R, or T, depending on whether it refers +to a routing or transport retry. +For a local delivery, the next part is the local address; for a remote +delivery it is the name of the remote host, followed by its failing IP +address (unless "no_retry_include_ip_address" is set on the smtp +transport). +Then there follows an error code, an additional error code, and a +textual description of the error. + +The three times on the second line are the time of first failure, the time of +the last delivery attempt, and the computed time for the next attempt. +The line ends with an asterisk if the cutoff time for the last retry rule +has been exceeded. + +Each output line from +.B exim_dumpdb +for the +.I wait-"xxx +databases consists of a host name followed by a list of ids for messages +that are or were waiting to be delivered to that host. +If there are a very large number for any one host, continuation records, +with a sequence number added to the host name, may be seen. +The data in these records is often out of date, because a message may be +routed to several alternative hosts, and Exim makes no effort to keep +crossreferences. + +The +.B exim_tidydb +utility program is used to tidy up the contents of the hints databases. +If run with no options, it removes all records from a database that are +more than 30 days old. +The cutoff date can be altered by means of the -t option, which must be +followed by a time. +For example, to remove all records older than a week from the retry +database: + +.I exim_tidydb -t 7d /var/spool/exim retry + +Both the +.I wait-xxx +and +.I retry +databases contain items that involve message ids. +In the former these appear as data in records keyed by host - they were +messages that were waiting for that host - and in the latter they are the +keys for retry information for messages that have suffered certain types +of error. +When "exim_tidydb" is run, a check is made to ensure that message ids in +database records are those of messages that are still on the queue. +Message ids for messages that no longer exist are removed from "wait-"xxx +records, and if this leaves any records empty, they are deleted. +For the "retry" database, records whose keys are non-existent message +ids are removed. +The +.B exim_tidydb +utility outputs comments on the standard output whenever it removes +information from the database. + +Removing records from a DBM file does not normally make the file smaller, but +all the common DBM libraries are able to re-use the space that is released. +It is therefore suggested that +.B exim_tidydb +be run periodically on all the hints databases, but at a quiet time of day, +because it requires a database to be locked (and therefore inaccessible to +Exim) while it does its work. + +The +.B exim_fixdb +program is a utility for interactively modifying databases. +Its main use is for testing Exim, but it might also be occasionally useful +for getting round problems in a live system. +It has no options, and its interface is somewhat crude. +On entry, it prompts for input with a right angle-bracket. +A key of a database record can then be entered, and the data for that +record is displayed. + +If 'd' is typed at the next prompt, the entire record is deleted. +For all except the +.I retry +database, that is the only operation that can be carried out. +For the +.I retry +database, each field is output preceded by a number, and data for individual +fields can be changed by typing the field number followed by new data, for +example: + + > 4 951102:1000 + +resets the time of the next delivery attempt. +Time values are given as a sequence of digit pairs for year, month, day, +hour, and minute. +Colons can be used as optional separators. + +.SH SEE ALSO +.BR exim (8), +/usr/share/doc/exim4-base/ + +.SH AUTHOR +This manual page was stitched together from spec.txt by +Andreas Metzler <ametzler at downhill.at.eu.org>, +for the Debian GNU/Linux system (but may be used by others). diff --git a/debian/manpages/exim_dbmbuild.8 b/debian/manpages/exim_dbmbuild.8 new file mode 100644 index 0000000..1e68493 --- /dev/null +++ b/debian/manpages/exim_dbmbuild.8 @@ -0,0 +1,98 @@ +.\" Hey, EMACS: -*- nroff -*- +.\" First parameter, NAME, should be all caps +.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection +.\" other parameters are allowed: see man(7), man(1) +.TH EXIM_DBMBUILD 8 "December 4, 2002" +.\" Please adjust this date whenever revising the manpage. +.\" +.\" Some roff macros, for reference: +.\" .nh disable hyphenation +.\" .hy enable hyphenation +.\" .ad l left justify +.\" .ad b justify to both left and right margins +.\" .nf disable filling +.\" .fi enable filling +.\" .br insert line break +.\" .sp <n> insert n+1 empty lines +.\" for manpage-specific macros, see man(7) +.SH NAME +exim_dbmbuild \- Build a DBM file. +.SH SYNOPSIS +.B exim_dbmbuild +.I [-nolc] [-nozero] [-noduperr] [-nowarn] inputfile|- outputfile + +.SH DESCRIPTION +The +.B exim_dbmbuild +program reads an input file containing keys and data in +the format used by the +.I lsearch +lookup (see section 9.1). +It writes a DBM file using the lower-cased alias names as keys and the +remainder of the information as data. +The lower-casing can be prevented by calling the program with the +.I -nolc +option. + +A terminating zero is included as part of the key string. +This is expected by the dbm lookup type. +However, if the option +.I -nozero +is given, +.B exim_dbmbuild +creates files without terminating zeroes in either the key strings or the +data strings. +The +.I dbmnz +lookup type can be used with such files. + +The program requires two arguments: the name of the input file (which can +be a single hyphen to indicate the standard input), and the name of the +output file. +It creates the output under a temporary name, and then renames it if all +went well. +If the native DB interface is in use (USE_DB is set in a compile-time +configuration file - this is common in free versions of Unix) the two file +names must be different, because in this mode the Berkeley DB functions +create a single output file using exactly the name given. +For example, + + exim_dbmbuild /etc/aliases /etc/aliases.db + +reads the system alias file and creates a DBM version of it in +/etc/aliases.db. + +In systems that use the +.I ndbm +routines (mostly proprietary versions of Unix), two files are used, with the +suffixes .dir and .pag. +In this environment, the suffixes are added to the second argument of +.B exim_dbmbuild, +so it can be the same as the first. +This is also the case when the Berkeley functions are used in +compatibility mode (though this is not recommended), because in that case +it adds a .db suffix to the file name. + +If a duplicate key is encountered, the program outputs a warning, and when +it finishes, its return code is 1 rather than zero, unless the +.I -noduperr +option is used. +By default, only the first of a set of duplicates is used - this makes it +compatible with lsearch lookups. +There is an option +.I -lastdup +which causes it to use the data for the last duplicate instead. +There is also an option +.I -nowarn, +which stops it listing duplicate keys to "stderr". +For other errors, where it doesn't actually make a new file, the return +code is 2. + +.SH SEE ALSO +.BR exim (8), +/usr/share/doc/exim4-base/ + +.SH AUTHOR +This manual page was stitched together from spec.txt by +Andreas Metzler <ametzler at downhill.at.eu.org>, +for the Debian GNU/Linux system (but may be used by others). diff --git a/debian/manpages/exim_lock.8 b/debian/manpages/exim_lock.8 new file mode 100644 index 0000000..0c49207 --- /dev/null +++ b/debian/manpages/exim_lock.8 @@ -0,0 +1,130 @@ +.\" Hey, EMACS: -*- nroff -*- +.\" First parameter, NAME, should be all caps +.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection +.\" other parameters are allowed: see man(7), man(1) +.TH EXIM_LOCK 8 "December 4, 2002" +.\" Please adjust this date whenever revising the manpage. +.\" +.\" Some roff macros, for reference: +.\" .nh disable hyphenation +.\" .hy enable hyphenation +.\" .ad l left justify +.\" .ad b justify to both left and right margins +.\" .nf disable filling +.\" .fi enable filling +.\" .br insert line break +.\" .sp <n> insert n+1 empty lines +.\" for manpage-specific macros, see man(7) +.SH NAME +exim_lock \- Mailbox maintenance +.SH SYNOPSIS +.B exim_lock +.RI [ options ] mailbox-file + +.SH DESCRIPTION +The +.B exim_lock +utility locks a mailbox file using the same algorithm as Exim. +For a discussion of locking issues, see section 25.2. +.B "Exim_lock" +can be used to prevent any modification of a mailbox by Exim or a user +agent while investigating a problem. +The utility requires the name of the file as its first argument. +If the locking is successful, the second argument is run as a command +(using C's "system()" function); if there is no second argument, the value +of the SHELL environment variable is used; if this is unset or empty, +/bin/sh is run. +When the command finishes, the mailbox is unlocked and the utility ends. +The following options are available: +.TP +.I -fcntl +Use "fcntl()" locking on the open mailbox. +.TP +.I -interval +This must be followed by a number, which is a number of seconds; it +sets the interval to sleep between retries (default 3). +.TP +.I -lockfile +Create a lock file before opening the mailbox. +.TP +.I -mbx +Lock the mailbox using MBX rules. +.TP +.I -q +Suppress verification output. +.TP +.I -retries +This must be followed by a number; it sets the number of times to try +to get the lock (default 10). +.TP +.I -timeout +This must be followed by a number, which is a number of seconds; it +sets a timeout to be used with a blocking "fcntl()" lock. +If it is not set (the default), a non-blocking call is used. +.TP +.I -v +Generate verbose output. + +If none of +.I -fcntl, -lockfile +or +.I -mbx +are given, the default is to create a lock file and also use "fcntl()" locking +on the mailbox, which is the same as +.B Exim's +default. +The use of +.I -fcntl +requires that the file be writeable; the use +of +.I -lockfile +requires that the directory containing the file be writeable. +Locking by lock file does not last for ever; Exim assumes that a lock file +is expired if it is more than 30 minutes old. + +The +.I -mbx +option is mutually exclusive with +.I -fcntl. +It causes a shared lock to be taken out on the open mailbox, and an +exclusive lock on the file /tmp/.n.m where n and m are the device number +and inode number of the mailbox file. +When the locking is released, if an exclusive lock can be obtained for the +mailbox, the file in /tmp is deleted. + +The default output contains verification of the locking that takes place. +The +.I -v +option causes some additional information to be given. +The +.I -q +option suppresses all output except error messages. +.PP +A command such as + + exim_lock /var/spool/mail/spqr + +runs an interactive shell while the file is locked, whereas + + exim_lock -q /var/spool/mail/spqr <<End + <some commands> + End + +runs a specific non-interactive sequence of commands while the file is +locked, suppressing all verification output. +A single command can be run by a command such as + + exim_lock -q /var/spool/mail/spqr \ + "cp /var/spool/mail/spqr /some/where" + +Note that if a command is supplied, it must be entirely contained within +the second argument - hence the quotes. + +.SH SEE ALSO +.BR exim (8), +/usr/share/doc/exim4-base/ + +.SH AUTHOR +This manual page was stitched together from spec.txt by +Andreas Metzler <ametzler at downhill.at.eu.org>, +for the Debian GNU/Linux system (but may be used by others). diff --git a/debian/manpages/eximon.8 b/debian/manpages/eximon.8 new file mode 100644 index 0000000..897cbe7 --- /dev/null +++ b/debian/manpages/eximon.8 @@ -0,0 +1,43 @@ +.\" Hey, EMACS: -*- nroff -*- +.\" First parameter, NAME, should be all caps +.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection +.\" other parameters are allowed: see man(7), man(1) +.TH EXIMON 8 "December 4, 2002" +.\" Please adjust this date whenever revising the manpage. +.\" +.\" Some roff macros, for reference: +.\" .nh disable hyphenation +.\" .hy enable hyphenation +.\" .ad l left justify +.\" .ad b justify to both left and right margins +.\" .nf disable filling +.\" .fi enable filling +.\" .br insert line break +.\" .sp <n> insert n+1 empty lines +.\" for manpage-specific macros, see man(7) +.SH NAME +eximon \- Monitor Exim +.SH SYNOPSIS +.B eximon + +.SH DESCRIPTION +The Exim monitor is an application which displays in an X window information +about the state of +.B Exim's +queue and what +.B Exim is doing. +An admin user can perform certain operations on messages from this GUI +interface; however all such facilities are also available from the command +line, and indeed, the monitor itself makes use of the command line to +perform any actions requested. + +.SH SEE ALSO +.BR exim (8), +/usr/share/doc/exim4-base/ +Eximon is documented extensivly in +.B specification of the exim mail transfer agent. + +.SH AUTHOR +This manual page was stitched together from spec.txt by +Andreas Metzler <ametzler at downhill.at.eu.org>, +for the Debian GNU/Linux system (but may be used by others). diff --git a/debian/manpages/exinext.8 b/debian/manpages/exinext.8 new file mode 100644 index 0000000..d6d6613 --- /dev/null +++ b/debian/manpages/exinext.8 @@ -0,0 +1,66 @@ +.\" Hey, EMACS: -*- nroff -*- +.\" First parameter, NAME, should be all caps +.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection +.\" other parameters are allowed: see man(7), man(1) +.TH EXINEXT 8 "December 4, 2002" +.\" Please adjust this date whenever revising the manpage. +.\" +.\" Some roff macros, for reference: +.\" .nh disable hyphenation +.\" .hy enable hyphenation +.\" .ad l left justify +.\" .ad b justify to both left and right margins +.\" .nf disable filling +.\" .fi enable filling +.\" .br insert line break +.\" .sp <n> insert n+1 empty lines +.\" for manpage-specific macros, see man(7) +.SH NAME +eximnext \- Finding individual retry times +.SH SYNOPSIS +.B eximnext +.I address|message-id + +.SH DESCRIPTION +A utility called +.B exinext +(mostly a Perl script) provides the ability to fish specific information +out of the retry database. +Given a mail domain (or a complete address), it looks up the hosts for +that domain, and outputs any retry information for the hosts or for the +domain. +At present, the retry information is obtained by running +.B exim_dumpdb +(see below) and postprocessing the output. +For example: + + exinext piglet@milne.fict.example + kanga.milne.fict.example:192.168.8.1 error 146: Connection refused + first failed: 21-Feb-1996 14:57:34 + last tried: 21-Feb-1996 14:57:34 + next try at: 21-Feb-1996 15:02:34 + roo.milne.fict.example:192.168.8.3 error 146: Connection refused + first failed: 20-Jan-1996 13:12:08 + last tried: 21-Feb-1996 11:42:03 + next try at: 21-Feb-1996 19:42:03 + past final cutoff time + +You can also give +.B exinext +a local part, without a domain, and it will give any retry information for +that local part in your default domain. +A message id can be used to obtain retry information pertaining to a +specific message. +This exists only when an attempt to deliver a message to a remote host +suffers a message-specific error (see section 42.2). +.B exinext +is not particularly efficient, but then it isn't expected to be run very often. + +.SH SEE ALSO +.BR exim (8), +/usr/share/doc/exim4-base/ + +.SH AUTHOR +This manual page was stitched together from spec.txt by +Andreas Metzler <ametzler at downhill.at.eu.org>, +for the Debian GNU/Linux system (but may be used by others). diff --git a/debian/manpages/exiqgrep.8 b/debian/manpages/exiqgrep.8 new file mode 100644 index 0000000..e0220b9 --- /dev/null +++ b/debian/manpages/exiqgrep.8 @@ -0,0 +1,81 @@ +.\" Hey, EMACS: -*- nroff -*- +.\" First parameter, NAME, should be all caps +.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection +.\" other parameters are allowed: see man(7), man(1) +.TH EXIQGREP 8 "February 14, 2003" +.\" Please adjust this date whenever revising the manpage. +.\" +.\" Some roff macros, for reference: +.\" .nh disable hyphenation +.\" .hy enable hyphenation +.\" .ad l left justify +.\" .ad b justify to both left and right margins +.\" .nf disable filling +.\" .fi enable filling +.\" .br insert line break +.\" .sp <n> insert n+1 empty lines +.\" for manpage-specific macros, see man(7) +.SH NAME +exiqgrep \- Search in the exim queue +.SH SYNOPSIS +.B exiqgrep +.I [-a] [-c] + +.SH DESCRIPTION +The +.B exiqgrep +utility is a Perl script which offers possibilities to grep in the +exim queue output. Unlike exiqsumm, it invokes exim -bpu itself and +does not need to be invoked in a pipe. + +.SH OPTIONS +.TP 10 +\fB-h\fR +Print help +.TP +\fB-f <regexp>\fR +Match sender address (field is "< >" wrapped) +.TP +\fB-r <regexp>\fR +Match recipient address +.TP +\fB-s <regexp>\fR +Match against the site field from long output +.TP +\fB-y <seconds>\fR +Message younger than +.TP +\fB-o <seconds>\fR +Message older than +.TP +\fB-z\fR +Frozen messages only (exclude non-frozen) +.TP +\fB-x\fR +Non-frozen messages only (exclude frozen) +.TP +\fB-c\fR +Display match count +.TP +\fB-l\fR +Long Format [Default] +.TP +\fB-i\fR +Message IDs only +.TP +\fB-b\fR +Brief Format +.TP +\fB-R\fR +Reverse order + +.SH SEE ALSO +.BR exim (8), +/usr/share/doc/exim4-base/ + +.SH AUTHOR +This manual page was stitched together from the source code by Marc +Haber <mh+debian-packages@zugschlus.de>, using the exiqsumm man page by +Andreas Metzler <ametzler at downhill.at.eu.org>, +for the Debian GNU/Linux system (but may be used by others). + diff --git a/debian/manpages/exiqsumm.8 b/debian/manpages/exiqsumm.8 new file mode 100644 index 0000000..ec1c3ce --- /dev/null +++ b/debian/manpages/exiqsumm.8 @@ -0,0 +1,67 @@ +.\" Hey, EMACS: -*- nroff -*- +.\" First parameter, NAME, should be all caps +.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection +.\" other parameters are allowed: see man(7), man(1) +.TH EXIQSUMM 8 "December 4, 2002" +.\" Please adjust this date whenever revising the manpage. +.\" +.\" Some roff macros, for reference: +.\" .nh disable hyphenation +.\" .hy enable hyphenation +.\" .ad l left justify +.\" .ad b justify to both left and right margins +.\" .nf disable filling +.\" .fi enable filling +.\" .br insert line break +.\" .sp <n> insert n+1 empty lines +.\" for manpage-specific macros, see man(7) +.SH NAME +exiqsumm \- Summarising the queue +.SH SYNOPSIS +.B exiqsumm +.I [-a] [-c] + +.SH DESCRIPTION +The +.B exiqsumm +utility is a Perl script which reads the output of +.I exim -bp +and produces a summary of the messages on the queue. +Thus, you use it by running a command such as + + exim -bp | exiqsumm + +The output consists of one line for each domain that has messages waiting +for it, as in the following example: + + 3 2322 74m 66m msn.com.example + +This lists the number of messages for the domain, their total volume, and +the length of time that the oldest and the newest messages have been +waiting. +By default the output is sorted on the domain name, but +.B exiqsumm +has the options +.I -a +and +.I -c, +which cause the output to be sorted by oldest message and by count of +messages, respectively. + +The output of +.I exim -bp +contains the original addresses in the message, so this also applies to +the output from +.B exiqsumm. +No domains from addresses generated by aliasing or forwarding are included +(unless the "one_time" option of the redirect router has been used to +convert them into 'top level' addresses). + +.SH SEE ALSO +.BR exim (8), +/usr/share/doc/exim4-base/ + +.SH AUTHOR +This manual page was stitched together from spec.txt by +Andreas Metzler <ametzler at downhill.at.eu.org>, +for the Debian GNU/Linux system (but may be used by others). diff --git a/debian/manpages/exiwhat.8 b/debian/manpages/exiwhat.8 new file mode 100644 index 0000000..50000ab --- /dev/null +++ b/debian/manpages/exiwhat.8 @@ -0,0 +1,95 @@ +.\" Hey, EMACS: -*- nroff -*- +.\" First parameter, NAME, should be all caps +.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection +.\" other parameters are allowed: see man(7), man(1) +.TH EXIWHAT 8 "December 4, 2002" +.\" Please adjust this date whenever revising the manpage. +.\" +.\" Some roff macros, for reference: +.\" .nh disable hyphenation +.\" .hy enable hyphenation +.\" .ad l left justify +.\" .ad b justify to both left and right margins +.\" .nf disable filling +.\" .fi enable filling +.\" .br insert line break +.\" .sp <n> insert n+1 empty lines +.\" for manpage-specific macros, see man(7) +.SH NAME +eximwhat \- Finding out what Exim processes are doing +.SH SYNOPSIS +.B eximwhat + +.SH DESCRIPTION +On operating systems that can restart a system call after receiving a +signal (most modern OS), an +.B Exim +process responds to the SIGUSR1 signal by writing a line describing what +it is doing to the file exim-process.info in the Exim spool directory. +The +.B exiwhat +script sends the signal to all +.B Exim +processes it can find, having first emptied the file. +It then waits for one second to allow the +.B Exim +processes to react before displaying the results. +In order to run +.B exiwhat +successfully you have to have sufficient privilege to send the signal to +the +.B Exim +processes, so it is normally run as root. + +Unfortunately, the +.B ps +command which +.B exiwhat +uses to find +.B Exim +processes varies in different operating systems. +Not only are different options used, but the format of the output is +different. +For this reason, there are some system configuration options that configure +exactly how +.B exiwhat +works. +If it doesn't seem to be working for you, check the following compile-time +options: +.TP +.I EXIWHAT_PS_CMD +the command for running "ps" +.TP +.I EXIWHAT_PS_ARG +the argument for "ps" +.TP +.I EXIWHAT_EGREP_ARG +the argument for "egrep" to select from "ps" output +.TP +.I EXIWHAT_KILL_ARG +the argument for the "kill" command +.PP +An example of typical output from +.B exiwhat +is + +.nf + 164 daemon: -q1h, listening on port 25 +10483 running queue: waiting for 0tAycK-0002ij-00 (10492) +10492 delivering 0tAycK-0002ij-00 to mail.ref.example [10.19.42.42] + (editor@ref.example) +10592 handling incoming call from [192.168.243.242] +10628 accepting a local non-SMTP message +.fi + +The first number in the output line is the process number. +The third line has been split here, in order to fit it on the page. + +.SH SEE ALSO +.BR exim (8), +/usr/share/doc/exim4-base/ + +.SH AUTHOR +This manual page was stitched together from spec.txt by +Andreas Metzler <ametzler at downhill.at.eu.org>, +for the Debian GNU/Linux system (but may be used by others). diff --git a/debian/manpages/update-exim4.conf.8 b/debian/manpages/update-exim4.conf.8 new file mode 100644 index 0000000..589bc1b --- /dev/null +++ b/debian/manpages/update-exim4.conf.8 @@ -0,0 +1,134 @@ +.\" Hey, EMACS: -*- nroff -*- +.\" First parameter, NAME, should be all caps +.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection +.\" other parameters are allowed: see man(7), man(1) +.TH UPDATE-EXIM4.CONF 8 "February 28, 2003" EXIM4 +.\" Please adjust this date whenever revising the manpage. +.\" +.\" Some roff macros, for reference: +.\" .nh disable hyphenation +.\" .hy enable hyphenation +.\" .ad l left justify +.\" .ad b justify to both left and right margins +.\" .nf disable filling +.\" .fi enable filling +.\" .br insert line break +.\" .sp <n> insert n+1 empty lines +.\" for manpage-specific macros, see man(7) +.SH NAME +update-exim4.conf \- Generate exim4 configuration files. +.SH SYNOPSIS +.B update-exim4.conf [-v|--verbose] [-h|--help] [--keepcomments] [--removecomments] [-o|--output file] + +.SH OPTIONS +.TP +.I -v|--verbose +Enable verbose mode, tell about ignored, user modified files +.TP +.I -h|--help +Show short help message and exit +.TP +.I --keepcomments +Do not remove comment lines from the output file. +.TP +.I --removecomments +Remove comment lines from the output file. [Default] +.TP +.I -o|--output file +Write output to file instead of /var/lib/exim4/config.autogenerated. Be careful, +.B update-exim4.conf +nevertheless changes files in /etc/exim4/conf.d! + +.SH DESCRIPTION +The script +.B update-exim4.conf +generates the main configuration files +.I /var/lib/exim4/config.autogenerated +for +.B Exim v4 +by merging the data in the template files in the +.I /etc/exim4/conf.d +directory tree and +.I /etc/exim4/update-exim4.conf.conf +to the output file +.I /var/lib/exim4/config.autogenerated. +Additionally the files +.I /var/lib/exim4/masquerade +and +.I /var/lib/exim4/email_addresses +which contain rewriting rules for evaluation of /etc/email-addresses and +for masquerading satellite-systems are managed by this script. +.PP +.B update-exim4.conf +sorts the files in the subdirectories main, acl, router, transport, retry, +rewrite and auth of /etc/exim4/conf.d in the lexical sort order, concatenates +them and replaces the patterns DEBCONFsomethingDEBCONF. +It does not change the other contents of these files. +This makes it very simple to make small changes to the configuration and +still have the benefits of debconf. + +On the other hand if you don't want to manage exim4.conf with debconf +set +.I dc_eximconfig_configtype=none +in /etc/exim4/update-exim4.conf.conf and place your own handcrafted version +in /etc/exim4/exim4.conf. +- Exim will use this file if it exists and ignore the autogenerated one. + +.B update-exim4.conf +exits silently and does nothing if /etc/exim4/exim4.conf exists. + +.B update-exim4.conf +ignores all files in the conf.d directory that have a filename which +does not consist only of letters, numbers, underscores and hyphens +([:alnum:]_-), similar to +.B run-parts(8). +For easy interaction with packages extending Exim additionally +/etc/exim4/conf.d/foo/bar is ignored if +/etc/exim4/conf.d/foo/bar.disabled exists! + +If +.B update-exim4.conf +is called without the option -o it checks the validity of the +freshly generated configurationfile and exits with an error instead +of installing the file to /var/lib/exim4/config.autogenerated. + +.SH EXAMPLES +You want to be able to check exim's queue as normal user: Generate a new +file, e.g. /etc/exim4/conf.d/main/40_local_mailq, containing only the line +.I queue_list_requires_admin = false + +.SH NOTES +.B update-exim4.conf +changes the file permissions of the output file to the value of the environment +variable CFILEMODE, if CFILEMODE is set neither in /etc/default/exim4 nor in +the environment it defaults to 0644. Change this to 0640 if you're keeping +sensible information (LDAP credentials et. al.) in there. + +.SH FILES +At startup /etc/default/exim4 is sourced to get the value of CFILEMODE. +.B update-exim4.conf +manages these files: +.TP +.I /var/lib/exim4/config.autogenerated +Exim's main configuration file +.TP +.I /etc/exim4/conf.d/rewrite/30_exim4-base_email-addresses +rewriting rules for evaluation of /etc/exim4/email-addresses +.TP +.I /etc/exim4/conf.d/rewrite/35_exim4-base_masquerade +rewriting rules targeted for satellite system. +.PP +The files in /etc/ are checked for user modifications and are not updated any +more by update-exim4.conf if the local adminstator has edited them. If you +want to put such a file under update-exim4.conf's control again run +.B md5sum filename +and note its output. Edit the file and add a line at the top of the file +consisting only of a hash-mark (#), followed by a single space-character and +the output of the md5sum command. For example +# d41d8cd98f00b204e9800998ecf8427e + +.SH SEE ALSO +.BR exim (8) + +.SH AUTHOR +Andreas Metzler <ametzler at downhill.at.eu.org> diff --git a/debian/manpages/update-exim4defaults.8 b/debian/manpages/update-exim4defaults.8 new file mode 100644 index 0000000..2d30ad2 --- /dev/null +++ b/debian/manpages/update-exim4defaults.8 @@ -0,0 +1,157 @@ +.\" Hey, EMACS: -*- nroff -*- +.\" First parameter, NAME, should be all caps +.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection +.\" other parameters are allowed: see man(7), man(1) +.TH UPDATE-EXIM4DEFAULTS 8 "January 17, 2003" EXIM4 +.\" Please adjust this date whenever revising the manpage. +.\" +.\" Some roff macros, for reference: +.\" .nh disable hyphenation +.\" .hy enable hyphenation +.\" .ad l left justify +.\" .ad b justify to both left and right margins +.\" .nf disable filling +.\" .fi enable filling +.\" .br insert line break +.\" .sp <n> insert n+1 empty lines +.\" for manpage-specific macros, see man(7) +.SH NAME +update-exim4defaults \- Manage exim4 daemon default file. +.SH SYNOPSIS +.B update-exim4defaults +.I [ --qflags flags ] +.I [ --queuerunner combined|separate|no ] +.I [ --queuetime time ] +.I [ --commonoptions options ] +.I [ --queuerunneroptions options ] +.I [ --smtplisteneroptions options ] +.I [ --remove-common options ] +.I [ --remove-queue options ] +.I [ --remove-smtp options ] +.I [ --force|-f ] +.I [ --help|-h ] +.I [ --init ] + +.SH DESCRIPTION +.B update-exim4defaults +allows to set run parameters for the +.B Exim +daemon in +.I /etc/default/exim4. +Its main purpose is for interaction with packages enhancing +.B Exim +like virus-scanners that need to change the way the exim daemon is started. +.PP + +.SH OPTIONS +.TP +.I --help|-h +Print short usage instructions and exit. +.TP +.I --qflags flags +Set qflags, special flags given to exim directly after the "-q". See +.B exim(8) +for more information. +.TP +.I --queuerunner combined|separate|no +Should the init script start one daemon that listens on the smtp port for +incoming connections and runs the queue at regular intervals +.I (combined) +, or should it start two separate daemons, one listening on the smtp port, +the other running the queue +.I (separate) +, or shouldn't we run the queue at all, for example if you'd rather do this +with +.B cron? +.TP +.I --queuetime time +In which intervals should we run the queue? This passed as option +.I -q<qflags>time +to Exim, e.g. -q30m or -qq1h. +.TP +.I --commonoptions options +Options passed both to queue-running and listening instances of Exim. +.TP +.I --queuerunneroptions options +Options only passed to the instance of Exim running the queue. +.TP +.I --smtplisteneroptions options +Options only passed to the instance of Exim listening on the SMTP port. +.TP +.I --force|-f +Without this option +.B update-exim4defaults +exits with an error if at least one of the options --queuetime, +--commonoptions, --queuerunneroptions or --smtplisteneroptions is used and the +corresponding value in /etc/default/exim4 is +.I already +set to a nonempty value. +.TP +.I --remove-common option +Try to remove the given option from COMMONOPTIONS. +.TP +.I --remove-queue option +Try to remove the given option from QUEUERUNNEROPTIONS. +.TP +.I --remove-smtp option +Try to remove the given option from SMTPLISTENEROPTIONS. +.PP +The --remove-commands cannot be used at the same time as any of --commonoptions, +--queuerunneroptions or --smtplisteneroptions. The --remove-commands will +additionally remove whitespace at the begining and the end of the option and +exchange multiple spaces wi a single one. +.TP +.I --init +create a default /etc/default/exim4 file and exit immediately. Unless +.I ---force +was also specified +.B update-exim4defaults +exits (successfully) without doing anything if /etc/default/exim4 already +exists. All other options are ignored. + +.SH EXIT STATUS +.TP +.I 0 +change was successfull or nothing needed to be done. +.TP +.I 1 +generic error: wrong options, unreadable configuration file, etc. +.TP +.I 2 +QUEUEINTERVAL was already set. +.TP +.I 4 +COMMONOPTIONS was already set. +.TP +.I 8 +QUEUERUNNEROPTIONS was already set. +.TP +.I 16 +SMTPLISTENEROPTIONS was already set. +.TP +.I 32 +QFLAGS was already set. +.TP +.I 64 +--remove-something failed, i.e. the value of the option was not changed. +.PP +Exit codes 2 to 32 will be summed up, if more than one unsuccesful option was +given. + +.SH FILES +.TP +.I /etc/default/exim4 +The configuration file. +.TP +.I /etc/init.d/exim4 +The Exim init-script. +.TP +.I /etc/ppp/ip-up.d/exim4 +The queuerunner in this file also uses COMMONOPTIONS and QUEUERUNNEROPTIONS and +does not run if QUEUERUNNER=no. + +.SH SEE ALSO +.BR exim (8) + +.SH AUTHOR +Andreas Metzler <ametzler at downhill.at.eu.org> diff --git a/debian/patches/00list b/debian/patches/00list new file mode 100644 index 0000000..482d334 --- /dev/null +++ b/debian/patches/00list @@ -0,0 +1,11 @@ +10_daemon_close_fds +20_fix.lsearch +30_dontoverridecflags +31_eximmanpage +32_exim4 +33_eximon.binary +34_eximstatsmanpage +35_install +36_pcre +40_boolean_redefine_protect +50_localscan_dlopen diff --git a/debian/patches/10_daemon_close_fds.dpatch b/debian/patches/10_daemon_close_fds.dpatch new file mode 100644 index 0000000..c11d693 --- /dev/null +++ b/debian/patches/10_daemon_close_fds.dpatch @@ -0,0 +1,46 @@ +#! /bin/sh -e +## 10_daemon_close_fds.dpatch by Steve Haslam <araqnid@debian.org> +## +## All lines beginning with `## DP:' are a description of the patch. +## DP: Close FDs 0-254 when going into background + +if [ $# -ne 1 ]; then + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +fi +case "$1" in + -patch) patch -f --no-backup-if-mismatch --dry-run -p0 < $0 && patch -f --no-backup-if-mismatch -p0 < $0;; + -unpatch) patch -f --no-backup-if-mismatch -R -p0 < $0;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1;; +esac +exit 0 + +--- ../old/src/daemon.c 2002-12-18 10:28:01.000000000 +0000 ++++ src/daemon.c 2003-01-19 06:24:18.000000000 +0000 +@@ -42,6 +42,13 @@ + static smtp_slot *smtp_slots; + + ++static void close_fds(void) ++{ ++ int fd; ++ for (fd = 0; fd < 255; fd++) { ++ close(fd); ++ } ++} + + /************************************************* + * SIGALRM Handler * +@@ -662,9 +669,7 @@ + { + log_close_all(); /* Just in case anything was logged earlier */ + search_tidyup(); /* Just in case any were used in reading the config. */ +- close(0); /* Get rid of stdin/stdout/stderr */ +- close(1); +- close(2); ++ close_fds(); + log_stderr = NULL; /* So no attempt to copy paniclog output */ + + /* If the parent process of this one has pid == 1, we are re-initializing the diff --git a/debian/patches/20_fix.lsearch.dpatch b/debian/patches/20_fix.lsearch.dpatch new file mode 100644 index 0000000..a311872 --- /dev/null +++ b/debian/patches/20_fix.lsearch.dpatch @@ -0,0 +1,32 @@ +#! /bin/sh -e +## 20_fix.lsearch.dpatch by Philip Hazel <ph10@cus.cam.ac.uk> +## +## All lines beginning with `## DP:' are a description of the patch. +## DP: Fix lsearch*@ lookups. + +if [ $# -ne 1 ]; then + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +fi +case "$1" in + -patch) patch -f --no-backup-if-mismatch -p1 < $0;; + -unpatch) patch -f --no-backup-if-mismatch -R -p1 < $0;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1;; +esac + +exit 0 + +diff -urNad 20.tmp/src/search.c 20/src/search.c +--- 20.tmp/src/search.c Wed Dec 18 18:43:19 2002 ++++ 20/src/search.c Mon Feb 17 23:30:02 2003 +@@ -748,7 +748,7 @@ + try that. If we do match, the first variable (the wild part) is the whole key, + and the second is empty. */ + +-if (yield == NULL && (starflags & SEARCH_STAR) != 0) ++if (yield == NULL && (starflags & (SEARCH_STAR|SEARCH_STARAT)) != 0) + { + DEBUG(D_lookup) debug_printf("trying to match *\n"); + yield = internal_search_find(handle, filename, US"*"); diff --git a/debian/patches/30_dontoverridecflags.dpatch b/debian/patches/30_dontoverridecflags.dpatch new file mode 100644 index 0000000..ef28c90 --- /dev/null +++ b/debian/patches/30_dontoverridecflags.dpatch @@ -0,0 +1,35 @@ +#! /bin/sh -e +## 30_dontoverridecflags.dpatch by Andreas Metzler +## +## All lines beginning with `## DP:' are a description of the patch. +## DP: Don't override CFLAGS in OS/Makefile-Linux, allow to set them +## DP: e.g. in debian/rules + +if [ $# -ne 1 ]; then + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +fi +case "$1" in + -patch) patch -f --no-backup-if-mismatch -p1 < $0;; + -unpatch) patch -f --no-backup-if-mismatch -R -p1 < $0;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1;; +esac + +exit 0 + +diff -urNad 30.tmp/OS/Makefile-Linux 30/OS/Makefile-Linux +--- 30.tmp/OS/Makefile-Linux Mon Dec 30 10:06:45 2002 ++++ 30/OS/Makefile-Linux Mon Dec 30 10:07:07 2002 +@@ -3,8 +3,9 @@ + + BASENAME_COMMAND=look_for_it + +-CFLAGS=-O ++# Assume Linuxes use gcc too + ++CFLAGS ?= -O + DBMLIB = -ldb + USE_DB = yes + diff --git a/debian/patches/31_eximmanpage.dpatch b/debian/patches/31_eximmanpage.dpatch new file mode 100644 index 0000000..6208484 --- /dev/null +++ b/debian/patches/31_eximmanpage.dpatch @@ -0,0 +1,196 @@ +#! /bin/sh -e +## 31_newpatch.dpatch by <ametzler@logic.univie.ac.at> +## +## All lines beginning with `## DP:' are a description of the patch. +## DP: Add info about rmail, mailq, etc. to exim(8). + +if [ $# -ne 1 ]; then + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +fi +case "$1" in + -patch) patch -f --no-backup-if-mismatch -p1 < $0;; + -unpatch) patch -f --no-backup-if-mismatch -R -p1 < $0;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1;; +esac + +exit 0 + +diff -urNad 31.exim4.tmp/doc/exim.8 31.exim4/doc/exim.8 +--- 31.exim4.tmp/doc/exim.8 Wed Dec 18 11:28:05 2002 ++++ 31.exim4/doc/exim.8 Sat Mar 1 09:30:34 2003 +@@ -3,6 +3,11 @@ + exim - a Mail Transfer Agent + .SH SYNOPSIS + .B exim [options] arguments ... ++.B mailq [options] arguments ... ++.B rsmtp [options] arguments ... ++.B rmail [options] arguments ... ++.B runq [options] arguments ... ++.B newaliases [options] arguments ... + + .SH DESCRIPTION + Exim is a mail transport agent (MTA) developed at the University of Cambridge. +@@ -11,6 +16,27 @@ + line options. It has been automatically generated from the reference manual + source, which is why the formatting is poor in some places. + ++.SH SETTING OPTIONS BY PROGRAM NAME ++.TP 10 ++\fBmailq\fR ++Behave as if the option -bp were present before any other options. ++.TP ++\fBrsmtp\fR ++Behaves as if the option -bS were present before any other options, ++for compatibility with Smail ++.TP ++\fBrmail\fR ++Behave as if the -i and -oee options were present before any other options, ++for compatibility with Smail. ++.TP ++\fBrunq\fR ++Behave as if the option -q were present before any other options, for ++compatibility with Smail. ++.TP ++\fBnewaliases\fR ++Behave as if the option -bi were present before any other options, for ++compatibility with Sendmail. ++ + .SH OPTIONS + .TP 10 + \fB--\fR +@@ -53,7 +79,7 @@ + When -oX is used on the command to start a listening daemon, the process id + is not written to the normal pid file path. However, -oP can be used to + specify a path on the command line if a pid file is required. +-.nem ++.ne + + .em + The SIGHUP signal can be used to cause the daemon to re-exec itself. This +@@ -62,7 +88,7 @@ + whenever a new version of Exim is installed. It is not necessary to do this + when other files that are referenced from the configuration (for example, alias + files) are changed, because these are reread each time they are used. +-.nem ++.ne + .TP + \fB-bdf\fR + This option has the same effect as -bd except that it never disconnects from +@@ -129,7 +155,7 @@ + .em + Warning: You cannot test features of the configuration that rely on ident + (RFC 1413) callouts, because these are not done when testing using -bh. +-.nem ++.ne + + Messages supplied during the testing session are discarded, and nothing is + written to any of the real log files. There may be pauses when DNS (and other) +@@ -523,7 +549,7 @@ + White space between -f and the <address> is optional + .em + (that is, they can be given as two arguments or one combined argument). +-.nem ++.ne + The sender of a locally-generated message can also be set (when permitted) by + an initial `From ' line in the message -- see the description of -bm above + -- but if -f is also present, it overrides `From '. +@@ -577,7 +603,7 @@ + This option is not intended for use by external callers. It is used internally + by Exim in conjunction with the -MC option. It signifies that the server to + which Exim is connected supports pipelining. +-.nem ++.ne + .TP + \fB-MCQ <process id> <pipe fd>\fR + This option is not intended for use by external callers. It is used internally +@@ -734,7 +760,7 @@ + effect. + .em + This option overrides any setting of "queue_smtp_domains" or -odqs. +-.nem ++.ne + .TP + \fB-odqs\fR + This option is a hybrid between -odb and -odq. A background delivery +@@ -789,7 +815,7 @@ + over TCP/IP). These options can be used by any caller in conjunction with the + -bh, -bf, -bF, -bt, or -bv testing options. In other + circumstances, they are ignored unless the caller is trusted. +-.nem ++.ne + + The -oMa option sets the sender host address. This may include a port number + at the end, after a full stop (period). For example: +@@ -829,7 +855,7 @@ + input, the protocol is determined by whether EHLO or HELO is used, and + is always either `local-esmtp' or `local-smtp'. For -bS (batch SMTP) + however, the protocol can be set by -oMr. +-.nem ++.ne + .TP + \fB-oMs <host name>\fR + See -oMa above for general remarks about the -oM options. The -oMs +@@ -857,7 +883,7 @@ + written. When -oX is used with -bd, or when -q with a time is used + without -bd, this is the only way of causing Exim to write a pid file, + because in those cases, the normal pid file is not used. +-.nem ++.ne + .TP + \fB-or <time>\fR + This option sets a timeout value for incoming non-SMTP messages. If it is not +@@ -885,7 +911,7 @@ + optionally ports) on which the daemon is to listen. In this case, the data is + in the same format as the value of "local_interfaces", and it overrides that + option. +-.nem ++.ne + .TP + \fB-pd\fR + This option applies when an embedded Perl interpreter is linked with Exim. It overrides the setting of the "perl_at_start" option, +@@ -997,7 +1023,7 @@ + .em + When a daemon is started by -q with a time value, but without -db, no pid + file is written unless one is explicitly requested by the -oP option. +-.nem ++.ne + .TP + \fB-qR<rsflags> <string>\fR + This option is synonymous with -R. It is provided for Sendmail +@@ -1092,7 +1118,7 @@ + way and some the other. With only a few clients that need the legacy support, a + convenient approach is to use a daemon for normal SMTP (with or without + STARTTLS) and inetd with "-tls-on-connect-" for the legacy clients. +-.nem ++.ne + .TP + \fB-U\fR + Sendmail uses this option for `initial message submission', and its +@@ -1114,3 +1140,24 @@ + It sets -x when calling the MTA from its "mail" command. Exim ignores this + option. + .TP ++ ++.SH SEE ALSO ++.BR exicyclog (8), ++.BR exigrep (8), ++.BR exim_checkaccess (8), ++.BR exim_convert4r4 (8), ++.BR exim_db (8), ++.BR exim_dbmbuild (8), ++.BR exim_lock (8), ++.BR eximon (8), ++.BR exinext (8), ++.BR exiqgrep (8), ++.BR exiqsumm (8), ++.BR exiwhat (8), ++.BR update-exim4.conf (8), ++.BR update-exim4defaults (8), ++/usr/share/doc/exim4-base/. ++ ++.SH AUTHOR ++This manual page was provided with the upstream Exim source package. ++It was enhanced for the Debian GNU/Linux system. diff --git a/debian/patches/32_exim4.dpatch b/debian/patches/32_exim4.dpatch new file mode 100755 index 0000000..2a4b6f1 --- /dev/null +++ b/debian/patches/32_exim4.dpatch @@ -0,0 +1,125 @@ +#! /bin/sh -e +## 30_exim4.dpatch by Andreas Metzler +## +## All lines beginning with `## DP:' are a description of the patch. +## DP: The main binary is installed as /usr/sbin/exim4 + +if [ $# -ne 1 ]; then + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +fi +case "$1" in + -patch) patch -f --no-backup-if-mismatch -p1 < $0;; + -unpatch) patch -f --no-backup-if-mismatch -R -p1 < $0;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1;; +esac + +exit 0 + +diff -urNad 30.tmp/OS/Makefile-Linux 30/OS/Makefile-Linux +--- 30.tmp/OS/Makefile-Linux Mon Dec 30 10:35:43 2002 ++++ 30/OS/Makefile-Linux Mon Dec 30 10:37:17 2002 +@@ -19,7 +19,7 @@ + EXIWHAT_PS_ARG=ax + EXIWHAT_EGREP_ARG='/exim( |$$)' + EXIWHAT_MULTIKILL_CMD=killall +-EXIWHAT_MULTIKILL_ARG=exim ++EXIWHAT_MULTIKILL_ARG=exim4 + EXIWHAT_KILL_SIGNAL=-USR1 + + # End +diff -urNad 30.tmp/src/exicyclog.src 30/src/exicyclog.src +--- 30.tmp/src/exicyclog.src Mon Dec 30 10:35:43 2002 ++++ 30/src/exicyclog.src Mon Dec 30 10:37:17 2002 +@@ -72,7 +72,7 @@ + + st=' ' + exim_path=`grep "^[$st]*exim_path" $config | sed "s/.*=[$st]*//"` +-if test "$exim_path" = ""; then exim_path=BIN_DIRECTORY/exim; fi ++if test "$exim_path" = ""; then exim_path=BIN_DIRECTORY/exim4; fi + + spool_directory=`$exim_path -C $config -bP spool_directory | sed 's/.*=[ ]*//'` + log_file_path=`$exim_path -C $config -bP log_file_path | sed 's/.*=[ ]*//'` +diff -urNad 30.tmp/src/exim_checkaccess.src 30/src/exim_checkaccess.src +--- 30.tmp/src/exim_checkaccess.src Mon Dec 30 10:35:43 2002 ++++ 30/src/exim_checkaccess.src Mon Dec 30 10:37:17 2002 +@@ -43,7 +43,7 @@ + + st=' ' + exim_path=`grep "^[$st]*exim_path" $config | sed "s/.*=[$st]*//"` +-if test "$exim_path" = ""; then exim_path=BIN_DIRECTORY/exim; fi ++if test "$exim_path" = ""; then exim_path=BIN_DIRECTORY/exim4; fi + + + ######################################################################### +diff -urNad 30.tmp/src/eximon.src 30/src/eximon.src +--- 30.tmp/src/eximon.src Mon Dec 30 10:35:43 2002 ++++ 30/src/eximon.src Mon Dec 30 10:37:17 2002 +@@ -49,7 +49,7 @@ + + st=' ' + EXIM_PATH=`grep "^[$st]*exim_path" $config | sed "s/.*=[$st]*//"` +-if test "$EXIM_PATH" = ""; then EXIM_PATH=BIN_DIRECTORY/exim; fi ++if test "$EXIM_PATH" = ""; then EXIM_PATH=BIN_DIRECTORY/exim4; fi + + SPOOL_DIRECTORY=`$EXIM_PATH -C $config -bP spool_directory | sed 's/.*=[ ]*//'` + LOG_FILE_PATH=`$EXIM_PATH -C $config -bP log_file_path | sed 's/.*=[ ]*//'` +diff -urNad 30.tmp/src/exinext.src 30/src/exinext.src +--- 30.tmp/src/exinext.src Mon Dec 30 10:35:43 2002 ++++ 30/src/exinext.src Mon Dec 30 10:37:17 2002 +@@ -46,7 +46,7 @@ + + st=' ' + exim_path=`grep "^[$st]*exim_path" $config | sed "s/.*=[$st]*//"` +-if test "$exim_path" = ""; then exim_path=BIN_DIRECTORY/exim; fi ++if test "$exim_path" = ""; then exim_path=BIN_DIRECTORY/exim4; fi + spool_directory=`$exim_path -C $config -bP spool_directory | sed 's/.*=[ ]*//'` + qualify_domain=`$exim_path -C $config -bP qualify_domain | sed 's/.*=[ ]*//'` + +@@ -123,7 +123,7 @@ + + # Run exim_dumpdb to get out the retry data and pick off what we want + +- open(DATA, "${exim}_dumpdb $spool retry |") || ++ open(DATA, "/usr/sbin/exim_dumpdb $spool retry |") || + die "can't run exim_dumpdb"; + + while (<DATA>) +diff -urNad 30.tmp/src/exiqgrep.src 30/src/exiqgrep.src +--- 30.tmp/src/exiqgrep.src Mon Dec 30 10:35:43 2002 ++++ 30/src/exiqgrep.src Mon Dec 30 10:37:17 2002 +@@ -12,7 +12,7 @@ + use Getopt::Std; + + # Have this variable point to your exim binary. +-my $exim = 'BIN_DIRECTORY/exim'; ++my $exim = 'BIN_DIRECTORY/exim4'; + my $eargs = '-bpu'; + my %id; + my %opt; +diff -urNad 30.tmp/src/exiwhat.src 30/src/exiwhat.src +--- 30.tmp/src/exiwhat.src Mon Dec 30 10:35:43 2002 ++++ 30/src/exiwhat.src Mon Dec 30 10:37:17 2002 +@@ -68,7 +68,7 @@ + + st=' ' + exim_path=`grep "^[$st]*exim_path" $config | sed "s/.*=[$st]*//"` +-if test "$exim_path" = ""; then exim_path=BIN_DIRECTORY/exim; fi ++if test "$exim_path" = ""; then exim_path=BIN_DIRECTORY/exim4; fi + spool_directory=`$exim_path -C $config -bP spool_directory | sed 's/.*=[ ]*//'` + + # The file that Exim writes when sent the SIGUSR1 signal is called +diff -urNad 30.tmp/src/globals.c 30/src/globals.c +--- 30.tmp/src/globals.c Mon Dec 30 10:35:43 2002 ++++ 30/src/globals.c Mon Dec 30 10:37:17 2002 +@@ -413,7 +413,7 @@ + + gid_t exim_gid = EXIM_GID; + BOOL exim_gid_set = TRUE; /* This gid is always set */ +-uschar *exim_path = US BIN_DIRECTORY "/exim" ++uschar *exim_path = US BIN_DIRECTORY "/exim4" + "\0<---------------Space to patch exim_path->"; + uid_t exim_uid = EXIM_UID; + BOOL exim_uid_set = TRUE; /* This uid is always set */ diff --git a/debian/patches/33_eximon.binary.dpatch b/debian/patches/33_eximon.binary.dpatch new file mode 100755 index 0000000..721a241 --- /dev/null +++ b/debian/patches/33_eximon.binary.dpatch @@ -0,0 +1,32 @@ +#! /bin/sh -e +## 30_eximon.binary.dpatch by Andreas Piesk +## +## All lines beginning with `## DP:' are a description of the patch. +## DP: eximon.bin is installed in /usr/lib/exim4/ and not in path. + +if [ $# -ne 1 ]; then + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +fi +case "$1" in + -patch) patch -f --no-backup-if-mismatch -p1 < $0;; + -unpatch) patch -f --no-backup-if-mismatch -R -p1 < $0;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1;; +esac + +exit 0 + +diff -urNad 30.tmp/OS/eximon.conf-Default 30/OS/eximon.conf-Default +--- 30.tmp/OS/eximon.conf-Default Mon Dec 30 10:14:03 2002 ++++ 30/OS/eximon.conf-Default Mon Dec 30 10:15:04 2002 +@@ -5,7 +5,7 @@ + # The name of the eximon binary, usually the same as the eximon script, + # with .bin stuck on the end. + +-EXIMON_BINARY=${EXIMON_BINARY-$0.bin} ++EXIMON_BINARY=/usr/lib/exim4/${EXIMON_BINARY-${0##*/}.bin} + + # The remaining parameters are values likely to be changed to suit the + # user's taste. They are documented in the EDITME file. diff --git a/debian/patches/34_eximstatsmanpage.dpatch b/debian/patches/34_eximstatsmanpage.dpatch new file mode 100755 index 0000000..8520b7e --- /dev/null +++ b/debian/patches/34_eximstatsmanpage.dpatch @@ -0,0 +1,35 @@ +#! /bin/sh -e +## 30_eximstatsmanpage.dpatch by Andreas Metzler <ametzler@downhill.at.eu.org> +## +## All lines beginning with `## DP:' are a description of the patch. +## DP: Add note about installing perl-modules on Debian to +## DP: generated manpage + +if [ $# -ne 1 ]; then + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +fi +case "$1" in + -patch) patch -f --no-backup-if-mismatch -p1 < $0;; + -unpatch) patch -f --no-backup-if-mismatch -R -p1 < $0;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1;; +esac + +exit 0 + +diff -urNad 30.tmp/src/eximstats.src 30/src/eximstats.src +--- 30.tmp/src/eximstats.src Wed Dec 18 11:28:01 2002 ++++ 30/src/eximstats.src Sun Jan 12 14:50:23 2003 +@@ -277,6 +277,10 @@ + make test + make install + ++On B<Debian GNU/Linux> you can use ++C<apt-get install libgd-perl libgd-text-perl libgd-graph-perl> ++instead. ++ + =item B<-chartdir>I <dir> + + Create the charts in the directory <dir> diff --git a/debian/patches/35_install.dpatch b/debian/patches/35_install.dpatch new file mode 100755 index 0000000..f3e9e9e --- /dev/null +++ b/debian/patches/35_install.dpatch @@ -0,0 +1,36 @@ +#! /bin/sh -e +## 30_install.dpatch by Andreas Metzler +## +## All lines beginning with `## DP:' are a description of the patch. +## DP: Exim's installation scripts install the binary as exim-<version> +## DP: - disable this feature. + +if [ $# -ne 1 ]; then + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +fi +case "$1" in + -patch) patch -f --no-backup-if-mismatch -p1 < $0;; + -unpatch) patch -f --no-backup-if-mismatch -R -p1 < $0;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1;; +esac + +exit 0 + +diff -urNad 30.tmp/scripts/exim_install 30/scripts/exim_install +--- 30.tmp/scripts/exim_install Mon Dec 30 10:19:59 2002 ++++ 30/scripts/exim_install Mon Dec 30 10:20:21 2002 +@@ -172,8 +172,9 @@ + # The exim binary is handled specially + + if [ $name = exim${EXE} ]; then +- version=exim-`./exim -bV -C /dev/null | \ +- awk '/Exim version/ { OFS=""; print $3,"-",substr($4,2,length($4)-1) }'`${EXE} ++ version=exim ++# version=exim-`./exim -bV -C /dev/null | \ ++# awk '/Exim version/ { OFS=""; print $3,"-",substr($4,2,length($4)-1) }'`${EXE} + + # Do something only if newer than existing file, or no existing file + diff --git a/debian/patches/36_pcre.dpatch b/debian/patches/36_pcre.dpatch new file mode 100755 index 0000000..c5f1b0b --- /dev/null +++ b/debian/patches/36_pcre.dpatch @@ -0,0 +1,90 @@ +#! /bin/sh -e +## 30_pcre.dpatch by Andreas Metzler +## +## All lines beginning with `## DP:' are a description of the patch. +## DP: Link exim and eximon dynamically instead of statically +## DP: pcre. + +if [ $# -ne 1 ]; then + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +fi +case "$1" in + -patch) patch -f --no-backup-if-mismatch -p1 < $0;; + -unpatch) patch -f --no-backup-if-mismatch -R -p1 < $0;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1;; +esac + +exit 0 + +diff -urNad 30.tmp/OS/Makefile-Base 30/OS/Makefile-Base +--- 30.tmp/OS/Makefile-Base Mon Dec 30 10:28:54 2002 ++++ 30/OS/Makefile-Base Mon Dec 30 10:29:28 2002 +@@ -94,7 +94,7 @@ + # This is the real default target for all the various exim binaries and + # scripts, once the configuring stuff is done. + +-allexim: config.h buildpcre $(EXIM_MONITOR) exicyclog exinext exiwhat \ ++allexim: config.h $(EXIM_MONITOR) exicyclog exinext exiwhat \ + exigrep eximstats exiqgrep exiqsumm \ + transport-filter.pl convert4r3 convert4r4 \ + exim_checkaccess \ +@@ -255,7 +255,7 @@ + store.o string.o tls.o tod.o transport.o tree.o verify.o \ + local_scan.o $(EXIM_PERL) + +-exim: pcre/libpcre.a lookups/lookups.a auths/auths.a \ ++exim: lookups/lookups.a auths/auths.a \ + routers/routers.a transports/transports.a \ + $(OBJ_EXIM) version.c + @echo " " +@@ -264,7 +264,7 @@ + $(CC) -c $(CFLAGS) $(INCLUDE) $(IPV6_INCLUDE) $(TLS_INCLUDE) version.c + rm -f exim + $(PURIFY) $(LNCC) -o exim $(LFLAGS) $(OBJ_EXIM) version.o \ +- pcre/libpcre.a \ ++ -lpcre \ + routers/routers.a transports/transports.a lookups/lookups.a \ + auths/auths.a \ + $(LIBRESOLV) $(LIBS) $(LIBS_EXIM) $(IPV6_LIBS) $(EXTRALIBS) \ +@@ -366,12 +366,12 @@ + + OBJ_MONBIN = util-spool_in.o util-store.o util-string.o tod.o tree.o $(MONBIN) + +-eximon.bin: $(EXIMON_EDITME) eximon $(OBJ_MONBIN) pcre/libpcre.a \ ++eximon.bin: $(EXIMON_EDITME) eximon $(OBJ_MONBIN) \ + ../exim_monitor/em_version.c + $(CC) -o em_version.o -c \ + $(CFLAGS) $(XINCLUDE) -I. ../exim_monitor/em_version.c + $(PURIFY) $(LNCC) -o eximon.bin em_version.o $(LFLAGS) $(XLFLAGS) \ +- $(OBJ_MONBIN) -lXaw -lXmu -lXt -lXext -lX11 pcre/libpcre.a \ ++ $(OBJ_MONBIN) -lXaw -lXmu -lXt -lXext -lX11 -lpcre \ + $(LIBS) $(LIBS_EXIMON) $(EXTRALIBS) $(EXTRALIBS_EXIMON) -lc + @if [ x"$(STRIP_COMMAND)" != x"" ]; then \ + echo $(STRIP_COMMAND) eximon.bin; \ +diff -urNad 30.tmp/exim_monitor/em_hdr.h 30/exim_monitor/em_hdr.h +--- 30.tmp/exim_monitor/em_hdr.h Mon Dec 30 10:28:54 2002 ++++ 30/exim_monitor/em_hdr.h Mon Dec 30 10:29:28 2002 +@@ -85,7 +85,7 @@ + + /* Regular expression include */ + +-#include "pcre/pcre.h" ++#include <pcre.h> + + /* Includes from the main source of Exim. We need to have MAXPACKET defined for + the benefit of structs.h. One of these days I should tidy up this interface so +diff -urNad 30.tmp/src/exim.h 30/src/exim.h +--- 30.tmp/src/exim.h Mon Dec 30 10:28:54 2002 ++++ 30/src/exim.h Mon Dec 30 10:29:28 2002 +@@ -322,7 +322,7 @@ + + /* The header from the PCRE regex package */ + +-#include "pcre/pcre.h" ++#include <pcre.h> + + /* Exim includes are in several files */ + diff --git a/debian/patches/40_boolean_redefine_protect.dpatch b/debian/patches/40_boolean_redefine_protect.dpatch new file mode 100644 index 0000000..3dd3c1d --- /dev/null +++ b/debian/patches/40_boolean_redefine_protect.dpatch @@ -0,0 +1,46 @@ +#! /bin/sh -e +## 40_boolean_redefine_protect.dpatch by Steve Haslam +## +## All lines beginning with `## DP:' are a description of the patch. +## DP: boolean_redefine_protect +## DP: [src/mytypes.h] +## DP: Surround the definition of TRUE and FALSE macros with #ifndef +## DP: /#endif, in case some other header defines them (from mixing +## DP: Perl and Exim, istr) +## DP: http://www.arise.demon.co.uk/exim-patches/ + +if [ $# -ne 1 ]; then + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +fi +case "$1" in + -patch) patch -f --no-backup-if-mismatch -p1 < $0;; + -unpatch) patch -f --no-backup-if-mismatch -R -p1 < $0;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1;; +esac + +exit 0 + +diff -urNad 40.tmp/src/mytypes.h 40/src/mytypes.h +--- 40.tmp/src/mytypes.h Sun Dec 29 14:31:27 2002 ++++ 40/src/mytypes.h Sun Dec 29 14:40:41 2002 +@@ -14,9 +14,17 @@ + #define MYTYPES_H + + ++#ifndef FALSE + #define FALSE 0 ++#endif ++ ++#ifndef TRUE + #define TRUE 1 ++#endif ++ ++#ifndef TRUE_UNSET + #define TRUE_UNSET 2 ++#endif + + + /* If gcc is being used to compile Exim, we can use its facility for checking diff --git a/debian/patches/50_localscan_dlopen.dpatch b/debian/patches/50_localscan_dlopen.dpatch new file mode 100644 index 0000000..f8ec94f --- /dev/null +++ b/debian/patches/50_localscan_dlopen.dpatch @@ -0,0 +1,256 @@ +#! /bin/sh -e +## 50_localscan_dlopen.dpatch by Marc Merlin +## +## All lines beginning with `## DP:' are a description of the patch. +## DP: Allow to use and switch between different local_scan functions without +## DP: recompiling exim. +## DP: http://marc.merlins.org/linux/exim/files/sa-exim-current/ +## DP: Original patch from David Woodhouse, modified first by Derrick 'dman' +## DP: Hudson and then by Marc MERLIN. + + +if [ $# -ne 1 ]; then + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +fi +case "$1" in + -patch) patch -f --no-backup-if-mismatch -p1 < $0;; + -unpatch) patch -f --no-backup-if-mismatch -R -p1 < $0;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1;; +esac + +exit 0 + +diff -urNad 50_localscan_dlopen.tmp/src/EDITME 50_localscan_dlopen/src/EDITME +--- 50_localscan_dlopen.tmp/src/EDITME Sun Dec 29 11:55:42 2002 ++++ 50_localscan_dlopen/src/EDITME Sun Dec 29 11:56:44 2002 +@@ -362,6 +362,20 @@ + + + #------------------------------------------------------------------------------ ++# On systems which support dynamic loading of shared libraries, Exim can ++# load a local_scan function specified in its config file instead of having ++# to be recompiled with the desired local_scan function. For a full ++# description of the API to this function, see the Exim specification. ++ ++DLOPEN_LOCAL_SCAN=yes ++ ++# If you set DLOPEN_LOCAL_SCAN, then you need to include -rdynamic in the ++# linker flags. Without it, the loaded .so won't be able to access any ++# functions from exim. ++ ++LFLAGS=-rdynamic ++ ++#------------------------------------------------------------------------------ + # The default distribution of Exim contains only the plain text form of the + # documentation. Other forms are available separately. If you want to install + # the documentation in "info" format, first fetch the Texinfo documentation +diff -urNad 50_localscan_dlopen.tmp/src/config.h.defaults 50_localscan_dlopen/src/config.h.defaults +--- 50_localscan_dlopen.tmp/src/config.h.defaults Sun Dec 29 11:55:42 2002 ++++ 50_localscan_dlopen/src/config.h.defaults Sun Dec 29 11:56:44 2002 +@@ -17,6 +17,8 @@ + #define AUTH_PLAINTEXT + #define AUTH_SPA + ++#define DLOPEN_LOCAL_SCAN ++ + #define BIN_DIRECTORY + + #define CONFIGURE_FILE +diff -urNad 50_localscan_dlopen.tmp/src/globals.c 50_localscan_dlopen/src/globals.c +--- 50_localscan_dlopen.tmp/src/globals.c Sun Dec 29 11:55:42 2002 ++++ 50_localscan_dlopen/src/globals.c Sun Dec 29 11:56:44 2002 +@@ -100,6 +100,9 @@ + uschar *tls_verify_hosts = NULL; + #endif + ++#ifdef DLOPEN_LOCAL_SCAN ++uschar *local_scan_path = NULL; ++#endif + + /* Input-reading functions for messages, so we can use special ones for + incoming TCP/IP. The defaults use stdin. We never need these for any +diff -urNad 50_localscan_dlopen.tmp/src/globals.h 50_localscan_dlopen/src/globals.h +--- 50_localscan_dlopen.tmp/src/globals.h Sun Dec 29 11:55:42 2002 ++++ 50_localscan_dlopen/src/globals.h Sun Dec 29 11:56:44 2002 +@@ -66,6 +66,9 @@ + extern uschar *tls_verify_hosts; /* Mandatory client verification */ + #endif + ++#ifdef DLOPEN_LOCAL_SCAN ++extern uschar *local_scan_path; /* Path to local_scan() library */ ++#endif + + /* Input-reading functions for messages, so we can use special ones for + incoming TCP/IP. */ +diff -urNad 50_localscan_dlopen.tmp/src/local_scan.c 50_localscan_dlopen/src/local_scan.c +--- 50_localscan_dlopen.tmp/src/local_scan.c Sun Dec 29 11:55:42 2002 ++++ 50_localscan_dlopen/src/local_scan.c Sun Dec 29 11:56:44 2002 +@@ -5,60 +5,99 @@ + /* Copyright (c) University of Cambridge 1995 - 2002 */ + /* See the file NOTICE for conditions of use and distribution. */ + ++#include "exim.h" + +-/****************************************************************************** +-This file contains a template local_scan() function that just returns ACCEPT. +-If you want to implement your own version, you should copy this file to, say +-Local/local_scan.c, and edit the copy. To use your version instead of the +-default, you must set +- +-LOCAL_SCAN_SOURCE=Local/local_scan.c +- +-in your Local/Makefile. This makes it easy to copy your version for use with +-subsequent Exim releases. +- +-For a full description of the API to this function, see the Exim specification. +-******************************************************************************/ ++#ifdef DLOPEN_LOCAL_SCAN ++#include <dlfcn.h> ++static int (*local_scan_fn)(int fd, uschar **return_text) = NULL; ++static int load_local_scan_library(void); ++#endif + ++int ++local_scan(int fd, uschar **return_text) ++{ ++fd = fd; /* Keep picky compilers happy */ ++return_text = return_text; ++#ifdef DLOPEN_LOCAL_SCAN ++/* local_scan_path is defined AND not the empty string */ ++if (local_scan_path && *local_scan_path) ++ { ++ if (!local_scan_fn) ++ { ++ if (!load_local_scan_library()) ++ { ++ char *base_msg , *error_msg , *final_msg ; ++ int final_length = -1 ; + +-/* This is the only Exim header that you should include. The effect of +-including any other Exim header is not defined, and may change from release to +-release. Use only the documented interface! */ ++ base_msg=US"Local configuration error - local_scan() library failure\n"; ++ error_msg = dlerror() ; + +-#include "local_scan.h" ++ final_length = strlen(base_msg) + strlen(error_msg) + 1 ; ++ final_msg = (char*)malloc( final_length*sizeof(char) ) ; ++ *final_msg = '\0' ; + ++ strcat( final_msg , base_msg ) ; ++ strcat( final_msg , error_msg ) ; + +-/* This is a "do-nothing" version of a local_scan() function. The arguments +-are: ++ *return_text = final_msg ; ++ return LOCAL_SCAN_TEMPREJECT; ++ } ++ } ++ return local_scan_fn(fd, return_text); ++ } ++else ++#endif ++ return LOCAL_SCAN_ACCEPT; ++} + +- fd The file descriptor of the open -D file, which contains the +- body of the message. The file is open for reading and +- writing, but modifying it is dangerous and not recommended. ++#ifdef DLOPEN_LOCAL_SCAN + +- return_text A pointer to an unsigned char* variable which you can set in +- order to return a text string. It is initialized to NULL. ++static int load_local_scan_library(void) ++{ ++/* No point in keeping local_scan_lib since we'll never dlclose() anyway */ ++void *local_scan_lib = NULL; ++int (*local_scan_version_fn)(void); ++int vers; + +-The return values of this function are: ++local_scan_lib = dlopen(local_scan_path, RTLD_NOW); ++if (!local_scan_lib) ++ { ++ log_write(0, LOG_MAIN|LOG_REJECT, "local_scan() library open failed - " ++ "message temporarily rejected"); ++ return FALSE; ++ } + +- LOCAL_SCAN_ACCEPT +- The message is to be accepted. The return_text argument is +- saved in $local_scan_data. ++local_scan_version_fn = dlsym(local_scan_lib, "local_scan_version"); ++if (!local_scan_version_fn) ++ { ++ dlclose(local_scan_lib); ++ log_write(0, LOG_MAIN|LOG_REJECT, "local_scan() library doesn't contain " ++ "local_scan_version() function - message temporarily rejected"); ++ return FALSE; ++ } + +- LOCAL_SCAN_REJECT +- The message is to be rejected. The returned text is used +- in the rejection message. ++vers = local_scan_version_fn(); ++if (vers != LOCAL_SCAN_ABI_VERSION) ++ { ++ dlclose(local_scan_lib); ++ local_scan_lib = NULL; ++ log_write(0, LOG_MAIN|LOG_REJECT, "local_scan() has wrong version " ++ "number %d, expected %d", vers, LOCAL_SCAN_ABI_VERSION); ++ return FALSE; ++ } + +- LOCAL_SCAN_TEMPREJECT +- This specifies a temporary rejection. The returned text +- is used in the rejection message. +-*/ ++local_scan_fn = dlsym(local_scan_lib, "local_scan"); ++if (!local_scan_fn) ++ { ++ dlclose(local_scan_lib); ++ log_write(0, LOG_MAIN|LOG_REJECT, "local_scan() library doesn't contain " ++ "local_scan() function - message temporarily rejected"); ++ return FALSE; ++ } + +-int +-local_scan(int fd, uschar **return_text) +-{ +-fd = fd; /* Keep picky compilers happy */ +-return_text = return_text; +-return LOCAL_SCAN_ACCEPT; ++return TRUE; + } ++ ++#endif /* DLOPEN_LOCAL_SCAN */ + + /* End of local_scan.c */ +diff -urNad 50_localscan_dlopen.tmp/src/local_scan.h 50_localscan_dlopen/src/local_scan.h +--- 50_localscan_dlopen.tmp/src/local_scan.h Sun Dec 29 11:55:42 2002 ++++ 50_localscan_dlopen/src/local_scan.h Sun Dec 29 11:56:44 2002 +@@ -86,6 +86,8 @@ + uschar *errors_to; /* the errors_to address or NULL */ + } recipient_item; + ++/* local_scan() ABI version number for dynamic libraries */ ++#define LOCAL_SCAN_ABI_VERSION 1 + + /* Global variables that are documented as visible in the function. */ + +diff -urNad 50_localscan_dlopen.tmp/src/readconf.c 50_localscan_dlopen/src/readconf.c +--- 50_localscan_dlopen.tmp/src/readconf.c Sun Dec 29 11:55:42 2002 ++++ 50_localscan_dlopen/src/readconf.c Sun Dec 29 11:56:44 2002 +@@ -113,6 +113,9 @@ + { "local_from_prefix", opt_stringptr, &local_from_prefix }, + { "local_from_suffix", opt_stringptr, &local_from_suffix }, + { "local_interfaces", opt_stringptr, &local_interfaces }, ++#ifdef DLOPEN_LOCAL_SCAN ++ { "local_scan_path", opt_stringptr, &local_scan_path }, ++#endif + { "local_scan_timeout", opt_time, &local_scan_timeout }, + { "local_sender_retain", opt_bool, &local_sender_retain }, + { "localhost_number", opt_stringptr, &host_number_string }, diff --git a/debian/rules b/debian/rules new file mode 100755 index 0000000..294b6f3 --- /dev/null +++ b/debian/rules @@ -0,0 +1,301 @@ +#!/usr/bin/make -f +# Sample debian/rules that uses debhelper. +# This file is public domain software, originally written by Joey Hess. +# +# This version is for a hypothetical package that builds an +# architecture-dependant package, as well as an architecture-independent +# package. + +# Uncomment this to turn on verbose mode. +export DH_VERBOSE=1 + +buildname=$${build:-`$(SHELL) scripts/os-type`-`$(SHELL) scripts/arch-type`} + +# Include dpatch stuff. +include /usr/share/dpatch/dpatch.make + +DEBIAN:=$(shell pwd)/debian + +CFLAGS = -O2 -Wall -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE + +ifneq (,$(findstring debug,$(DEB_BUILD_OPTIONS))) +CFLAGS += -g +endif + +export CFLAGS + +# Which packages should we build? +buildbasepackages=yes + +builddaemonpackages=exim4-daemon-heavy +# If you want to build a daemon with a configuration tailored to YOUR special +# needs, call "fakeroot debian/rules unpack-configs", copy EDITME.exim4-light +# to EDITME.exim4-custom and modify it. +# +# Afterwards EITHER disable the definition of builddaemonpackages 4 lines above +# by adding a hash-mark (#) at the start of the line and enable the one +# below instead by removing the hash-mark OR simply call +# "fakeroot debian/rules builddaemonpackages=exim4-daemon-custom binary" +#builddaemonpackages=exim4-daemon-custom + +# If you want to build a source-package that builds the custom daemon call +# "fakeroot debian/rules pack-configs" after customizing EDITME.exim4-custom + +ifeq ($(buildbasepackages),yes) +buildpackages=exim4-base exim4-daemon-light eximon4 $(builddaemonpackages) +else +buildpackages=$(builddaemonpackages) +endif + +# generate -pexim4-base -peximon4 ... commandline for debhelper +dhbuildpackages=$(addprefix -p,$(buildpackages)) +# exim4-daemon-light --> build-exim4-daemon-light/exim +daemonbinaries=$(addprefix build-,$(addsuffix /exim,$(builddaemonpackages))) +debiandaemonbinaries=$(addprefix $(DEBIAN)/,$(addsuffix /usr/sbin/exim4,$(builddaemonpackages))) + +unpack-configs: patch + patch -o EDITME.exim4-light src/EDITME debian/EDITME.exim4-light.diff + patch -o EDITME.exim4-heavy EDITME.exim4-light debian/EDITME.exim4-heavy.diff + if [ -f debian/EDITME.exim4-custom.diff ]; then \ + patch -o EDITME.exim4-custom EDITME.exim4-light debian/EDITME.exim4-custom.diff;\ + fi + patch -o EDITME.eximon exim_monitor/EDITME debian/EDITME.eximon.diff + +pack-configs: patch + -diff -u src/EDITME EDITME.exim4-light > debian/EDITME.exim4-light.diff + -diff -u EDITME.exim4-light EDITME.exim4-heavy > debian/EDITME.exim4-heavy.diff + -if [ -f EDITME.exim4-custom ]; then \ + diff -u EDITME.exim4-light EDITME.exim4-custom \ + > debian/EDITME.exim4-custom.diff;\ + fi + -diff -u exim_monitor/EDITME EDITME.eximon > debian/EDITME.eximon.diff + +configure: configure-stamp + +# the patches might change src/EDITME. +configure-stamp: patch-stamp + dh_testdir + # Add here commands to configure the package. + patch -o EDITME.exim4-light src/EDITME debian/EDITME.exim4-light.diff + patch -o EDITME.exim4-heavy EDITME.exim4-light debian/EDITME.exim4-heavy.diff + if [ -f debian/EDITME.exim4-custom.diff ]; then \ + patch -o EDITME.exim4-custom EDITME.exim4-light debian/EDITME.exim4-custom.diff;\ + fi + patch -o EDITME.eximon exim_monitor/EDITME debian/EDITME.eximon.diff + + touch configure-stamp + +# Build binaries for the base package, the eximon4 package, and the +# exim4-daemon-light package. +build-exim4-daemon-light/exim: configure-stamp + echo build-exim4-daemon-light + dh_testdir + + rm -rf build-$(buildname) + # Add here command to compile/build the package. + mkdir -p Local + cp EDITME.exim4-light Local/Makefile + cp EDITME.eximon Local/eximon.conf + $(MAKE) + mv build-$(buildname) build-exim4-daemon-light + +build-exim4-daemon-custom/exim: configure-stamp + echo build-exim4-daemon-custom + dh_testdir + + rm -rf build-$(buildname) + # Add here command to compile/build the package. + mkdir -p Local + cp EDITME.exim4-custom Local/Makefile + $(MAKE) Local/Makefile configure + # This is a kludge. The upstream Makefile should be fixed, really. + $(MAKE) -C build-$(buildname) checklocalmake Makefile os.h os.c config.h buildpcre buildlookups buildrouters buildtransports buildauths exim + mv build-$(buildname) build-exim4-daemon-custom + +build-exim4-daemon-heavy/exim: configure-stamp + echo build-exim4-daemon-heavy + dh_testdir + + rm -rf build-$(buildname) + # Add here command to compile/build the package. + mkdir -p Local + cp EDITME.exim4-heavy Local/Makefile + $(MAKE) Local/Makefile configure + # This is a kludge. The upstream Makefile should be fixed, really. + $(MAKE) -C build-$(buildname) checklocalmake Makefile os.h os.c config.h buildpcre buildlookups buildrouters buildtransports buildauths exim + mv build-$(buildname) build-exim4-daemon-heavy + # build perl localscan-plugin + make -C contrib/local-scan-perl + +build-indep: build-indep-stamp +build-indep-stamp: + dh_testdir + + # Add here command to compile/build the arch indep package. + # It's ok not to do anything here, if you don't need to build + # anything for this package. + #/usr/bin/docbook-to-man debian/exim.sgml > exim.1 + + touch build-indep-stamp + +build-arch: build-arch-stamp + +ifeq ($(buildbasepackages),yes) +build-arch-stamp: build-exim4-daemon-light/exim $(daemonbinaries) +else +build-arch-stamp: $(daemonbinaries) +endif + dh_testdir + touch build-arch-stamp + +build: build-arch build-indep + +clean: cleanfiles unpatch + +cleanfiles: + dh_testdir + dh_testroot + rm -f build-stamp configure-stamp installbase-stamp + + # Add here commands to clean up after the build process. + -$(MAKE) clean + -$(MAKE) -C contrib/local-scan-perl clean + -rm -rf build-* doc/tmp + -rm -f EDITME.* Local/Makefile Local/eximon.conf + + chmod 755 $(DEBIAN)/exim-gencert + dh_clean + +installbase-stamp: build-exim4-daemon-light/exim + dh_testdir + dh_testroot + dh_clean -k + dh_installdirs + + rm -rf build-$(buildname) + ln -s build-exim4-daemon-light build-$(buildname) + $(MAKE) install \ + INSTALL_ARG=-no_symlink \ + inst_conf=$(DEBIAN)/exim4-base/usr/share/doc/exim4-base/examples/example.conf \ + inst_aliases=$(DEBIAN)/exim4-base/usr/share/doc/exim4-base/examples/aliases \ + inst_dest=$(DEBIAN)/exim4-base/usr/sbin + sed -e 's,PERL_COMMAND,/usr/bin/perl,' < src/convert4r4.src \ + > $(DEBIAN)/exim4-base/usr/sbin/exim_convert4r4 + chmod 755 $(DEBIAN)/exim4-base/usr/sbin/exim_convert4r4 + mv $(DEBIAN)/exim4-base/usr/sbin/exim \ + $(DEBIAN)/exim4-daemon-light/usr/sbin/exim4 + mv $(DEBIAN)/exim4-base/usr/sbin/eximon \ + $(DEBIAN)/eximon4/usr/sbin + mv $(DEBIAN)/exim4-base/usr/sbin/eximon.bin \ + $(DEBIAN)/eximon4/usr/lib/exim4 + pod2man --center=EXIM4 --section=8 \ + $(DEBIAN)/exim4-base/usr/sbin/eximstats \ + $(DEBIAN)/exim4-base/usr/share/man/man8/eximstats.8 + # if you change anything here, you will have to change + # config-custom/debian/rules as well + install -m 755 debian/debconf/update-exim4.conf debian/exim4-config/usr/sbin + install -m 755 $(DEBIAN)/update-exim4defaults $(DEBIAN)/exim4-config/usr/sbin + find debian/debconf/splitoff-parts -maxdepth 1 -type f | \ + xargs --replace install -m644 {} debian/exim4-config/var/lib/exim4 + install -m644 debian/debconf/splitoff-parts/[^C][^V][^S]* debian/exim4-config/var/lib/exim4 + # install -m644 debian/debconf/exim4.conf.template debian/exim4-config/etc/exim4 + + cd $(DEBIAN)/debconf/conf.d && \ + tar cf - `find \( -path '*/CVS/*' -prune \) -or \( -type f -print \)` | \ + { cd $(DEBIAN)/exim4-config/etc/exim4/conf.d/ && \ + tar xf - ; } + + # ship a copy in examples + # install -m644 debian/debconf/exim4.conf.template debian/exim4-config/usr/share/doc/exim4-config/examples/exim4.conf.template.debconf + install -m644 debian/email-addresses debian/exim4-config/etc/exim4 + install -m755 debian/ip-up.d debian/exim4-config/etc/ppp/ip-up.d/exim4 +# dh_movefiles + touch installbase-stamp + + +# This dependency expands to +# debian/exim4-daemon-heavy/usr/sbin/exim4: build-exim4-daemon-heavy/exim +$(debiandaemonbinaries): $(DEBIAN)/%/usr/sbin/exim4: build-%/exim + dh_testdir + dh_testroot + dh_installdirs + install -m4755 -oroot -groot $< $@ + + +# Build architecture-independent files here. +# this is just exim4-config +binary-indep: build $(install) + dh_testdir -i + dh_testroot -i + # upstream changelog is only in exim4-base + dh_link -i + dh_installchangelogs -i + dh_installdocs -i + dh_installexamples -i + #dh_installmenu -i + dh_installdebconf -i + dh_installlogrotate -i +# dh_installemacsen -i + #dh_installpam -i + #dh_installmime -i +# dh_installinit -i + dh_installcron -i +# dh_installinfo -i +# dh_undocumented -i + dh_installman -i + dh_install -i + dh_strip -i + dh_compress -i + dh_fixperms -i +# dh_makeshlibs -i + dh_installdeb -i +# dh_perl -i + dh_shlibdeps -i + dh_gencontrol -i + dh_md5sums -i + dh_builddeb -i + + +# Build architecture-dependent files here. +ifeq ($(buildbasepackages),yes) +install=installbase-stamp $(debiandaemonbinaries) +else +install=$(debiandaemonbinaries) +endif + +binary-arch: build $(install) + dh_testdir $(dhbuildpackages) + dh_testroot $(dhbuildpackages) + # upstream changelog is only in exim4-base, the other packages include + # a symlink + dh_installchangelogs -pexim4-base doc/ChangeLog + # remove "-pexim4-base" from "-pexim4-base -pexim4-daemon-light ..." + dh_installchangelogs $(subst -pexim4-base,,$(dhbuildpackages)) + dh_installdocs $(dhbuildpackages) + dh_installexamples $(dhbuildpackages) + dh_installmenu $(dhbuildpackages) + dh_installdebconf $(dhbuildpackages) + dh_installlogrotate $(dhbuildpackages) +# dh_installemacsen $(dhbuildpackages) + dh_installpam $(dhbuildpackages) + dh_installmime $(dhbuildpackages) + dh_installinit $(dhbuildpackages) --noscripts --init-script=exim4 + dh_installcron $(dhbuildpackages) +# dh_installinfo $(dhbuildpackages) +# dh_undocumented $(dhbuildpackages) + dh_installman $(dhbuildpackages) + dh_install $(dhbuildpackages) + dh_strip $(dhbuildpackages) + dh_link $(dhbuildpackages) + dh_compress $(dhbuildpackages) + dh_fixperms $(dhbuildpackages) -Xusr/sbin/exim4 +# dh_makeshlibs $(dhbuildpackages) + dh_installdeb $(dhbuildpackages) +# dh_perl $(dhbuildpackages) + dh_shlibdeps $(dhbuildpackages) + dh_gencontrol $(dhbuildpackages) + dh_md5sums $(dhbuildpackages) + dh_builddeb $(dhbuildpackages) + +binary: binary-arch binary-indep +.PHONY: build clean binary-indep binary-arch binary install diff --git a/debian/update-exim4defaults b/debian/update-exim4defaults new file mode 100644 index 0000000..627f349 --- /dev/null +++ b/debian/update-exim4defaults @@ -0,0 +1,274 @@ +#!/bin/sh +# update-exim4defaults(8): manage entries in /etc/default/exim4 +# per script + +#set -x + +defaultfile=/etc/default/exim4 + +EX4DEF_INIT=false +EX4DEF_FORCE=false + +[ "x${CFILEMODE}" = "x" ] && CFILEMODE=644 + +if [ -r ${defaultfile} ]; then + . ${defaultfile} +fi + + +# initialize variables +EX4DEF_QUEUERUNNER="${QUEUERUNNER}" +EX4DEF_QUEUEINTERVAL="${QUEUEINTERVAL}" +EX4DEF_COMMONOPTIONS="${COMMONOPTIONS}" +EX4DEF_QUEUERUNNEROPTIONS="${QUEUERUNNEROPTIONS}" +EX4DEF_QFLAGS="${QFLAGS}" +EX4DEF_SMTPLISTENEROPTIONS="${SMTPLISTENEROPTIONS}" +EX4DEF_CFILEMODE="${CFILEMODE}" + +EX4DEF_FLAGOPTIONS=false +EX4DEF_FLAGREMOVE=false + +ex4def_usage () +{ + echo "update-exim4defaults: manage entries in /etc/default/exim4" + echo " usage: update-exim4defaults [[--queuerunner combined|separate|no]" + echo " [--qflags flags ] [--queuetime time] [--commonoptions options]" + echo " [--queuerunneroptions options] [--smtplisteneroptions options]]" + echo " [--remove-common options] [--remove-queue options]" + echo " [--remove-smtp options]" + echo " [--force|-f] [--help|-h]" + echo " [--init]" +} + + +# used for initialzing and with --force. +ex4def_write(){ + EX4DEF_TMP=`tempfile -m 600 -p ex4` + cat << EOF > "${EX4DEF_TMP}" +# /etc/default/exim4 +EX4DEF_VERSION='${EX4DEF_VERSION}' + +# 'combined' - one daemon running queue and listening on SMTP port +# 'no' - no daemon running the queue +# 'separate' - two separate daemons +# setting this to 'no' will also disable queueruns from /etc/ppp/ip-up.d/exim4 +QUEUERUNNER='${EX4DEF_QUEUERUNNER}' +# how often should we run the queue +QUEUEINTERVAL='${EX4DEF_QUEUEINTERVAL}' +# options common to quez-runner and listening daemon +COMMONOPTIONS='${EX4DEF_COMMONOPTIONS}' +# more options for the daemon/process running the queue (applies to the one +# started in /etc/ppp/ip-up.d/exim4, too. +QUEUERUNNEROPTIONS='${EX4DEF_QUEUERUNNEROPTIONS}' +# special flags given to exim directly after the -q. See exim(8) +QFLAGS='${EX4DEF_QFLAGS}' +# options for daemon listening on port 25 +SMTPLISTENEROPTIONS='${EX4DEF_SMTPLISTENEROPTIONS}' +# file permissions of generated configfile +CFILEMODE='${EX4DEF_CFILEMODE}' +EOF + cat "${EX4DEF_TMP}" > "${defaultfile}" + rm -f "${EX4DEF_TMP}" +} + +## Parse commandline +TEMP=$(getopt -n update-exim4defaults \ + -l qflags:,queuerunner:,queuetime:,commonoptions:,queuerunneroptions:,smtplisteneroptions:,remove-common:,remove-queue:,remove-smtp:,force,help,init -- \ + +fh "$@") + +if test "$?" != 0; then + echo "Terminating..." >&2 + exit 1 +fi + +eval set -- ${TEMP} +while test "$1" != "--"; do + case $1 in + -f|--force) + EX4DEF_FORCE=true + ;; + -h|--help) + ex4def_usage + exit 0 + ;; + --qflags) + shift + EX4DEF_QFLAGS="$1" + ;; + --queuerunner) + shift + EX4DEF_QUEUERUNNER="$1" + ;; + --queuetime) + shift + EX4DEF_QUEUETIME="$1" + ;; + --commonoptions) + shift + EX4DEF_COMMONOPTIONS="$1" + EX4DEF_FLAGOPTIONS=true + ;; + --queuerunneroptions) + shift + EX4DEF_QUEUERUNNEROPTIONS="$1" + EX4DEF_FLAGOPTIONS=true + ;; + --smtplisteneroptions) + shift + EX4DEF_SMTPLISTENEROPTIONS="$1" + EX4DEF_FLAGOPTIONS=true + ;; + --remove-common) + shift + EX4DEF_REMOVECOMMON="$1" + EX4DEF_FLAGREMOVE=true + ;; + --remove-queue) + shift + EX4DEF_REMOVEQUEUE="$1" + EX4DEF_FLAGREMOVE=true + ;; + --remove-smtp) + shift + EX4DEF_REMOVESMTP="$1" + EX4DEF_FLAGREMOVE=true + ;; + --init) + EX4DEF_INIT=true + ;; + esac + shift +done +shift + +# No non-option arguments allowed. +if [ "$#" -ne 0 ]; then + echo "No non option arguments allowed" >&2 + ex4def_usage >&2 + exit 1 +fi + +if [ "${EX4DEF_FLAGREMOVE}" = "true" ] && [ "${EX4DEF_FLAGOPTIONS}" = "true" ] ; then + echo "Cannot use --remove-something together with --somethingoptions" >&2 + ex4def_usage >&2 + exit 1 +fi + +#if [ ! -r ${defaultfile} ]; then +# echo "Cannot read ${defaultfile}, terminating" >&2 +# exit 1 +#fi + +if "${EX4DEF_INIT}" = "true" ] ; then + [ -e "${defaultfile}" ] && [ "${EX4DEF_FORCE}" != "true" ] && exit 0 + # Reset to default values + EX4DEF_QUEUERUNNER='combined' + EX4DEF_QUEUEINTERVAL='30m' + EX4DEF_COMMONOPTIONS='' + EX4DEF_QUEUERUNNEROPTIONS='' + EX4DEF_QFLAGS='' + EX4DEF_SMTPLISTENEROPTIONS='' + EX4DEF_CFILEMODE='644' + + ex4def_write + exit 0 +fi + +#Try removing +if [ "${EX4DEF_FLAGREMOVE}" = "true" ] ; then + EX4DEF_REMOVEERROR="false" + if [ ! -z "${EX4DEF_REMOVECOMMON}" ] ; then + EX4DEF_COMMONOPTIONS=$(echo "${COMMONOPTIONS}" | \ + sed -e "sÄ${EX4DEF_REMOVECOMMON}ÄÄ" -e "s/ / /g" -e 's/^ //' -e 's/ $//') + [ "${EX4DEF_COMMONOPTIONS}" = "${COMMONOPTIONS}" ] && \ + EX4DEF_REMOVEERROR="true" + fi + if [ ! -z "${EX4DEF_REMOVEQUEUE}" ] ; then + EX4DEF_QUEUERUNNEROPTIONS=$(echo "${QUEUERUNNEROPTIONS}" | \ + sed -e "sÄ${EX4DEF_REMOVEQUEUE}ÄÄ" -e "s/ / /g" -e 's/^ //' -e 's/ $//') + [ "${EX4DEF_QUEUERUNNEROPTIONS}" = "${QUEUERUNNEROPTIONS}" ] && \ + EX4DEF_REMOVEERROR="true" + fi + if [ ! -z "${EX4DEF_REMOVESMTP}" ] ; then + EX4DEF_SMTPLISTENEROPTIONS=$(echo "${SMTPLISTENEROPTIONS}" | \ + sed -e "sÄ${EX4DEF_REMOVESMTP}ÄÄ" -e "s/ / /g" -e 's/^ //' -e 's/ $//') + [ "${EX4DEF_SMTPLISTENEROPTIONS}" = "${SMTPLISTENEROPTIONS}"] && \ + EX4DEF_REMOVEERROR="true" + fi + if [ "x${EX4DEF_REMOVEERROR}" = "xtrue" ] ; then + echo "$0: removing failed, no changes" >&2 + exit 64 + fi + + EX4DEF_TMP=`tempfile -m 600 -p ex4` + sed -e "sÄ^QFLAGS=.*ÄQFLAGS='${EX4DEF_QFLAGS}'Ä" \ + -e "sÄ^QUEUERUNNER=.*ÄQUEUERUNNER='${EX4DEF_QUEUERUNNER}'Ä" \ + -e "sÄ^QUEUEINTERVAL=.*ÄQUEUEINTERVAL='${EX4DEF_QUEUEINTERVAL}'Ä" \ + -e "sÄ^COMMONOPTIONS=.*ÄCOMMONOPTIONS='${EX4DEF_COMMONOPTIONS}'Ä" \ + -e "sÄ^QUEUERUNNEROPTIONS=.*ÄQUEUERUNNEROPTIONS='${EX4DEF_QUEUERUNNEROPTIONS}'Ä" \ + -e "sÄ^SMTPLISTENEROPTIONS=.*ÄSMTPLISTENEROPTIONS='${EX4DEF_SMTPLISTENEROPTIONS}'Ä" \ + < $defaultfile > "${EX4DEF_TMP}" + mv "${EX4DEF_TMP}" $defaultfile + rm -f "${EX4DEF_TMP}" + exit 0 +fi + +if [ "${EX4DEF_FORCE}" = "true" ] ; then + ex4def_write + exit 0 + +else + EX4DEF_DOANYTHING=0 + EX4DEF_NOTALLOWED=0 + if [ "x${QUEUERUNNER}" != "x${EX4DEF_QUEUERUNNER}" ]; then + EX4DEF_DOANYTHING=$((${EX4DEF_DOANYTHING}+1)) + # switching the QUEUERUNNER modus is always allowed + #[ -z "${QUEUERUNNER}" ] || EX4DEF_NOTALLOWED=$((${EX4DEF_NOTALLOWED}+1)) + fi + if [ "x${QUEUEINTERVAL}" != "x${EX4DEF_QUEUEINTERVAL}" ] ; then + EX4DEF_DOANYTHING=$((${EX4DEF_DOANYTHING}+2)) + [ -z "${QUEUEINTERVAL}" ] || \ + EX4DEF_NOTALLOWED=$((${EX4DEF_NOTALLOWED}+2)) + fi + if [ "x${COMMONOPTIONS}" != "x${EX4DEF_COMMONOPTIONS}" ] ; then + EX4DEF_DOANYTHING=$((${EX4DEF_DOANYTHING}+4)) + [ -z "${COMMONOPTIONS}" ] || \ + EX4DEF_NOTALLOWED=$((${EX4DEF_NOTALLOWED}+4)) + fi + if [ "x${QUEUERUNNEROPTIONS}" != "x${EX4DEF_QUEUERUNNEROPTIONS}" ] ; then + EX4DEF_DOANYTHING=$((${EX4DEF_DOANYTHING}+8)) + [ -z "${QUEUERUNNEROPTIONS}" ] || \ + EX4DEF_NOTALLOWED=$((${EX4DEF_NOTALLOWED}+8)) + fi + if [ "x${SMTPLISTENEROPTIONS}" != "x${EX4DEF_SMTPLISTENEROPTIONS}" ] ; then + EX4DEF_DOANYTHING=$((${EX4DEF_DOANYTHING}+16)) + [ -z "${SMTPLISTENEROPTIONS}" ] || \ + EX4DEF_NOTALLOWED=$((${EX4DEF_NOTALLOWED}+16)) + fi + if [ "x${QFLAGS}" != "x${EX4DEF_QFLAGS}" ] ; then + EX4DEF_DOANYTHING=$((${EX4DEF_DOANYTHING}+32)) + [ -z "${QFLAGS}" ] || \ + EX4DEF_NOTALLOWED=$((${EX4DEF_NOTALLOWED}+32)) + fi + + [ ${EX4DEF_DOANYTHING} -eq 0 ] && exit 0 + if [ ${EX4DEF_NOTALLOWED} -ne 0 ] ; then + echo "setting(s) conflict with current one, terminating" >&2 + exit ${EX4DEF_NOTALLOWED} + fi + + EX4DEF_TMP=`tempfile -m 600 -p ex4` + sed -e "sÄ^QFLAGS=.*ÄQFLAGS='${EX4DEF_QFLAGS}'Ä" \ + -e "sÄ^QUEUERUNNER=.*ÄQUEUERUNNER='${EX4DEF_QUEUERUNNER}'Ä" \ + -e "sÄ^QUEUEINTERVAL=.*ÄQUEUEINTERVAL='${EX4DEF_QUEUEINTERVAL}'Ä" \ + -e "sÄ^COMMONOPTIONS=.*ÄCOMMONOPTIONS='${EX4DEF_COMMONOPTIONS}'Ä" \ + -e "sÄ^QUEUERUNNEROPTIONS=.*ÄQUEUERUNNEROPTIONS='${EX4DEF_QUEUERUNNEROPTIONS}'Ä" \ + -e "sÄ^SMTPLISTENEROPTIONS=.*ÄSMTPLISTENEROPTIONS='${EX4DEF_SMTPLISTENEROPTIONS}'Ä" \ + < $defaultfile > "${EX4DEF_TMP}" + mv "${EX4DEF_TMP}" $defaultfile + rm -f "${EX4DEF_TMP}" + exit 0 +fi + + + |