summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJeremy Harris <jgh146exb@wizmail.org>2020-05-09 21:04:49 +0100
committerJeremy Harris <jgh146exb@wizmail.org>2020-05-09 23:30:19 +0100
commit7adc9ca07a9a870f92a14d16740abfecde0bdfa4 (patch)
treed3d198bbb298859c4fb5d7d56c29a9c69f249b30 /src
parent989ab7c83d1a69fe6ce454cfe51572c62933a5a3 (diff)
Move the native SRS implementation from Experimental to mainline
Diffstat (limited to 'src')
-rw-r--r--src/src/EDITME8
-rw-r--r--src/src/config.h.defaults2
-rw-r--r--src/src/exim.c5
-rw-r--r--src/src/expand.c22
-rw-r--r--src/src/globals.c2
-rw-r--r--src/src/globals.h2
-rw-r--r--src/src/macro_predef.c8
7 files changed, 26 insertions, 23 deletions
diff --git a/src/src/EDITME b/src/src/EDITME
index 340d30d76..cf671afd1 100644
--- a/src/src/EDITME
+++ b/src/src/EDITME
@@ -572,6 +572,10 @@ DISABLE_MAL_MKS=yes
# Uncomment the following to remove the fast-ramp two-phase-queue-run support
# DISABLE_QUEUE_RAMP=yes
+# Uncomment the following lines to add SRS (Sender Rewriting Scheme) support
+# using only native facilities. See EXPERIMENTAL_SRS_ALT for an alternative.
+# SUPPORT_SRS=yes
+
#------------------------------------------------------------------------------
# Compiling Exim with experimental features. These are documented in
@@ -585,10 +589,6 @@ DISABLE_MAL_MKS=yes
# EXPERIMENTAL_DCC=yes
# Uncomment the following lines to add SRS (Sender rewriting scheme) support
-# using only native facilities.
-# EXPERIMENTAL_SRS_NATIVE=yes
-
-# Uncomment the following lines to add SRS (Sender rewriting scheme) support
# using the implementation in linbsrs_alt.
# You need to have libsrs_alt installed on your system (srs.mirtol.com).
# Depending on where it is installed you may have to edit the CFLAGS and
diff --git a/src/src/config.h.defaults b/src/src/config.h.defaults
index 5347f7a8e..a91c3c3aa 100644
--- a/src/src/config.h.defaults
+++ b/src/src/config.h.defaults
@@ -157,6 +157,7 @@ Do not put spaces between # and the 'define'.
#define SUPPORT_PROXY
#define SUPPORT_SOCKS
#define SUPPORT_SPF
+#define SUPPORT_SRS
#define SUPPORT_TRANSLATE_IP_ADDRESS
#define SYSLOG_LOG_PID
@@ -205,7 +206,6 @@ Do not put spaces between # and the 'define'.
#define EXPERIMENTAL_LMDB
#define EXPERIMENTAL_QUEUEFILE
#define EXPERIMENTAL_SRS_ALT
-#define EXPERIMENTAL_SRS_NATIVE
#define EXPERIMENTAL_TLS_RESUME
diff --git a/src/src/exim.c b/src/src/exim.c
index cd6d25323..ab2d673dd 100644
--- a/src/src/exim.c
+++ b/src/src/exim.c
@@ -979,6 +979,9 @@ g = string_cat(NULL, US"Support for:");
#ifdef SUPPORT_SPF
g = string_cat(g, US" SPF");
#endif
+#if defined(SUPPORT_SRS)
+ g = string_cat(g, US" SRS");
+#endif
#ifdef TCP_FASTOPEN
tcp_init();
if (f.tcp_fastopen_ok) g = string_cat(g, US" TCP_Fast_Open");
@@ -1001,7 +1004,7 @@ g = string_cat(NULL, US"Support for:");
#ifdef EXPERIMENTAL_QUEUEFILE
g = string_cat(g, US" Experimental_QUEUEFILE");
#endif
-#if defined(EXPERIMENTAL_SRS_ALT) || defined(EXPERIMENTAL_SRS_NATIVE)
+#if defined(EXPERIMENTAL_SRS_ALT)
g = string_cat(g, US" Experimental_SRS");
#endif
#ifdef EXPERIMENTAL_TLS_RESUME
diff --git a/src/src/expand.c b/src/src/expand.c
index 95b5d02e1..4abde0af6 100644
--- a/src/src/expand.c
+++ b/src/src/expand.c
@@ -131,7 +131,7 @@ static uschar *item_table[] = {
US"run",
US"sg",
US"sort",
-#ifdef EXPERIMENTAL_SRS_NATIVE
+#ifdef SUPPORT_SRS
US"srs_encode",
#endif
US"substr",
@@ -166,7 +166,7 @@ enum {
EITEM_RUN,
EITEM_SG,
EITEM_SORT,
-#ifdef EXPERIMENTAL_SRS_NATIVE
+#ifdef SUPPORT_SRS
EITEM_SRS_ENCODE,
#endif
EITEM_SUBSTR,
@@ -334,7 +334,7 @@ static uschar *cond_table[] = {
US"gei",
US"gt",
US"gti",
-#ifdef EXPERIMENTAL_SRS_NATIVE
+#ifdef SUPPORT_SRS
US"inbound_srs",
#endif
US"inlist",
@@ -387,7 +387,7 @@ enum {
ECOND_STR_GEI,
ECOND_STR_GT,
ECOND_STR_GTI,
-#ifdef EXPERIMENTAL_SRS_NATIVE
+#ifdef SUPPORT_SRS
ECOND_INBOUND_SRS,
#endif
ECOND_INLIST,
@@ -758,7 +758,7 @@ static var_entry var_table[] = {
{ "srs_orig_recipient", vtype_stringptr, &srs_orig_recipient },
{ "srs_orig_sender", vtype_stringptr, &srs_orig_sender },
#endif
-#if defined(EXPERIMENTAL_SRS_ALT) || defined(EXPERIMENTAL_SRS_NATIVE)
+#if defined(EXPERIMENTAL_SRS_ALT) || defined(SUPPORT_SRS)
{ "srs_recipient", vtype_stringptr, &srs_recipient },
#endif
#ifdef EXPERIMENTAL_SRS_ALT
@@ -2438,7 +2438,7 @@ else
-#ifdef EXPERIMENTAL_SRS_NATIVE
+#ifdef SUPPORT_SRS
/* Do an hmac_md5. The result is _not_ nul-terminated, and is sized as
the smaller of a full hmac_md5 result (16 bytes) or the supplied output buffer.
@@ -2513,7 +2513,7 @@ for (int i = 0, j = len; i < MD5_HASHLEN; i++)
}
return;
}
-#endif /*EXPERIMENTAL_SRS_NATIVE*/
+#endif /*SUPPORT_SRS*/
/*************************************************
@@ -3443,7 +3443,7 @@ switch(cond_type = identify_operator(&s, &opname))
return s;
}
-#ifdef EXPERIMENTAL_SRS_NATIVE
+#ifdef SUPPORT_SRS
case ECOND_INBOUND_SRS:
/* ${if inbound_srs {local_part}{secret} {yes}{no}} */
{
@@ -3535,7 +3535,7 @@ srs_result:
if (yield) *yield = (boolvalue == testfor);
return s;
}
-#endif /*EXPERIMENTAL_SRS_NATIVE*/
+#endif /*SUPPORT_SRS*/
/* Unknown condition */
@@ -6783,7 +6783,7 @@ while (*s != 0)
continue;
}
-#ifdef EXPERIMENTAL_SRS_NATIVE
+#ifdef SUPPORT_SRS
case EITEM_SRS_ENCODE:
/* ${srs_encode {secret} {return_path} {orig_domain}} */
{
@@ -6837,7 +6837,7 @@ while (*s != 0)
yield = string_cat(yield, sub[2]);
continue;
}
-#endif /*EXPERIMENTAL_SRS_NATIVE*/
+#endif /*SUPPORT_SRS*/
} /* EITEM_* switch */
/* Control reaches here if the name is not recognized as one of the more
diff --git a/src/src/globals.c b/src/src/globals.c
index 880db98f4..561054981 100644
--- a/src/src/globals.c
+++ b/src/src/globals.c
@@ -1517,7 +1517,7 @@ uschar *srs_recipient = NULL;
uschar *srs_secrets = NULL;
uschar *srs_status = NULL;
#endif
-#ifdef EXPERIMENTAL_SRS_ALT
+#ifdef SUPPORT_SRS
uschar *srs_recipient = NULL;
#endif
int string_datestamp_offset= -1;
diff --git a/src/src/globals.h b/src/src/globals.h
index 3b9e6fb40..fffe74441 100644
--- a/src/src/globals.h
+++ b/src/src/globals.h
@@ -1002,7 +1002,7 @@ extern uschar *srs_status; /* SRS staus */
extern BOOL srs_usehash; /* SRS use hash flag */
extern BOOL srs_usetimestamp; /* SRS use timestamp flag */
#endif
-#ifdef EXPERIMENTAL_SRS_NATIVE
+#ifdef SUPPORT_SRS
extern uschar *srs_recipient; /* SRS recipient */
#endif
extern BOOL strict_acl_vars; /* ACL variables have to be set before being used */
diff --git a/src/src/macro_predef.c b/src/src/macro_predef.c
index 17aad2e4b..f6cfcb14c 100644
--- a/src/src/macro_predef.c
+++ b/src/src/macro_predef.c
@@ -174,6 +174,9 @@ due to conflicts with other common macros. */
#ifdef SUPPORT_SOCKS
builtin_macro_create(US"_HAVE_SOCKS");
#endif
+#if defined(SUPPORT_SRS)
+ builtin_macro_create(US"_HAVE_NATIVE_SRS"); /* beware clash with _HAVE_SRS */
+#endif
#ifdef TCP_FASTOPEN
builtin_macro_create(US"_HAVE_TCP_FASTOPEN");
#endif
@@ -183,12 +186,9 @@ due to conflicts with other common macros. */
#ifdef SUPPORT_SPF
builtin_macro_create(US"_HAVE_SPF");
#endif
-#if defined(EXPERIMENTAL_SRS_ALT) || defined(EXPERIMENTAL_SRS_NATIVE)
+#if defined(EXPERIMENTAL_SRS_ALT) || defined(SUPPORT_SRS)
builtin_macro_create(US"_HAVE_SRS");
#endif
-#if defined(EXPERIMENTAL_SRS_NATIVE)
- builtin_macro_create(US"_HAVE_NATIVE_SRS"); /* beware clash with _HAVE_SRS */
-#endif
#ifdef EXPERIMENTAL_ARC
builtin_macro_create(US"_HAVE_ARC");
#endif