Package: release.debian.org Severity: normal User: release.debian....@packages.debian.org Usertags: unblock
Please unblock package exim4 * Cherrypick 78_01-Command-line-option-for-no-notifier-socket.-Bug-2616.patch from upstream GIT master. This allows one to disable creation of a daemon notifier socket by either setting notifier_socket to a empty value or specifying -oY commandline option. * Init script: For QUEUERUNNER='separate' start daemons with -oY commandline option to disable daemon notifier socket. Enforce lockstep ugrade of -base and *daemon* by temporarily adding a versioned Breaks to exim4-base on older *daemon*. Closes: #988844 (change by Andreas Metzler) This fixes a regression from buster. Maintainer and bug submitter are in Cc, ack/nak would be appreciated. unblock exim4/4.94.2-6
diff -Nru exim4-4.94.2/debian/changelog exim4-4.94.2/debian/changelog --- exim4-4.94.2/debian/changelog 2021-05-17 18:45:00.000000000 +0300 +++ exim4-4.94.2/debian/changelog 2021-05-26 19:49:44.000000000 +0300 @@ -1,3 +1,17 @@ +exim4 (4.94.2-6) unstable; urgency=medium + + * Cherrypick + 78_01-Command-line-option-for-no-notifier-socket.-Bug-2616.patch from + upstream GIT master. This allows one to disable creation of a + daemon notifier socket by either setting notifier_socket to a empty value + or specifying -oY commandline option. + * Init script: For QUEUERUNNER='separate' start daemons with -oY commandline + option to disable daemon notifier socket. Enforce lockstep ugrade of -base + and *daemon* by temporarily adding a versioned Breaks to exim4-base on + older *daemon*. Closes: #988844 + + -- Andreas Metzler <ametz...@debian.org> Wed, 26 May 2021 18:49:44 +0200 + exim4 (4.94.2-5) unstable; urgency=high * 73_04-Fix-host_name_lookup-Close-2747.patch from exim-4.94.2+fixes. diff -Nru exim4-4.94.2/debian/control exim4-4.94.2/debian/control --- exim4-4.94.2/debian/control 2021-05-04 19:23:02.000000000 +0300 +++ exim4-4.94.2/debian/control 2021-05-26 19:49:44.000000000 +0300 @@ -1,3 +1,6 @@ +# * -base and daemon of the same upstream version enforced by a Breaks +# in -base and a versioned Depends of the daemon-packages on -base +# * -base depends on -config, without automatic versioning. Source: exim4 Section: mail Priority: standard @@ -42,7 +45,10 @@ Breaks: exim4-daemon-custom (<<${Upstream-Version}), exim4-daemon-heavy (<<${Upstream-Version}), - exim4-daemon-light (<<${Upstream-Version}) + exim4-daemon-light (<<${Upstream-Version}), + exim4-daemon-custom (<< 4.94.2-6~), + exim4-daemon-heavy (<< 4.94.2-6~), + exim4-daemon-light (<< 4.94.2-6~) Conflicts: exim, exim-tls Replaces: exim, diff -Nru exim4-4.94.2/debian/exim4-base.exim4.init exim4-4.94.2/debian/exim4-base.exim4.init --- exim4-4.94.2/debian/exim4-base.exim4.init 2020-05-23 19:20:09.000000000 +0300 +++ exim4-4.94.2/debian/exim4-base.exim4.init 2021-05-23 12:46:53.000000000 +0300 @@ -95,13 +95,13 @@ separate) start_daemon -p "$PIDFILE" \ "$DAEMON" -bd \ - ${COMMONOPTIONS} \ + ${COMMONOPTIONS} -oY \ ${SMTPLISTENEROPTIONS} log_progress_msg "exim4_listener" start_daemon -p "$QRPIDFILE" \ "$DAEMON" -oP $QRPIDFILE \ "-q${QFLAGS}${QUEUEINTERVAL}" \ - ${COMMONOPTIONS} \ + ${COMMONOPTIONS} -oY \ ${QUEUERUNNEROPTIONS} log_progress_msg "exim4_queuerunner" ;; diff -Nru exim4-4.94.2/debian/patches/78_01-Command-line-option-for-no-notifier-socket.-Bug-2616.patch exim4-4.94.2/debian/patches/78_01-Command-line-option-for-no-notifier-socket.-Bug-2616.patch --- exim4-4.94.2/debian/patches/78_01-Command-line-option-for-no-notifier-socket.-Bug-2616.patch 1970-01-01 02:00:00.000000000 +0200 +++ exim4-4.94.2/debian/patches/78_01-Command-line-option-for-no-notifier-socket.-Bug-2616.patch 2021-05-22 14:50:52.000000000 +0300 @@ -0,0 +1,198 @@ +From 99ea5f6faeaf714e34bbcd75fdc50cc94dc7a1c8 Mon Sep 17 00:00:00 2001 +From: Jeremy Harris <jgh146...@wizmail.org> +Date: Fri, 10 Jul 2020 13:55:25 +0100 +Subject: [PATCH] Command-line option for no notifier socket. Bug 2616 + +--- + doc/doc-docbook/spec.xfpt | 33 +++++++++++++++++++++++++-- + doc/NewStuff | 2 ++ + src/daemon.c | 5 ++++ + src/exim.c | 9 +++++++- + test/scripts/0999-EXP-Queue-Ramp/0999 | 2 +- + 5 files changed, 47 insertions(+), 4 deletions(-) + +--- a/doc/NewStuff ++++ b/doc/NewStuff +@@ -2,14 +2,20 @@ New Features in Exim + -------------------- + + This file contains descriptions of new features that have been added to Exim. + Before a formal release, there may be quite a lot of detail so that people can + test from the snapshots or the Git before the documentation is updated. Once + the documentation is updated, this file is reduced to a short list. + ++Cherrypicked from GIT master: ++------------ ++ ++10. A command-line option to have a daemon not create a notifier socket. ++ ++ + Version 4.95 + ------------ + + 1. The fast-ramp two phase queue run support, previously experimental, is + now supported by default. + + 2. The native SRS support, previously experimental, is now supported. It is +--- a/src/daemon.c ++++ b/src/daemon.c +@@ -1140,14 +1140,19 @@ static void + daemon_notifier_socket(void) + { + int fd; + const uschar * where; + struct sockaddr_un sa_un = {.sun_family = AF_UNIX}; + int len; + ++if (!notifier_socket || !*notifier_socket) ++ { ++ DEBUG(D_any) debug_printf("-oY used so not creating notifier socket\n"); ++ return; ++ } + if (override_local_interfaces && !override_pid_file_path) + { + DEBUG(D_any) + debug_printf("-oX used without -oP so not creating notifier socket\n"); + return; + } + +--- a/src/exim.c ++++ b/src/exim.c +@@ -3231,14 +3231,21 @@ on the second character (the one after ' + /* Limits: Is there a real limit we want here? 1024 is very arbitrary. */ + + case 'X': + if (*argrest) badarg = TRUE; + else override_local_interfaces = string_copy_taint(exim_str_fail_toolong(argv[++i], 1024, "-oX"), TRUE); + break; + ++ /* -oY: Override creation of daemon notifier socket */ ++ ++ case 'Y': ++ if (*argrest) badarg = TRUE; ++ else notifier_socket = NULL; ++ break; ++ + /* Unknown -o argument */ + + default: + badarg = TRUE; + } + break; + +@@ -4818,15 +4825,15 @@ if (originator_login == NULL || f.runnin + log_write(0, LOG_MAIN|LOG_PANIC_DIE, "Failed to get user name for uid %d", + (int)real_uid); + } + + /* Ensure that the user name is in a suitable form for use as a "phrase" in an + RFC822 address.*/ + +-originator_name = parse_fix_phrase(originator_name, Ustrlen(originator_name)); ++originator_name = US parse_fix_phrase(originator_name, Ustrlen(originator_name)); + + /* If a message is created by this call of Exim, the uid/gid of its originator + are those of the caller. These values are overridden if an existing message is + read in from the spool. */ + + originator_uid = real_uid; + originator_gid = real_gid; +--- a/doc/spec.txt ++++ b/doc/spec.txt +@@ -4189,14 +4189,27 @@ brief message about itself and exits. + + This option is relevant only when the -bd (start listening daemon) option + is also given. It controls which ports and interfaces the daemon uses. + Details of the syntax, and how it interacts with configuration file + options, are given in chapter 13. When -oX is used to start a daemon, no + pid file is written unless -oP is also present to specify a pid filename. + ++-oY ++ ++ This option controls the creation of an inter-process communications ++ endpoint by the Exim daemon. It is only relevant when the -bd ++ (start listening daemon) option is also given. Normally the daemon ++ creates this socket, unless a oX and no -oP option is also ++ present. If this option is given then the socket will not be created. ++ This could be required if the system is running multiple daemons. ++ ++ The socket is currently used for ++ * fast ramp-up of queue runner processes ++ * obtaining a current queue size ++ + -pd + + This option applies when an embedded Perl interpreter is linked with Exim + (see chapter 12). It overrides the setting of the perl_at_start option, + forcing the starting of the interpreter to be delayed until it is needed. + + -ps +@@ -11733,14 +11746,16 @@ $queue_name + + The name of the spool queue in use; empty for the default queue. + + $queue_size + + This variable contains the number of messages queued. It is evaluated on + demand, but no more often than once every minute. ++ If there is no daemon notifier socket open, the value will be ++ an empty string. + + $r_... + + Values can be placed in these variables by the set option of a router. They + can be given any name that starts with $r_. The values persist for the + address being handled through subsequent routers and the eventual + transport. +@@ -15227,18 +15242,20 @@ driver. + +-----------------------------------------------------------------------------+ + + This option gives the name for a unix-domain socket on which the daemon listens + for work and information-requests. Only installations running multiple daemons + sharing a spool directory should need to modify the default. + + The option is expanded before use. If the platform supports Linux-style +-abstract socket names, the result is used with a nul byte prefixed. Otherwise, +-it should be a full path name and use a directory accessible to Exim. ++abstract socket names, the result is used with a nul byte prefixed. ++Otherwise, if nonempty, it should be a full path name and use a directory ++accessible to Exim. + +-If the Exim command line uses a -oX option and does not use -oP then a notifier ++If this option is set as empty, or the command line -oY option is used, or ++the command line uses a -oX option and does not use -oP, then a notifier + socket is not created. + + +-----------------------------------------------------------------------------+ + | |Use: | Type: |Default: +no_sslv2 +no_sslv3 +single_dh_use| + |openssl_options| main | string | +no_ticket +no_renegotiation| + | | | list | | + +-----------------------------------------------------------------------------+ +--- a/doc/exim.8 ++++ b/doc/exim.8 +@@ -1445,14 +1445,25 @@ the \fBsmtp_receive_timeout\fP option; i + This option has exactly the same effect as \fB\-v\fP. + .TP 10 + \fB\-oX\fP <\fInumber or string\fP> + This option is relevant only when the \fB\-bd\fP (start listening daemon) option + is also given. It controls which ports and interfaces the daemon uses. When \fB\-oX\fP is used to start a daemon, no pid + file is written unless \fB\-oP\fP is also present to specify a pid filename. + .TP 10 ++\fB\-oY\fP ++This option controls the creation of an inter-process communications endpoint ++by the Exim daemon. It is only relevant when the \fB\-bd\fP (start listening ++daemon) option is also given. ++Normally the daemon creates this socket, unless a \fB\-oX\fP and no \fB\-oP\fP ++option is also present. ++If this option is given then the socket will not be created. This could be ++required if the system is running multiple daemons. ++The socket is currently used for fast ramp-up of queue runner processes and ++obtaining a current queue size. ++.TP 10 + \fB\-pd\fP + This option applies when an embedded Perl interpreter is linked with Exim. It overrides the setting of the \fBperl_at_start\fP + option, forcing the starting of the interpreter to be delayed until it is + needed. + .TP 10 + \fB\-ps\fP + This option applies when an embedded Perl interpreter is linked with Exim. It overrides the setting of the \fBperl_at_start\fP diff -Nru exim4-4.94.2/debian/patches/series exim4-4.94.2/debian/patches/series --- exim4-4.94.2/debian/patches/series 2021-05-17 14:05:54.000000000 +0300 +++ exim4-4.94.2/debian/patches/series 2021-05-22 14:27:33.000000000 +0300 @@ -36,4 +36,5 @@ 75_26-Disable-taintchecks-for-mkdir-this-isn-t-part-of-4.9.patch 75_27_Fix-logging-with-empty-element-in-log_file_path-Bug-.patch 75_28_Fix-logging-with-build-time-config-and-empty-element.patch +78_01-Command-line-option-for-no-notifier-socket.-Bug-2616.patch 90_localscan_dlopen.dpatch