[packages/exim] - up to 4.93; localscan patch updated from debian; dropped obsolete patches
arekm
arekm at pld-linux.org
Wed Dec 11 09:05:16 CET 2019
commit 96e93d3ddfc43b968aca829f872aff071a2f9068
Author: Arkadiusz Miśkiewicz <arekm at maven.pl>
Date: Wed Dec 11 09:05:03 2019 +0100
- up to 4.93; localscan patch updated from debian; dropped obsolete patches
branch.sh | 4 +-
dsn-references.patch | 285 -----------------------------
exim-bug-1891.patch | 64 -------
exim.spec | 22 +--
exim4-EDITME.patch | 111 ++++++-----
localscan_dlopen_exim_4.20_or_better.patch | 160 ++++++++++------
6 files changed, 173 insertions(+), 473 deletions(-)
---
diff --git a/exim.spec b/exim.spec
index a410043..5f7d318 100644
--- a/exim.spec
+++ b/exim.spec
@@ -24,15 +24,15 @@ Summary: University of Cambridge Mail Transfer Agent
Summary(pl.UTF-8): Agent Transferu Poczty Uniwersytetu w Cambridge
Summary(pt_BR.UTF-8): Servidor de correio eletrônico exim
Name: exim
-Version: 4.92.3
-Release: 4
+Version: 4.93
+Release: 1
Epoch: 2
License: GPL
Group: Networking/Daemons/SMTP
Source0: ftp://ftp.exim.org/pub/exim/exim4/%{name}-%{version}.tar.bz2
-# Source0-md5: c9c72bfcaa391bca3da5441af58e8858
+# Source0-md5: d8a9342b2c0f2275717ba1f9fafbc3aa
Source1: ftp://ftp.exim.org/pub/exim/exim4/%{name}-html-%{version}.tar.bz2
-# Source1-md5: b084f88d9d1d346f21c38a36d7b16251
+# Source1-md5: 1985746cb7fbe8141c9f4b7fc6adece3
Source2: %{name}.init
Source3: %{name}.cron.db
Source4: %{name}4.conf
@@ -51,7 +51,7 @@ Source15: %{name}4-smtp.pamd
Source16: %{name}on.png
# sh branch.sh
Patch100: %{name}-git.patch
-# Patch100-md5: 722a9915d1a0c59953fd68c55030487b
+# Patch100-md5: 3c82284c70beeaf89becc1157d7cd100
Patch0: %{name}4-EDITME.patch
Patch1: %{name}4-monitor-EDITME.patch
Patch2: %{name}4-cflags.patch
@@ -59,8 +59,7 @@ Patch3: exim-defs.patch
Patch4: %{name}4-Makefile-Default.patch
# http://marc.merlins.org/linux/exim/files/sa-exim-cvs/localscan_dlopen_exim_4.20_or_better.patch
Patch5: localscan_dlopen_%{name}_4.20_or_better.patch
-Patch6: exim-bug-1891.patch
-Patch7: dsn-references.patch
+
Patch8: %{name}-spam-timeout.patch
Patch20: %{name}4-disableSSLv3.patch
@@ -177,16 +176,14 @@ Pliki nagłówkowe dla Exima.
%prep
%setup -q -a1 -a7
-%patch100 -p2
-
+#%patch100 -p2
%patch0 -p1
%patch1 -p1
%patch2 -p1
%patch3 -p1
%patch4 -p1
%patch5 -p1
-%patch6 -p2
-%patch7 -p2
+
%patch8 -p1
install %{SOURCE4} exim4.conf
@@ -212,7 +209,7 @@ SUPPORT_I18N_2008=yes
LDFLAGS+= -lidn -lidn2
SUPPORT_PROXY=yes
%if %{with dmarc}
-EXPERIMENTAL_DMARC=yes
+SUPPORT_DMARC=yes
LOOKUP_LIBS+=-lopendmarc
%endif
%if %{with spf}
@@ -275,6 +272,7 @@ LOOKUP_LIBS+=-lldap -llber
EXPERIMENTAL_LMDB=yes
LOOKUP_LIBS+=-llmdb
%endif
+DLOPEN_LOCAL_SCAN=yes
EOF
# have to be after Local/Makefile-Linux creation
diff --git a/branch.sh b/branch.sh
index e35deb1..ed24834 100755
--- a/branch.sh
+++ b/branch.sh
@@ -2,8 +2,8 @@
set -e
url=git://git.exim.org/exim.git
package=exim
-tag=exim-4.92.3
-branch=exim-4.92.3+fixes
+tag=exim-4.93
+branch=exim-4.93+fixes
out=$package-git.patch
repo=$package.git
diff --git a/dsn-references.patch b/dsn-references.patch
deleted file mode 100644
index 8267e82..0000000
--- a/dsn-references.patch
+++ /dev/null
@@ -1,285 +0,0 @@
-commit d6c829b9a350f61c98196768e3260beb3cbecbfe
-Author: Jeremy Harris <jgh146exb at wizmail.org>
-Date: Wed Oct 2 14:49:55 2019 +0100
-
- DSN: add References: header. Bug 2452
-
-diff --git a/src/src/deliver.c b/src/src/deliver.c
-index 72751c2dc..7433b5fb2 100644
---- a/src/src/deliver.c
-+++ b/src/src/deliver.c
-@@ -7344,7 +7344,7 @@ if (addr_senddsn)
- if (pid < 0) /* Creation of child failed */
- {
- log_write(0, LOG_MAIN|LOG_PANIC_DIE, "Process %d (parent %d) failed to "
-- "create child process to send failure message: %s", getpid(),
-+ "create child process to send success-dsn message: %s", getpid(),
- getppid(), strerror(errno));
-
- DEBUG(D_deliver) debug_printf("DSN: child_open_exim failed\n");
-@@ -7357,7 +7357,7 @@ if (addr_senddsn)
- transport_ctx tctx = {{0}};
-
- DEBUG(D_deliver)
-- debug_printf("sending error message to: %s\n", sender_address);
-+ debug_printf("sending success-dsn to: %s\n", sender_address);
-
- /* build unique id for MIME boundary */
- bound = string_sprintf(TIME_T_FMT "-eximdsn-%d", time(NULL), rand());
-@@ -7369,8 +7369,11 @@ if (addr_senddsn)
- moan_write_from(f);
- fprintf(f, "Auto-Submitted: auto-generated\n"
- "To: %s\n"
-- "Subject: Delivery Status Notification\n"
-- "Content-Type: multipart/report; report-type=delivery-status; boundary=%s\n"
-+ "Subject: Delivery Status Notification\n",
-+ sender_address);
-+ moan_write_references(f, NULL);
-+ fprintf(f, "Content-Type: multipart/report;"
-+ " report-type=delivery-status; boundary=%s\n"
- "MIME-Version: 1.0\n\n"
-
- "--%s\n"
-@@ -7378,7 +7381,7 @@ if (addr_senddsn)
-
- "This message was created automatically by mail delivery software.\n"
- " ----- The following addresses had successful delivery notifications -----\n",
-- sender_address, bound, bound);
-+ bound, bound);
-
- for (address_item * a = addr_senddsn; a; a = a->next)
- fprintf(f, "<%s> (relayed %s)\n\n",
-@@ -7607,6 +7610,7 @@ while (addr_failed)
- fprintf(fp, "Auto-Submitted: auto-replied\n");
- moan_write_from(fp);
- fprintf(fp, "To: %s\n", bounce_recipient);
-+ moan_write_references(fp, NULL);
-
- /* generate boundary string and output MIME-Headers */
- bound = string_sprintf(TIME_T_FMT "-eximdsn-%d", time(NULL), rand());
-@@ -8192,7 +8196,8 @@ else if (addr_defer != (address_item *)(+1))
-
- DEBUG(D_deliver)
- {
-- debug_printf("time on queue = %s id %s addr %s\n", readconf_printtime(queue_time), message_id, addr_defer->address);
-+ debug_printf("time on queue = %s id %s addr %s\n",
-+ readconf_printtime(queue_time), message_id, addr_defer->address);
- debug_printf("warning counts: required %d done %d\n", count,
- warning_count);
- }
-@@ -8230,6 +8235,7 @@ else if (addr_defer != (address_item *)(+1))
- fprintf(f, "Auto-Submitted: auto-replied\n");
- moan_write_from(f);
- fprintf(f, "To: %s\n", recipients);
-+ moan_write_references(f, NULL);
-
- /* generated boundary string and output MIME-Headers */
- bound = string_sprintf(TIME_T_FMT "-eximdsn-%d", time(NULL), rand());
-diff --git a/src/src/functions.h b/src/src/functions.h
-index 31c005773..d99f15465 100644
---- a/src/src/functions.h
-+++ b/src/src/functions.h
-@@ -335,6 +335,7 @@ extern void moan_tell_someone(uschar *, address_item *,
- const uschar *, const char *, ...) PRINTF_FUNCTION(4,5);
- extern BOOL moan_to_sender(int, error_block *, header_line *, FILE *, BOOL);
- extern void moan_write_from(FILE *);
-+extern void moan_write_references(FILE *, uschar *);
- extern FILE *modefopen(const uschar *, const char *, mode_t);
-
- extern int open_cutthrough_connection( address_item * addr );
-diff --git a/src/src/moan.c b/src/src/moan.c
-index f6cda37f2..31d033c1a 100644
---- a/src/src/moan.c
-+++ b/src/src/moan.c
-@@ -28,7 +28,7 @@ Returns: nothing
- void
- moan_write_from(FILE *f)
- {
--uschar *s = expand_string(dsn_from);
-+uschar * s = expand_string(dsn_from);
- if (!s)
- {
- log_write(0, LOG_MAIN|LOG_PANIC,
-@@ -40,6 +40,80 @@ fprintf(f, "From: %s\n", s);
-
-
-
-+/*************************************************
-+* Write References: line for DSN *
-+*************************************************/
-+
-+/* Generate a References: header if there is in the header_list
-+at least one of Message-ID:, References:, or In-Reply-To: (see RFC 2822).
-+
-+Arguments: f the FILE to write to
-+ message_id optional already-found message-id, or NULL
-+
-+Returns: nothing
-+*/
-+
-+void
-+moan_write_references(FILE * fp, uschar * message_id)
-+{
-+header_line * h;
-+
-+if (!message_id)
-+ for (h = header_list; h; h = h->next)
-+ if (h->type == htype_id)
-+ {
-+ message_id = Ustrchr(h->text, ':') + 1;
-+ while (isspace(*message_id)) message_id++;
-+ }
-+
-+for (h = header_list; h; h = h->next)
-+ if (h->type != htype_old && strncmpic(US"References:", h->text, 11) == 0)
-+ break;
-+
-+if (!h)
-+ for (h = header_list; h; h = h->next)
-+ if (h->type != htype_old && strncmpic(US"In-Reply-To:", h->text, 12) == 0)
-+ break;
-+
-+/* We limit the total length of references. Although there is no fixed
-+limit, some systems do not like headers growing beyond recognition.
-+Keep the first message ID for the thread root and the last few for
-+the position inside the thread, up to a maximum of 12 altogether. */
-+
-+if (h || message_id)
-+ {
-+ fprintf(fp, "References:");
-+ if (h)
-+ {
-+ uschar * s, * id, * error;
-+ uschar * referenced_ids[12];
-+ int reference_count = 0;
-+
-+ s = Ustrchr(h->text, ':') + 1;
-+ f.parse_allow_group = FALSE;
-+ while (*s && (s = parse_message_id(s, &id, &error)))
-+ if (reference_count == nelem(referenced_ids))
-+ {
-+ memmove(referenced_ids + 1, referenced_ids + 2,
-+ sizeof(referenced_ids) - 2*sizeof(uschar *));
-+ referenced_ids[reference_count - 1] = id;
-+ }
-+ else
-+ referenced_ids[reference_count++] = id;
-+
-+ for (int i = 0; i < reference_count; ++i)
-+ fprintf(fp, " %s", referenced_ids[i]);
-+ }
-+
-+ /* The message id will have a newline on the end of it. */
-+
-+ if (message_id) fprintf(fp, " %s", message_id);
-+ else fprintf(fp, "\n");
-+ }
-+}
-+
-+
-+
- /*************************************************
- * Send error message *
- *************************************************/
-@@ -119,6 +193,7 @@ else
- moan_write_from(fp);
-
- fprintf(fp, "To: %s\n", recipient);
-+moan_write_references(fp, NULL);
-
- switch(ident)
- {
-@@ -145,7 +220,7 @@ switch(ident)
- "A message that you sent contained one or more recipient addresses that were\n"
- "incorrectly constructed:\n\n");
-
-- while (eblock != NULL)
-+ while (eblock)
- {
- fprintf(fp, " %s: %s\n", eblock->text1, eblock->text2);
- count++;
-@@ -522,6 +597,7 @@ f = fdopen(fd, "wb");
- fprintf(f, "Auto-Submitted: auto-replied\n");
- moan_write_from(f);
- fprintf(f, "To: %s\n", who);
-+moan_write_references(f, NULL);
- fprintf(f, "Subject: %s\n\n", subject);
- va_start(ap, format);
- vfprintf(f, format, ap);
-@@ -656,8 +732,7 @@ llen = domain++ - recipient;
-
- /* Scan through the configured items */
-
--while ((item = string_nextinlist(&listptr, &sep, buffer, sizeof(buffer)))
-- != NULL)
-+while ((item = string_nextinlist(&listptr, &sep, buffer, sizeof(buffer))))
- {
- const uschar *newaddress = item;
- const uschar *pattern = string_dequote(&newaddress);
-@@ -759,6 +834,7 @@ fprintf(f, "Auto-Submitted: auto-replied\n");
- moan_write_from(f);
- fprintf(f, "To: %s\n", s);
- fprintf(f, "Subject: error(s) in forwarding or filtering\n\n");
-+moan_write_references(f, NULL);
-
- if (custom)
- {
-diff --git a/src/src/transports/autoreply.c b/src/src/transports/autoreply.c
-index 734e65833..1aef02aaf 100644
---- a/src/src/transports/autoreply.c
-+++ b/src/src/transports/autoreply.c
-@@ -599,53 +599,7 @@ if (h)
- fprintf(fp, "In-Reply-To: %s", message_id);
- }
-
--/* Generate a References header if there is at least one of Message-ID:,
--References:, or In-Reply-To: (see RFC 2822). */
--
--for (h = header_list; h; h = h->next)
-- if (h->type != htype_old && strncmpic(US"References:", h->text, 11) == 0)
-- break;
--
--if (!h)
-- for (h = header_list; h; h = h->next)
-- if (h->type != htype_old && strncmpic(US"In-Reply-To:", h->text, 12) == 0)
-- break;
--
--/* We limit the total length of references. Although there is no fixed
--limit, some systems do not like headers growing beyond recognition.
--Keep the first message ID for the thread root and the last few for
--the position inside the thread, up to a maximum of 12 altogether. */
--
--if (h || message_id)
-- {
-- fprintf(fp, "References:");
-- if (h)
-- {
-- uschar *s, *id, *error;
-- uschar *referenced_ids[12];
-- int reference_count = 0;
-- int i;
--
-- s = Ustrchr(h->text, ':') + 1;
-- f.parse_allow_group = FALSE;
-- while (*s != 0 && (s = parse_message_id(s, &id, &error)) != NULL)
-- {
-- if (reference_count == nelem(referenced_ids))
-- {
-- memmove(referenced_ids + 1, referenced_ids + 2,
-- sizeof(referenced_ids) - 2*sizeof(uschar *));
-- referenced_ids[reference_count - 1] = id;
-- }
-- else referenced_ids[reference_count++] = id;
-- }
-- for (i = 0; i < reference_count; ++i) fprintf(fp, " %s", referenced_ids[i]);
-- }
--
-- /* The message id will have a newline on the end of it. */
--
-- if (message_id) fprintf(fp, " %s", message_id);
-- else fprintf(fp, "\n");
-- }
-+ moan_write_references(fp, message_id);
-
- /* Add an Auto-Submitted: header */
-
diff --git a/exim-bug-1891.patch b/exim-bug-1891.patch
deleted file mode 100644
index e5597f4..0000000
--- a/exim-bug-1891.patch
+++ /dev/null
@@ -1,64 +0,0 @@
-commit 3c55eef24050cec9e50e98e2f5fc12cd45f1ef8a
-Author: Jeremy Harris <jgh146exb at wizmail.org>
-Date: Fri Apr 5 15:22:20 2019 +0100
-
- Logging: close logfile when non-smtp input is taking a long time. Bug 1891
-
-diff --git a/src/src/receive.c b/src/src/receive.c
-index 0cb38626..64f62757 100644
---- a/src/src/receive.c
-+++ b/src/src/receive.c
-@@ -571,6 +571,30 @@ return FALSE;
-
-
-
-+/* Pause for a while waiting for input. If none received in that time,
-+close the logfile, if we had one open; then if we wait for a long-running
-+datasource (months, in one use-case) log rotation will not leave us holding
-+the file copy. */
-+
-+static void
-+log_close_chk(void)
-+{
-+if (!receive_timeout)
-+ {
-+ struct timeval t;
-+ timesince(&t, &received_time);
-+ if (t.tv_sec > 30*60)
-+ mainlog_close();
-+ else
-+ {
-+ fd_set r;
-+ FD_ZERO(&r); FD_SET(0, &r);
-+ t.tv_sec = 30*60 - t.tv_sec; t.tv_usec = 0;
-+ if (select(1, &r, NULL, NULL, &t) == 0) mainlog_close();
-+ }
-+ }
-+}
-+
- /*************************************************
- * Read data portion of a non-SMTP message *
- *************************************************/
-@@ -619,9 +643,11 @@ register int linelength = 0;
-
- if (!f.dot_ends)
- {
-- register int last_ch = '\n';
-+ int last_ch = '\n';
-
-- for (; (ch = (receive_getc)(GETC_BUFFER_UNLIMITED)) != EOF; last_ch = ch)
-+ for ( ;
-+ log_close_chk(), (ch = (receive_getc)(GETC_BUFFER_UNLIMITED)) != EOF;
-+ last_ch = ch)
- {
- if (ch == 0) body_zerocount++;
- if (last_ch == '\r' && ch != '\n')
-@@ -663,7 +689,7 @@ if (!f.dot_ends)
-
- ch_state = 1;
-
--while ((ch = (receive_getc)(GETC_BUFFER_UNLIMITED)) != EOF)
-+while (log_close_chk(), (ch = (receive_getc)(GETC_BUFFER_UNLIMITED)) != EOF)
- {
- if (ch == 0) body_zerocount++;
- switch (ch_state)
diff --git a/exim4-EDITME.patch b/exim4-EDITME.patch
index d5f67c9..e22fef4 100644
--- a/exim4-EDITME.patch
+++ b/exim4-EDITME.patch
@@ -1,6 +1,5 @@
-diff -urN exim-4.64.org/src/EDITME exim-4.64/src/EDITME
---- exim-4.64.org/src/EDITME 2006-12-20 10:46:04.000000000 +0100
-+++ exim-4.64/src/EDITME 2006-12-21 16:57:08.676246750 +0100
+--- exim-4.93/src/EDITME.org 2019-12-11 07:24:16.057781209 +0100
++++ exim-4.93/src/EDITME 2019-12-11 07:24:21.077926862 +0100
@@ -100,7 +100,7 @@
# /usr/local/sbin. The installation script will try to create this directory,
# and any superior directories, if they do not exist.
@@ -10,7 +9,7 @@ diff -urN exim-4.64.org/src/EDITME exim-4.64/src/EDITME
#------------------------------------------------------------------------------
-@@ -116,7 +116,7 @@
+@@ -116,7 +116,7 @@ BIN_DIRECTORY=/usr/exim/bin
# don't exist. It will also install a default runtime configuration if this
# file does not exist.
@@ -19,9 +18,9 @@ diff -urN exim-4.64.org/src/EDITME exim-4.64/src/EDITME
# 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.
-@@ -134,7 +134,8 @@
- # owner of a local mailbox.) Specifying these values as root is very strongly
- # discouraged.
+@@ -133,7 +133,8 @@ CONFIGURE_FILE=/usr/exim/configure
+ # deliveries. (Local deliveries run as various non-root users, typically as the
+ # owner of a local mailbox.) Specifying these values as root is not supported.
-EXIM_USER=
+EXIM_UID=79
@@ -29,7 +28,22 @@ diff -urN exim-4.64.org/src/EDITME exim-4.64/src/EDITME
# If you specify EXIM_USER as a name, this is looked up at build time, and the
# uid number is built into the binary. However, you can specify that this
-@@ -214,7 +215,7 @@
+@@ -211,11 +212,11 @@ SPOOL_DIRECTORY=/var/spool/exim
+ # If you are buliding with TLS, the library configuration must be done:
+
+ # Uncomment this if you are using OpenSSL
+-# USE_OPENSSL=yes
++USE_OPENSSL=yes
+ # Uncomment one of these settings if you are using OpenSSL; pkg-config vs not
+ # and an optional location.
+-# USE_OPENSSL_PC=openssl
+-# TLS_LIBS=-lssl -lcrypto
++USE_OPENSSL_PC=openssl
++TLS_LIBS=-lssl -lcrypto
+ # TLS_LIBS=-L/usr/local/openssl/lib -lssl -lcrypto
+
+ # Uncomment this if you are using GnuTLS
+@@ -317,7 +318,7 @@ ROUTER_REDIRECT=yes
# This one is very special-purpose, so is not included by default.
@@ -38,7 +52,7 @@ diff -urN exim-4.64.org/src/EDITME exim-4.64/src/EDITME
#------------------------------------------------------------------------------
-@@ -235,7 +236,7 @@
+@@ -338,7 +339,7 @@ TRANSPORT_SMTP=yes
# This one is special-purpose, and commonly not required, so it is not
# included by default.
@@ -47,7 +61,7 @@ diff -urN exim-4.64.org/src/EDITME exim-4.64/src/EDITME
#------------------------------------------------------------------------------
-@@ -244,9 +245,9 @@
+@@ -347,9 +348,9 @@ TRANSPORT_SMTP=yes
# MBX, is included only when requested. If you do not know what this is about,
# leave these settings commented out.
@@ -60,7 +74,7 @@ diff -urN exim-4.64.org/src/EDITME exim-4.64/src/EDITME
#------------------------------------------------------------------------------
-@@ -263,15 +264,15 @@
+@@ -407,8 +408,8 @@ LOOKUP_DBM=yes
LOOKUP_LSEARCH=yes
LOOKUP_DNSDB=yes
@@ -69,26 +83,36 @@ diff -urN exim-4.64.org/src/EDITME exim-4.64/src/EDITME
+LOOKUP_CDB=yes
+LOOKUP_DSEARCH=yes
# LOOKUP_IBASE=yes
+ # LOOKUP_JSON=yes
# LOOKUP_LDAP=yes
- # LOOKUP_MYSQL=yes
- # LOOKUP_MYSQL_PC=mariadb
+@@ -417,7 +418,7 @@ LOOKUP_DNSDB=yes
# LOOKUP_NIS=yes
# LOOKUP_NISPLUS=yes
# LOOKUP_ORACLE=yes
-# LOOKUP_PASSWD=yes
+LOOKUP_PASSWD=yes
# LOOKUP_PGSQL=yes
+ # LOOKUP_REDIS=yes
# LOOKUP_SQLITE=yes
-@@ -391,7 +391,7 @@ EXIM_MONITOR=eximon.bin
+@@ -500,7 +500,7 @@ SUPPORT_DANE=yes
+ # 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
+
+
+ #------------------------------------------------------------------------------
+@@ -509,7 +510,7 @@ SUPPORT_DANE=yes
# and the MIME ACL. Please read the documentation to learn more about these
# features.
-# WITH_CONTENT_SCAN=yes
+WITH_CONTENT_SCAN=yes
- #------------------------------------------------------------------------------
- # If you're using ClamAV and are backporting fixes to an old version, instead
-@@ -629,15 +630,15 @@ FIXED_NEVER_USERS=root
+ # If you have content scanning you may wish to only include some of the scanner
+ # interfaces. Uncomment any of these lines to remove that code.
+@@ -752,18 +753,18 @@ FIXED_NEVER_USERS=root
# included in the Exim binary. You will then need to set up the run time
# configuration to make use of the mechanism(s) selected.
@@ -97,6 +121,7 @@ diff -urN exim-4.64.org/src/EDITME exim-4.64/src/EDITME
# AUTH_CYRUS_SASL=yes
-# AUTH_DOVECOT=yes
+AUTH_DOVECOT=yes
+ # AUTH_EXTERNAL=yes
# AUTH_GSASL=yes
# AUTH_GSASL_PC=libgsasl
# AUTH_HEIMDAL_GSSAPI=yes
@@ -109,7 +134,9 @@ diff -urN exim-4.64.org/src/EDITME exim-4.64/src/EDITME
+AUTH_SPA=yes
+AUTH_TLS=yes
-@@ -610,7 +611,7 @@
+ # Heimdal through 1.5 required pkg-config 'heimdal-gssapi'; Heimdal 7.1
+ # requires multiple pkg-config files to work with Exim, so the second example
+@@ -787,7 +788,7 @@ FIXED_NEVER_USERS=root
# one that is set in the headers_charset option. The default setting is
# defined by this setting:
@@ -118,22 +145,7 @@ diff -urN exim-4.64.org/src/EDITME exim-4.64/src/EDITME
# If you are going to make use of $header_xxx expansions in your configuration
# file, or if your users are going to use them in filter files, and the normal
-@@ -690,11 +691,11 @@
- # leave these settings commented out.
-
- # This setting is required for any TLS support (either OpenSSL or GnuTLS)
--# SUPPORT_TLS=yes
-+SUPPORT_TLS=yes
-
- # Uncomment one of these settings if you are using OpenSSL; pkg-config vs not
--# USE_OPENSSL_PC=openssl
--# TLS_LIBS=-lssl -lcrypto
-+USE_OPENSSL_PC=openssl
-+TLS_LIBS=-lssl -lcrypto
-
- # Uncomment the first and either the second or the third of these if you
- # are using GnuTLS. If you have pkg-config, then the second, else the third.
-@@ -630,7 +631,7 @@
+@@ -883,7 +898,7 @@ HEADERS_CHARSET="ISO-8859-1"
# Once you have done this, "make install" will build the info files and
# install them in the directory you have defined.
@@ -142,7 +154,7 @@ diff -urN exim-4.64.org/src/EDITME exim-4.64/src/EDITME
#------------------------------------------------------------------------------
-@@ -643,7 +644,7 @@
+@@ -896,7 +911,7 @@ HEADERS_CHARSET="ISO-8859-1"
# %s. This will be replaced by one of the strings "main", "panic", or "reject"
# to form the final file names. Some installations may want something like this:
@@ -151,7 +163,7 @@ diff -urN exim-4.64.org/src/EDITME exim-4.64/src/EDITME
# 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
-@@ -692,7 +693,7 @@
+@@ -945,7 +960,7 @@ EXICYCLOG_MAX=10
# 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.
@@ -160,7 +172,7 @@ diff -urN exim-4.64.org/src/EDITME exim-4.64/src/EDITME
COMPRESS_SUFFIX=gz
-@@ -700,7 +701,7 @@
+@@ -960,7 +975,7 @@ COMPRESS_SUFFIX=gz
# ZCAT_COMMAND=zcat
#
# Or specify the full pathname:
@@ -169,7 +181,7 @@ diff -urN exim-4.64.org/src/EDITME exim-4.64/src/EDITME
#------------------------------------------------------------------------------
# Compiling in support for embedded Perl: If you want to be able to
-@@ -709,7 +710,7 @@
+@@ -968,7 +983,7 @@ ZCAT_COMMAND=/usr/bin/zcat
# (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.
@@ -178,7 +190,7 @@ diff -urN exim-4.64.org/src/EDITME exim-4.64/src/EDITME
#------------------------------------------------------------------------------
-@@ -719,7 +720,7 @@
+@@ -978,7 +993,7 @@ ZCAT_COMMAND=/usr/bin/zcat
# that the local_scan API is made available by the linker. You may also need
# to add -ldl to EXTRALIBS so that dlopen() is available to Exim.
@@ -187,7 +199,7 @@ diff -urN exim-4.64.org/src/EDITME exim-4.64/src/EDITME
#------------------------------------------------------------------------------
-@@ -729,11 +730,12 @@
+@@ -988,11 +1003,12 @@ ZCAT_COMMAND=/usr/bin/zcat
# support, which is intended for use in conjunction with the SMTP AUTH
# facilities, is included only when requested by the following setting:
@@ -200,9 +212,9 @@ diff -urN exim-4.64.org/src/EDITME exim-4.64/src/EDITME
+EXTRALIBS=-lpam -ldl
#------------------------------------------------------------------------------
- # Support for authentication via Radius is also available. The Exim support,
-@@ -780,7 +782,7 @@
- # /var/pwcheck) and chown it to exim's user and group. Once you have installed
+ # Proxying.
+@@ -1079,7 +1095,7 @@ ZCAT_COMMAND=/usr/bin/zcat
+ # /var/pwcheck) and chown it to Exim's user and group. Once you have installed
# pwcheck, you should arrange for it to be started by root at boot time.
-# CYRUS_PWCHECK_SOCKET=/var/pwcheck/pwcheck
@@ -210,7 +222,7 @@ diff -urN exim-4.64.org/src/EDITME exim-4.64/src/EDITME
#------------------------------------------------------------------------------
-@@ -797,7 +799,7 @@
+@@ -1096,7 +1112,7 @@ ZCAT_COMMAND=/usr/bin/zcat
# group. Once you have installed saslauthd, you should arrange for it to be
# started by root at boot time.
@@ -219,7 +231,7 @@ diff -urN exim-4.64.org/src/EDITME exim-4.64/src/EDITME
#------------------------------------------------------------------------------
-@@ -857,7 +859,7 @@
+@@ -1163,7 +1179,7 @@ SYSTEM_ALIASES_FILE=/etc/aliases
# is "yes", as well as supporting line editing, a history of input lines in the
# current run is maintained.
@@ -228,7 +240,7 @@ diff -urN exim-4.64.org/src/EDITME exim-4.64/src/EDITME
# You may need to add -ldl to EXTRALIBS when you set USE_READLINE=yes.
# Note that this option adds to the size of the Exim binary, because the
-@@ -932,7 +934,7 @@
+@@ -1253,7 +1269,7 @@ EXIM_TMPDIR="/tmp"
# period (for example, /usr/exim/configure.host.in.some.domain). If this file
# does not exist, then the bare configuration file name is tried.
@@ -237,7 +249,7 @@ diff -urN exim-4.64.org/src/EDITME exim-4.64/src/EDITME
#------------------------------------------------------------------------------
-@@ -1105,7 +1107,7 @@
+@@ -1432,7 +1448,7 @@ EXIM_TMPDIR="/tmp"
# be changed here. The default is 0640 so that information from the spool is
# available to anyone who is a member of the Exim group.
@@ -246,11 +258,12 @@ diff -urN exim-4.64.org/src/EDITME exim-4.64/src/EDITME
#------------------------------------------------------------------------------
-@@ -1164,6 +1166,6 @@
+@@ -1478,7 +1494,7 @@ EXIM_TMPDIR="/tmp"
# feature should only be used in very exceptional circumstances. YOU HAVE BEEN
# WARNED.
-# ENABLE_DISABLE_FSYNC=yes
+ENABLE_DISABLE_FSYNC=yes
- # End of EDITME for Exim 4.
+ #------------------------------------------------------------------------------
+ # For development, add this to include code to time various stages and report.
diff --git a/localscan_dlopen_exim_4.20_or_better.patch b/localscan_dlopen_exim_4.20_or_better.patch
index 33a735e..edb18be 100644
--- a/localscan_dlopen_exim_4.20_or_better.patch
+++ b/localscan_dlopen_exim_4.20_or_better.patch
@@ -1,24 +1,22 @@
-The initial version of this patch was originally posted David Woodhouse, and
-dman gets the credit for first integrating it with SA-Exim.
+Description: Allow one to use and switch between different local_scan functions
+ without recompiling exim.
+ http://marc.merlins.org/linux/exim/files/sa-exim-current/ Original patch from
+ David Woodhouse, modified first by Derrick 'dman' Hudson and then by Marc
+ MERLIN for SA-Exim and minor/major API version tracking
+Author: David Woodhouse, Derrick 'dman' Hudson, Marc MERLIN
+Origin: other, http://marc.merlins.org/linux/exim/files/sa-exim-current/
+Forwarded: no
+Last-Update: 2019-10-20
-I have since then maintained it by first making a few minor changes, and
-later switching it to a major/minor number scheme to support upgrades in
-the exim API that don't affect backward compatibility (you can rely on
-a feature denoted by the minor number and be compatible with future versions
-of exim until Philip has to break the API and increase the major number)
-
-Marc MERLIN <marc_soft at merlins.org>
-
-diff -urN exim-4.14-0/src/EDITME exim-4.14-1/src/EDITME
---- exim-4.14-0/src/EDITME Tue Mar 11 04:20:18 2003
-+++ exim-4.14-1/src/EDITME Sun Mar 23 15:34:15 2003
-@@ -388,6 +388,20 @@
+--- a/src/EDITME
++++ b/src/EDITME
+@@ -868,6 +868,21 @@ HEADERS_CHARSET="ISO-8859-1"
#------------------------------------------------------------------------------
+# 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
++# 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
@@ -27,58 +25,54 @@ diff -urN exim-4.14-0/src/EDITME exim-4.14-1/src/EDITME
+# linker flags. Without it, the loaded .so won't be able to access any
+# functions from exim.
+
-+LFLAGS=-rdynamic -ldl
++LDFLAGS += -rdynamic
++CFLAGS += -fvisibility=hidden
+
+#------------------------------------------------------------------------------
# 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
+--- a/src/config.h.defaults
++++ b/src/config.h.defaults
+@@ -33,6 +33,8 @@ Do not put spaces between # and the 'def
+
+ #define AUTH_VARS 3
+#define DLOPEN_LOCAL_SCAN
+
#define BIN_DIRECTORY
#define CONFIGURE_FILE
-diff -urN exim-4.14-0/src/globals.c exim-4.14-1/src/globals.c
---- exim-4.14-0/src/globals.c Tue Mar 11 04:20:20 2003
-+++ exim-4.14-1/src/globals.c Sun Mar 23 15:34:15 2003
-@@ -103,6 +103,9 @@
- uschar *tls_verify_hosts = NULL;
- #endif
+--- a/src/globals.c
++++ b/src/globals.c
+@@ -115,6 +115,10 @@ int dsn_ret = 0;
+ const pcre *regex_DSN = NULL;
+ uschar *dsn_advertise_hosts = NULL;
+#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 -urN exim-4.14-0/src/globals.h exim-4.14-1/src/globals.h
---- exim-4.14-0/src/globals.h Tue Mar 11 04:20:20 2003
-+++ exim-4.14-1/src/globals.h Sun Mar 23 15:34:15 2003
-@@ -67,6 +67,9 @@
- extern uschar *tls_verify_hosts; /* Mandatory client verification */
- #endif
++
+ #ifndef DISABLE_TLS
+ BOOL gnutls_compat_mode = FALSE;
+ BOOL gnutls_allow_auto_pkcs11 = FALSE;
+--- a/src/globals.h
++++ b/src/globals.h
+@@ -144,6 +144,9 @@ extern int dsn_ret; /
+ extern const pcre *regex_DSN; /* For recognizing DSN settings */
+ extern uschar *dsn_advertise_hosts; /* host for which TLS is advertised */
+#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 -urN exim-4.14-0/src/local_scan.c exim-4.14-1/src/local_scan.c
---- exim-4.14-0/src/local_scan.c Tue Mar 11 04:20:20 2003
-+++ exim-4.14-1/src/local_scan.c Sun Mar 23 15:34:15 2003
-@@ -5,61 +5,131 @@
- /* Copyright (c) University of Cambridge 1995 - 2003 */
+
+--- a/src/local_scan.c
++++ b/src/local_scan.c
+@@ -6,22 +6,6 @@
/* 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.
@@ -96,13 +90,13 @@ diff -urN exim-4.14-0/src/local_scan.c exim-4.14-1/src/local_scan.c
-******************************************************************************/
-
-
--/* 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! */
--
--#include "local_scan.h"
--
--
+ /* 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! */
+@@ -29,37 +13,129 @@ release. Use only the documented interfa
+ #include "local_scan.h"
+
+
-/* This is a "do-nothing" version of a local_scan() function. The arguments
-are:
-
@@ -169,8 +163,8 @@ diff -urN exim-4.14-0/src/local_scan.c exim-4.14-1/src/local_scan.c
+else
+#endif
+ return LOCAL_SCAN_ACCEPT;
-+}
-+
+ }
+
+#ifdef DLOPEN_LOCAL_SCAN
+
+static int load_local_scan_library(void)
@@ -244,20 +238,46 @@ diff -urN exim-4.14-0/src/local_scan.c exim-4.14-1/src/local_scan.c
+ {
+ dlclose(local_scan_lib);
+ log_write(0, LOG_MAIN|LOG_REJECT, "local_scan() library doesn't contain "
-+ "local_scan() function - message temporarily rejected");
++ "local_scan() function - message temporarily rejected");
+ return FALSE;
+ }
-+
+return TRUE;
- }
++}
+
+#endif /* DLOPEN_LOCAL_SCAN */
-
++
++
/* End of local_scan.c */
-diff -urN exim-4.14-0/src/readconf.c exim-4.14-1/src/readconf.c
---- exim-4.14-0/src/readconf.c Tue Mar 11 04:20:22 2003
-+++ exim-4.14-1/src/readconf.c Sun Mar 23 15:34:15 2003
-@@ -182,6 +182,9 @@
+--- a/src/local_scan.h
++++ b/src/local_scan.h
+@@ -17,6 +17,7 @@ settings, and the store functions. */
+
+ #include <stdarg.h>
+ #include <sys/types.h>
++#pragma GCC visibility push(default)
+ #include "config.h"
+ #include "mytypes.h"
+ #include "store.h"
+@@ -149,6 +150,9 @@ extern header_line *header_list; /
+ extern BOOL host_checking; /* Set when checking a host */
+ extern uschar *interface_address; /* Interface for incoming call */
+ extern int interface_port; /* Port number for incoming call */
++#ifdef DLOPEN_LOCAL_SCAN
++extern uschar *local_scan_path;
++#endif
+ extern uschar *message_id; /* Internal id of message being handled */
+ extern uschar *received_protocol; /* Name of incoming protocol */
+ extern int recipients_count; /* Number of recipients */
+@@ -207,4 +211,6 @@ extern uschar * string_copyn_function(co
+ extern uschar * string_copy_taint_function(const uschar *, BOOL tainted);
+ #endif
+
++#pragma GCC visibility pop
++
+ /* End of local_scan.h */
+--- a/src/readconf.c
++++ b/src/readconf.c
+@@ -203,6 +203,9 @@ static optionlist optionlist_config[] =
{ "local_from_prefix", opt_stringptr, &local_from_prefix },
{ "local_from_suffix", opt_stringptr, &local_from_suffix },
{ "local_interfaces", opt_stringptr, &local_interfaces },
@@ -267,3 +287,21 @@ diff -urN exim-4.14-0/src/readconf.c exim-4.14-1/src/readconf.c
#ifdef HAVE_LOCAL_SCAN
{ "local_scan_timeout", opt_time, &local_scan_timeout },
#endif
+--- a/src/string.c
++++ b/src/string.c
+@@ -413,6 +413,7 @@ return ss;
+
+ #if (defined(HAVE_LOCAL_SCAN) || defined(EXPAND_DLFUNC)) \
+ && !defined(MACRO_PREDEF) && !defined(COMPILE_UTILITY)
++#pragma GCC visibility push(default)
+ /*************************************************
+ * Copy and save string *
+ *************************************************/
+@@ -465,6 +466,7 @@ Ustrncpy(ss, s, n);
+ ss[n] = 0;
+ return ss;
+ }
++#pragma GCC visibility pop
+ #endif
+
+
================================================================
---- gitweb:
http://git.pld-linux.org/gitweb.cgi/packages/exim.git/commitdiff/96e93d3ddfc43b968aca829f872aff071a2f9068
More information about the pld-cvs-commit
mailing list