FreeBSD Bugzilla – Attachment 51471 Details for
Bug 78168
[PATCH] mail/exim: update to 4.50
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
exim-4.50.patch
exim-4.50.patch (text/plain), 26.13 KB, created by
krion
on 2005-02-27 23:00:29 UTC
(
hide
)
Description:
exim-4.50.patch
Filename:
MIME Type:
Creator:
krion
Created:
2005-02-27 23:00:29 UTC
Size:
26.13 KB
patch
obsolete
>diff -ruN --exclude=CVS /usr/ports/mail/exim/Makefile /home/krion/exim/Makefile >--- /usr/ports/mail/exim/Makefile Thu Feb 3 04:55:00 2005 >+++ /home/krion/exim/Makefile Sun Feb 27 23:17:40 2005 >@@ -6,7 +6,7 @@ > # > > PORTNAME= exim >-PORTVERSION?= ${EXIM_VERSION}+${EXISCAN_VERSION} >+PORTVERSION?= ${EXIM_VERSION} > PORTREVISION= 0 > CATEGORIES= mail > MASTER_SITES= ${MASTER_SITE_EXIM:S/$/:exim/} >@@ -21,14 +21,6 @@ > > .include "options" > >-.if !defined(WITHOUT_EXISCAN) >-PATCH_SITES= http://duncanthrax.net/%SUBDIR%/ >-PATCH_SITE_SUBDIR= exiscan-acl >-PATCHFILES= exiscan-acl-${EXIM_VERSION}-${EXISCAN_VERSION}.patch.bz2 >-PATCH_DIST_STRIP= -p1 >-EXTRA_PATCHES+= ${PATCHDIR}/xpatch-exiscan2 >-.endif >- > .if defined(WITH_SA_EXIM) > MASTER_SITES+= http://marc.merlins.org/linux/exim/files/:sa_exim \ > ${MASTER_SITE_SOURCEFORGE_EXTENDED:S/$/:sa_exim/} >@@ -36,9 +28,7 @@ > DISTFILES+= sa-exim-${SA_EXIM_VERSION}.tar.gz:sa_exim > .endif > >-EXIM_VERSION= 4.44 >-EXISCAN_VERSION=28 >-SA_EXIM_VERSION=4.2 >+EXIM_VERSION= 4.50 > > IGNOREFILES= FAQ.txt.bz2 > >@@ -74,7 +64,8 @@ > PORTDOC_BASE= ACKNOWLEDGMENTS FAQ NOTICE README.UPDATING > PORTDOC_FILES= ChangeLog Exim3.upgrade Exim4.upgrade NewStuff \ > OptionLists.txt README README.SIEVE dbm.discuss.txt \ >- filter.txt pcrepattern.txt pcretest.txt spec.txt >+ experimental-spec.txt filter.txt pcrepattern.txt \ >+ pcretest.txt spec.txt > > PORT_EXAMPLES= convert4r3 convert4r4 pcretest transport-filter.pl > >@@ -113,15 +104,19 @@ > EXIM_GROUP=${EXIM_GROUP} \ > LOGDIR="${LOGDIR}" > >+# Define it to enabale malware and spam scanning in the DATA ACL, >+# and the MIME ACL. >+#WITH_CONTENT_SCAN= yes >+ >+# Enable old, deprecated "demime" ACL condition, in addition >+# to all the other content-scanning features. >+#WITHOUT_OLD_DEMIME= yes >+ > # If WITH_EXIMON is defined, the eximon monitor, which requires X, > # will be made a dependency. Note that using WITH_EXIMON will cause > # XFree86 to be installed if it is not present. > #WITH_EXIMON= yes > >-# If WITHOUT_EXISCAN is defined, exim will be built without exiscan >-# email content scanner support. >-#WITHOUT_EXISCAN= yes >- > # If WITH_SA_EXIM is defined, exim will be built with the SA-Exim > # local_scan function (<http://marc.merlins.org/linux/exim/sa.html>) > #WITH_SA_EXIM= yes >@@ -250,13 +245,6 @@ > EXTRA_PATCHES+= `${FIND} ${PATCHDIR} -name 'wishlist-*.patch'` > .endif > >-.if !defined(WITHOUT_EXISCAN) >-PORTDOC_FILES+= exiscan-acl-examples.txt exiscan-acl-spec.txt >-PLIST_SUB+= EXISCAN_ACL="" >-.else >-PLIST_SUB+= EXISCAN_ACL="@comment " >-.endif >- > SEDLIST+= -e 's,XX_CFLAGS_XX,${CFLAGS},' \ > -e 's,XX_PREFIX_XX,${PREFIX},' \ > -e 's,XX_LOCALBASE_XX,${LOCALBASE},' \ >@@ -483,7 +471,7 @@ > SEDLIST+= -e 's,^(ALT_CONFIG_PREFIX=),\# \1,' > .endif > >-.if defined(WITH_SPF) && !defined(WITHOUT_EXISCAN) >+.if defined(WITH_SPF) > LIB_DEPENDS+= spf2.1:${PORTSDIR}/mail/libspf2 > SEDLIST+= -e 's,XX_SPF_FLAGS_XX,-DSPF,' \ > -e 's,XX_SPF_LIBS_XX,-lspf2,' >@@ -492,7 +480,7 @@ > -e 's,XX_SPF_LIBS_XX,,' > .endif > >-.if defined(WITH_SRS) && !defined(WITHOUT_EXISCAN) >+.if defined(WITH_SRS) > LIB_DEPENDS+= srs2.0:${PORTSDIR}/mail/libsrs2 > SEDLIST+= -e 's,XX_SRS_FLAGS_XX,-DSRS,' \ > -e 's,XX_SRS_LIBS_XX,-lsrs2,' >@@ -512,6 +500,14 @@ > SEDLIST+= -e 's,^\# (USE_READLINE=),\1,' > .endif > >+.if defined(WITH_CONTENT_SCAN) >+SEDLIST+= -e 's,^\# (WITH_CONTENT_SCAN=),\1,' >+.endif >+ >+.if !defined(WITHOUT_OLD_DEMIME) >+SEDLIST+= -e 's,^\# (WITH_OLD_DEMIME=),\1,' >+.endif >+ > .include <bsd.port.pre.mk> > > .if defined(EXIMON_ONLY) && ${MASTERDIR} == ${PKGDIR} >@@ -596,13 +592,10 @@ > .for script in exim ${DAILY_SCRIPTS} > @${SED} ${SED_SCRIPT} ${FILESDIR}/${script}.sh > ${WRKDIR}/${script}.sh > .endfor >-.if !defined(WITHOUT_EXISCAN) >- @${SED} ${SED_SCRIPT} ${FILESDIR}/POST-INSTALL-NOTES.exiscan-acl \ >- ${FILESDIR}/POST-INSTALL-NOTES > ${WRKDIR}/POST-INSTALL-NOTES >+ @${SED} ${SED_SCRIPT} ${FILESDIR}/POST-INSTALL-NOTES > \ >+ ${WRKDIR}/POST-INSTALL-NOTES > @${SED} ${SED_SCRIPT} ${FILESDIR}/POST-INSTALL-NOTES.clamd > ${WRKDIR}/POST-INSTALL-NOTES.clamd >-.else > @${SED} ${SED_SCRIPT} ${FILESDIR}/POST-INSTALL-NOTES > ${WRKDIR}/POST-INSTALL-NOTES >-.endif > @[ ! -f ${PKGDIR}/pkg-message ] || ${SED} ${SED_SCRIPT} ${PKGDIR}/pkg-message > ${WRKDIR}/pkg-message > > .if !defined(EXIMON_ONLY) >@@ -627,9 +620,7 @@ > .if !defined(NOPORTDOCS) > @${MKDIR} ${DESTDIR}${DOCSDIR} > @${INSTALL_DATA} ${WRKDIR}/POST-INSTALL-NOTES ${DESTDIR}${DOCSDIR} >-.if !defined(WITHOUT_EXISCAN) > @${INSTALL_DATA} ${WRKDIR}/POST-INSTALL-NOTES.clamd ${DESTDIR}${DOCSDIR} >-.endif > .for docfile in ${PORTDOC_BASE} > @${INSTALL_DATA} ${WRKSRC}/${docfile} ${DESTDIR}${DOCSDIR} > .endfor >diff -ruN --exclude=CVS /usr/ports/mail/exim/distinfo /home/krion/exim/distinfo >--- /usr/ports/mail/exim/distinfo Thu Feb 3 04:55:00 2005 >+++ /home/krion/exim/distinfo Sun Feb 27 20:22:45 2005 >@@ -1,7 +1,3 @@ >-MD5 (exim/exim-4.44.tar.bz2) = 7487274e013b598d97445987d38b2071 >-SIZE (exim/exim-4.44.tar.bz2) = 1364290 >-MD5 (exim/sa-exim-4.2.tar.gz) = ad76f73c6b3d01caa88078e3e622745a >-SIZE (exim/sa-exim-4.2.tar.gz) = 66575 >-MD5 (exim/exiscan-acl-4.44-28.patch.bz2) = 72ef5567106e89e6cef1cc742ab52525 >-SIZE (exim/exiscan-acl-4.44-28.patch.bz2) = 83434 >+MD5 (exim/exim-4.50.tar.bz2) = 7844eff82171872f6b3971a4183368d9 >+SIZE (exim/exim-4.50.tar.bz2) = 1434928 > MD5 (exim/FAQ.txt.bz2) = IGNORE >diff -ruN --exclude=CVS /usr/ports/mail/exim/files/POST-INSTALL-NOTES.exiscan-acl /home/krion/exim/files/POST-INSTALL-NOTES.exiscan-acl >--- /usr/ports/mail/exim/files/POST-INSTALL-NOTES.exiscan-acl Wed Sep 10 15:49:09 2003 >+++ /home/krion/exim/files/POST-INSTALL-NOTES.exiscan-acl Thu Jan 1 01:00:00 1970 >@@ -1,13 +0,0 @@ >-This installation of Exim includes Exiscan content scanning support, >-from http://duncanthrax.net/exiscan-acl/, which is documented in >-%%DOCSDIR%%/exiscan-acl-spec.txt. The ports tree >-includes various content scanners that might be useful, e.g. >-mail/p5-Mail-SpamAssassin and security/clamav. >- >-Notes for enabling malware scanning with the excellent clamd scanner >-are in %%DOCSDIR%%/POST-INSTALL-NOTES.clamd. >- >-When Exiscan is actually enabled in the Exim configure file, great >-care should be taken to test upgrades, since Exiscan updates tend >-to not maintain backward compatibility. >- >diff -ruN --exclude=CVS /usr/ports/mail/exim/files/xpatch-exiscan2 /home/krion/exim/files/xpatch-exiscan2 >--- /usr/ports/mail/exim/files/xpatch-exiscan2 Tue Oct 12 01:48:25 2004 >+++ /home/krion/exim/files/xpatch-exiscan2 Thu Jan 1 01:00:00 1970 >@@ -1,596 +0,0 @@ >-diff -u scripts/MakeLinks scripts/MakeLinks >---- scripts/MakeLinks Sat Jul 17 11:12:00 2004 >-+++ scripts/MakeLinks Sat Jul 17 11:34:48 2004 >-@@ -187,7 +187,7 @@ >- ln -s ../src/osfunctions.h osfunctions.h >- ln -s ../src/spam.h spam.h >- ln -s ../src/spf.h spf.h >--ln -s ../src/srs.h srs.h >-+ln -s ../src/srs.h srs.h >- ln -s ../src/store.h store.h >- ln -s ../src/structs.h structs.h >- ln -s ../src/tnef.h tnef.h >-diff -u src/expand.c src/expand.c >---- src/expand.c Sat Jul 17 11:12:00 2004 >-+++ src/expand.c Sat Jul 17 11:37:42 2004 >-@@ -454,8 +454,6 @@ >- #endif >- { "spool_directory", vtype_stringptr, &spool_directory }, >- #ifdef SRS >-- { "srs_db_address", vtype_stringptr, &srs_db_address }, >-- { "srs_db_key", vtype_stringptr, &srs_db_key }, >- { "srs_orig_recipient", vtype_stringptr, &srs_orig_recipient }, >- { "srs_orig_sender", vtype_stringptr, &srs_orig_sender }, >- { "srs_recipient", vtype_stringptr, &srs_recipient }, >-diff -u src/globals.c src/globals.c >---- src/globals.c Sat Jul 17 11:12:00 2004 >-+++ src/globals.c Sat Jul 17 11:38:52 2004 >-@@ -987,9 +987,12 @@ >- uschar *spool_directory = US SPOOL_DIRECTORY >- "\0<--------------Space to patch spool_directory->"; >- #ifdef SRS >--uschar *srs_config = NULL; >--uschar *srs_db_address = NULL; >--uschar *srs_db_key = NULL; >-+BOOL srs_alwaysrewrite = FALSE; >-+int srs_hashlength = -1; >-+int srs_hashmin = -1; >-+int srs_maxage = -1; >-+uschar *srs_secrets = NULL; >-+uschar *srs_separator = NULL; >- uschar *srs_orig_recipient = NULL; >- uschar *srs_orig_sender = NULL; >- uschar *srs_recipient = NULL; >-diff -u src/globals.h src/globals.h >---- src/globals.h Sat Jul 17 11:12:00 2004 >-+++ src/globals.h Sat Jul 17 11:43:06 2004 >-@@ -596,13 +596,16 @@ >- #endif >- extern uschar *spool_directory; /* Name of spool directory */ >- #ifdef SRS >--extern uschar *srs_config; /* SRS config secret:max age:hash length:use timestamp:use hash */ >--extern uschar *srs_db_address; /* SRS db address */ >--extern uschar *srs_db_key; /* SRS db key */ >--extern uschar *srs_orig_sender; /* SRS original sender */ >--extern uschar *srs_orig_recipient; /* SRS original recipient */ >--extern uschar *srs_recipient; /* SRS recipient */ >--extern uschar *srs_status; /* SRS staus */ >-+extern BOOL srs_alwaysrewrite; /* Rewrite for all domains */ >-+extern int srs_hashlength; /* Hash length to generate */ >-+extern int srs_hashmin; /* Hash length to check */ >-+extern int srs_maxage; /* Max age for SRS address */ >-+extern uschar *srs_secrets; /* List of SRS secrets */ >-+extern uschar *srs_separator; /* Separator for SRS addresses */ >-+extern uschar *srs_orig_sender; /* SRS original sender */ >-+extern uschar *srs_orig_recipient; /* SRS original recipient */ >-+extern uschar *srs_recipient; /* SRS recipient */ >-+extern uschar *srs_status; /* SRS status */ >- #endif >- extern int string_datestamp_offset;/* After insertion by string_format */ >- extern BOOL strip_excess_angle_brackets; /* Surrounding route-addrs */ >-diff -u src/readconf.c src/readconf.c >---- src/readconf.c Sat Jul 17 11:12:00 2004 >-+++ src/readconf.c Sat Jul 17 11:44:21 2004 >-@@ -325,7 +325,12 @@ >- { "split_spool_directory", opt_bool, &split_spool_directory }, >- { "spool_directory", opt_stringptr, &spool_directory }, >- #ifdef SRS >-- { "srs_config", opt_stringptr, &srs_config }, >-+ { "srs_alwaysrewrite", opt_bool, &srs_alwaysrewrite }, >-+ { "srs_hashlength", opt_int, &srs_hashlength }, >-+ { "srs_hashmin", opt_int, &srs_hashmin }, >-+ { "srs_maxage", opt_int, &srs_maxage }, >-+ { "srs_secrets", opt_stringptr, &srs_secrets }, >-+ { "srs_separator", opt_stringptr, &srs_separator }, >- #endif >- { "strip_excess_angle_brackets", opt_bool, &strip_excess_angle_brackets }, >- { "strip_trailing_dot", opt_bool, &strip_trailing_dot }, >-diff -u src/routers/redirect.c src/routers/redirect.c >---- src/routers/redirect.c Sat Jul 17 11:12:00 2004 >-+++ src/routers/redirect.c Sat Jul 17 12:26:47 2004 >-@@ -98,13 +98,7 @@ >- (void *)offsetof(redirect_router_options_block, skip_syntax_errors) }, >- #ifdef SRS >- { "srs", opt_stringptr, >-- (void *)offsetof(redirect_router_options_block, srs) }, >-- { "srs_alias", opt_stringptr, >-- (void *)offsetof(redirect_router_options_block, srs_alias) }, >-- { "srs_condition", opt_stringptr, >-- (void *)offsetof(redirect_router_options_block, srs_condition) }, >-- { "srs_db", opt_stringptr, >-- (void *)offsetof(redirect_router_options_block, srs_db) }, >-+ (void *)offsetof(redirect_router_options_block, srs) }, >- #endif >- { "syntax_errors_text", opt_stringptr, >- (void *)offsetof(redirect_router_options_block, syntax_errors_text) }, >-@@ -141,9 +135,6 @@ >- NULL, /* owngroups */ >- #ifdef SRS >- NULL, /* srs */ >-- NULL, /* srs_condition */ >-- NULL, /* srs_db */ >-- NULL, /* srs_alias */ >- #endif >- 022, /* modemask */ >- RDO_REWRITE, /* bit_options */ >-@@ -538,39 +532,33 @@ >- ugid.gid_set = TRUE; >- } >- >-- >- #ifdef SRS >- /* For reverse SRS, fill the srs_recipient expandsion variable, >- on failure, return decline/fail as relevant */ >- >-- if(ob->srs != NULL) >-+if (ob->srs != NULL) >- { >-- BOOL usesrs = TRUE; >-- >-- if(ob->srs_condition != NULL) >-- usesrs = expand_check_condition(ob->srs_condition, "srs_condition expansion failed", NULL); >-- >-- if(usesrs) >-- if(Ustrcmp(ob->srs, "reverse") == 0 || Ustrcmp(ob->srs, "reverseandforward") == 0) >-- { >-- uschar *res; >-- int n_srs; >-- >-- srs_orig_recipient = addr->address; >-- eximsrs_init(); >-- if(ob->srs_db) >-- eximsrs_db_set(TRUE, ob->srs_db); >-- if((n_srs = eximsrs_reverse(&res, addr->address)) != OK) >-- return n_srs; >-- srs_recipient = res; >-- eximsrs_done(); >-- DEBUG(D_any) >-- debug_printf("SRS: Recipient '%s' rewriteen to '%s'\n", srs_orig_recipient, srs_recipient); >-- } >-+ if (Ustrcmp(ob->srs, "reverse") == 0 || Ustrcmp(ob->srs, "reverseandforward") == 0) >-+ { >-+ uschar *res; >-+ int ret; >-+ DEBUG(D_route) >-+ debug_printf("SRS: (Forward) \n"); >-+ >-+ srs_orig_recipient = addr->address; >-+ eximsrs_init(); >-+ ret = eximsrs_reverse(&res, addr->address); >-+ if (ret != OK) >-+ return ret; >-+ srs_recipient = res; >-+ eximsrs_done(); >-+ DEBUG(D_route) >-+ debug_printf("SRS: Recipient '%s' rewritten to '%s'\n", >-+ srs_orig_recipient, srs_recipient); >-+ } >- } >- #endif >- >-- >- /* Call the function that interprets redirection data, either inline or from a >- file. This is a separate function so that the system filter can use it. It will >- run the function in a subprocess if necessary. If qualify_preserve_domain is >-@@ -798,33 +789,23 @@ >- #ifdef SRS >- /* On successful redirection, check for SRS forwarding and adjust sender */ >- >-- if(ob->srs != NULL) >-+if (ob->srs != NULL) >- { >-- BOOL usesrs = TRUE; >-- >-- if(ob->srs_condition != NULL) >-- usesrs = expand_check_condition(ob->srs_condition, "srs_condition expansion failed", NULL); >-- >-- if(usesrs) >-- if((Ustrcmp(ob->srs, "forward") == 0 || Ustrcmp(ob->srs, "reverseandforward") == 0) && !verify) >-- { >-- uschar *res; >-- uschar *usedomain; >-- int n_srs; >-- >-- srs_orig_sender = sender_address; >-- eximsrs_init(); >-- if(ob->srs_db) >-- eximsrs_db_set(FALSE, ob->srs_db); >-- >-- if(ob->srs_alias != NULL ? (usedomain = expand_string(ob->srs_alias)) == NULL : 1) >-- usedomain = deliver_domain; >-- >-- if((n_srs = eximsrs_forward(&res, sender_address, usedomain)) != OK) >-- return n_srs; >-- sender_address = res; >-- DEBUG(D_any) >-- debug_printf("SRS: Sender '%s' rewritten to '%s'\n", srs_orig_sender, sender_address); >-+ if ((Ustrcmp(ob->srs, "forward") == 0 || Ustrcmp(ob->srs, "reverseandforward") == 0) && !verify ) >-+ { >-+ uschar *res; >-+ int ret; >-+ DEBUG(D_route) >-+ debug_printf("SRS: (Forward) \n"); >-+ srs_orig_sender = sender_address; >-+ eximsrs_init(); >-+ ret = eximsrs_forward(&res, sender_address, deliver_domain); >-+ if (ret != OK) >-+ return ret; >-+ sender_address = res; >-+ DEBUG(D_route) >-+ debug_printf("SRS: Sender '%s' rewritten to '%s'\n", >-+ srs_orig_sender, sender_address); >- } >- } >- #endif >-diff -u src/routers/redirect.h src/routers/redirect.h >---- src/routers/redirect.h Sat Jul 17 11:12:00 2004 >-+++ src/routers/redirect.h Sat Jul 17 11:55:47 2004 >-@@ -33,9 +33,6 @@ >- >- #ifdef SRS >- uschar *srs; >-- uschar *srs_condition; >-- uschar *srs_db; >-- uschar *srs_alias; >- #endif >- >- int modemask; >-diff -u src/srs.c src/srs.c >---- src/srs.c Sat Jul 17 11:12:00 2004 >-+++ src/srs.c Sat Jul 17 12:28:31 2004 >-@@ -5,205 +5,127 @@ >- /* This file is an extension to Exim and is not part of the standard >- Exim distribution */ >- >--/* (c)2004 Miles Wilton <miles@mirtol.com> */ >-+/* (c) 2004 Shevek >-+ * Based on work by Miles Wilton <miles@mirtol.com> >-+ * Updated by Shevek to use libsrs2 >-+ * Sorry Miles, I was in a roaring hurry, but we still need the >-+ * help! >-+ */ >- >- /* License: GPL */ >- >-+#include "exim.h" >- >- #ifdef SRS >- >--#include <srs_alt.h> >-+#include <srs2.h> >- >--#include "exim.h" >- #include "srs.h" >- >--srs_t *srs = NULL; >--uschar *srs_db_forward = NULL; >--uschar *srs_db_reverse = NULL; >-+#define SRS_WARN_UNLESS(x) do { \ >-+ int __ret = (x); \ >-+ if (__ret != SRS_SUCCESS) \ >-+ DEBUG(D_any) \ >-+ debug_printf("srs: %s\n", srs_strerror(__ret)); \ >-+ } while(0) >-+ >-+srs_t *srs = NULL; >-+ >-+int >-+eximsrs_init() >-+{ >-+ char sbuf[1024]; >-+ uschar *list; >-+ int co; >-+ >-+ char *secret; >-+ >-+ if (srs == NULL) { >-+ srs = srs_new(); >-+ >-+ if (srs_secrets == NULL) { >-+ log_write(0, LOG_MAIN | LOG_PANIC, >-+ "SRS: No secrets specified"); >-+ return DEFER; >-+ } >-+ >-+ /* Get config */ >-+ list = srs_secrets; >-+ >-+ co = 0; >-+ while ((secret = string_nextinlist(&list, &co, >-+ sbuf, sizeof(sbuf))) != NULL) { >-+ SRS_WARN_UNLESS(srs_add_secret(srs, secret)); >-+ } >-+ >-+ SRS_WARN_UNLESS(srs_set_alwaysrewrite(srs, srs_alwaysrewrite)); >-+ if (srs_hashlength != -1) >-+ SRS_WARN_UNLESS(srs_set_hashlength(srs, srs_hashlength)); >-+ if (srs_hashmin != -1) >-+ SRS_WARN_UNLESS(srs_set_hashmin(srs, srs_hashmin)); >-+ if (srs_maxage != -1) >-+ SRS_WARN_UNLESS(srs_set_maxage(srs, srs_maxage)); >-+ if (srs_separator != NULL) >-+ SRS_WARN_UNLESS(srs_set_separator(srs, srs_separator[0])); >-+ >-+ DEBUG(D_any) >-+ debug_printf("SRS initialised\n"); >-+ } >-+ >-+ return OK; >-+} >-+ >-+int >-+eximsrs_done() >-+{ >-+ if (srs != NULL) >-+ srs_free(srs); >-+ srs = NULL; >-+ return OK; >-+} >-+ >-+int >-+eximsrs_forward(uschar **result, uschar *sender, uschar *domain) >-+{ >-+ char res[1024]; >-+ int ret; >-+ >-+ ret = srs_forward(srs, res, sizeof(res), sender, domain); >-+ if (ret != SRS_SUCCESS) { >-+ DEBUG(D_any) >-+ debug_printf("srs_forward failed (%s, %s): %s\n", >-+ sender, domain, srs_strerror(ret)); >-+ return DEFER; >-+ } >-+ >-+ *result = string_copy(res); >-+ return OK; >-+} >-+ >-+int >-+eximsrs_reverse(uschar **result, uschar *sender) >-+{ >-+ char res[1024]; >-+ int ret; >-+ >-+ ret = srs_reverse(srs, res, sizeof(res), sender); >-+ if (ret != SRS_SUCCESS) { >-+ switch (SRS_ERROR_TYPE(ret)) { >-+ case SRS_ERRTYPE_CONFIG: >-+ /* This should never happen */ >-+ return DEFER; >-+ case SRS_ERRTYPE_INPUT: >-+ /* This should never happen */ >-+ return DEFER; >-+ case SRS_ERRTYPE_SYNTAX: >-+ return DECLINE; >-+ case SRS_ERRTYPE_SRS: >-+ return FAIL; >-+ } >-+ } >- >-+ *result = string_copy(res); >- >--/* srs_init just initialises libsrs and creates (if necessary) >-- an srs object to use for all srs calls in this instance */ >-- >--int eximsrs_init() >--{ >-- int co; >-- uschar *list = srs_config; >-- char secret_buf[SRS_MAX_SECRET_LENGTH]; >-- char *secret; >-- char sbuf[4]; >-- char *sbufp; >-- int hashlen, maxage; >-- >-- >-- if(!srs) >-- { >-- // Check config >-- if(!srs_config) >-- { >-- log_write(0, LOG_MAIN | LOG_PANIC, >-- "SRS Configuration Error"); >-- return DEFER; >-- } >-- >-- // Get config >-- co = 0; >-- if((secret = string_nextinlist(&list, &co, secret_buf, >-- SRS_MAX_SECRET_LENGTH)) == NULL) >-- { >-- log_write(0, LOG_MAIN | LOG_PANIC, >-- "SRS Configuration Error: No secret specified"); >-- return DEFER; >-- } >-- >-- if((sbufp = string_nextinlist(&list, &co, sbuf, sizeof(sbuf))) == NULL) >-- maxage = 31; >-- else >-- maxage = atoi(sbuf); >-- if(maxage < 0 || maxage > 365) >-- { >-- log_write(0, LOG_MAIN | LOG_PANIC, >-- "SRS Configuration Error: Invalid maximum timestamp age"); >-- return DEFER; >-- } >-- >-- if((sbufp = string_nextinlist(&list, &co, sbuf, sizeof(sbuf))) == NULL) >-- hashlen = 6; >-- else >-- hashlen = atoi(sbuf); >-- if(hashlen < 1 || hashlen > 20) >-- { >-- log_write(0, LOG_MAIN | LOG_PANIC, >-- "SRS Configuration Error: Invalid hash length"); >-- return DEFER; >-- } >-- >-- >-- if((srs = srs_open(secret, strnlen(secret, SRS_MAX_SECRET_LENGTH), >-- maxage, hashlen, hashlen)) == NULL) >-- { >-- log_write(0, LOG_MAIN | LOG_PANIC, >-- "Failed to allocate SRS memory"); >-- return DEFER; >-- } >-- >-- >-- if((sbufp = string_nextinlist(&list, &co, sbuf, sizeof(sbuf))) != NULL) >-- srs_set_option(srs, SRS_OPTION_USETIMESTAMP, atoi(sbuf)); >-- >-- if((sbufp = string_nextinlist(&list, &co, sbuf, sizeof(sbuf))) != NULL) >-- srs_set_option(srs, SRS_OPTION_USEHASH, atoi(sbuf)); >-- >-- DEBUG(D_any) >-- debug_printf("SRS initialized\n"); >-- } >-- >-- return OK; >--} >-- >-- >--int eximsrs_done() >--{ >-- if(srs) >-- srs_close(srs); >-- >-- srs = NULL; >-- >-- return OK; >--} >-- >-- >--int eximsrs_forward(uschar **result, uschar *orig_sender, uschar *domain) >--{ >-- char res[512]; >-- int n; >-- >-- if((n = srs_forward(srs, orig_sender, domain, res, sizeof(res))) & SRS_RESULT_FAIL) >-- { >-- DEBUG(D_any) >-- debug_printf("srs_forward failed (%s, %s): %s\n", orig_sender, domain, srs_geterrormsg(n)); >-- return DEFER; >-- } >-- >-- *result = string_copy(res); >-- return OK; >--} >-- >-- >--int eximsrs_reverse(uschar **result, uschar *address) >--{ >-- char res[512]; >-- int n; >-- >-- if((n = srs_reverse(srs, address, res, sizeof(res))) & SRS_RESULT_FAIL) >-- { >-- DEBUG(D_any) >-- debug_printf("srs_reverse failed (%s): %s\n", address, srs_geterrormsg(n)); >-- if(n == SRS_RESULT_NOTSRS || n == SRS_RESULT_BADSRS) >-- return DECLINE; >-- if(n == SRS_RESULT_BADHASH || n == SRS_RESULT_BADTIMESTAMP || n == SRS_RESULT_TIMESTAMPEXPIRED) >-- return FAIL; >-- return DEFER; >-- } >-- >-- *result = string_copy(res); >-- return OK; >-+ return OK; >- } >-- >-- >--int eximsrs_db_set(BOOL reverse, uschar *srs_db) >--{ >-- if(reverse) >-- srs_db_reverse = string_copy(srs_db); >-- else >-- srs_db_forward = string_copy(srs_db); >-- >-- if(srs_set_db_functions(srs, eximsrs_db_insert, eximsrs_db_lookup) * SRS_RESULT_FAIL) >-- return DEFER; >-- >-- return OK; >--} >-- >-- >--srs_result eximsrs_db_insert(srs_t *srs, char *data, uint data_len, char *result, uint result_len) >--{ >-- uschar *res; >-- char buf[64]; >-- >-- srs_db_address = string_copyn(data, data_len); >-- if(srs_generate_unique_id(srs, srs_db_address, buf, 64) & SRS_RESULT_FAIL) >-- return DEFER; >-- >-- srs_db_key = string_copyn(buf, 16); >-- >-- if((res = expand_string(srs_db_forward)) == NULL) >-- return SRS_RESULT_DBERROR; >-- >-- if(result_len < 17) >-- return SRS_RESULT_DBERROR; >-- >-- strncpy(result, srs_db_key, result_len); >-- >-- return SRS_RESULT_OK; >--} >-- >-- >--srs_result eximsrs_db_lookup(srs_t *srs, char *data, uint data_len, char *result, uint result_len) >--{ >-- uschar *res; >-- >-- srs_db_key = string_copyn(data, data_len); >-- if((res = expand_string(srs_db_reverse)) == NULL) >-- return SRS_RESULT_DBERROR; >-- >-- if(Ustrlen(res) >= result_len) >-- return SRS_RESULT_ADDRESSTOOLONG; >-- >-- strncpy(result, res, result_len); >-- >-- return SRS_RESULT_OK; >--} >-- >-- >- #endif >-- >-diff -u src/srs.h src/srs.h >---- src/srs.h Sat Jul 17 11:12:00 2004 >-+++ src/srs.h Sat Jul 17 11:58:51 2004 >-@@ -5,28 +5,28 @@ >- /* This file is an extension to Exim and is not part of the standard >- Exim distribution */ >- >--/* ©2004 Miles Wilton <miles@mirtol.com> */ >-+/* (c) 2004 Shevek >-+ * Based on work by Miles Wilton <miles@mirtol.com> >-+ * Updated by Shevek to use libsrs2 >-+ * Sorry Miles, I was in a roaring hurry, but we still need the >-+ * help! >-+ */ >- >- /* License: GPL */ >- >- #ifndef __SRS_H__ >-- >- #define __SRS_H__ 1 >- >-- >- #ifdef SRS >- >- #include "mytypes.h" >--#include <srs_alt.h> >-+#include <srs2.h> >- >- int eximsrs_init(); >- int eximsrs_done(); >- int eximsrs_forward(uschar **result, uschar *orig_sender, uschar *domain); >- int eximsrs_reverse(uschar **result, uschar *address); >--int eximsrs_db(BOOL reverse, uschar *srs_db); >- >--srs_result eximsrs_db_insert(srs_t *srs, char *data, uint data_len, char *result, uint result_len); >--srs_result eximsrs_db_lookup(srs_t *srs, char *data, uint data_len, char *result, uint result_len); >- >- #endif >- >diff -ruN --exclude=CVS /usr/ports/mail/exim/options /home/krion/exim/options >--- /usr/ports/mail/exim/options Thu Feb 3 04:55:00 2005 >+++ /home/krion/exim/options Sun Feb 27 23:17:15 2005 >@@ -3,12 +3,16 @@ > # Configurable options for mail/exim. Note that the options listed > # here are the defaults, so if you want to change them you have to > # specify the opposite version in the command line, e.g. >-# `make WITHOUT_EXISCAN=yes WITH_SASLAUTHD=yes install' >+# `make WITH_CONTENT_SCAN=yes WITH_SASLAUTHD=yes install' > # >-# `make WITH_EXISCAN=no WITHOUT_SASLAUTHD=no' will not give the expected results. >+# `make WITHOUT_CONTENT_SCAN=yes WITHOUT_SASLAUTHD=no' will not give the expected results. > >-#WITH_EXISCAN >-# Exim will be built with exiscan email content scanner support. >+#WITHOUT_CONTENT_SCAN >+# Exim will be built without exiscan email content scanner support. >+ >+#WITH_OLD_DEMIME >+# Enable old, deprecated "demime" ACL condition, in addition >+# to all the other content-scanning features. > > #WITHOUT_SA_EXIM > # SA-Exim support (<http://marc.merlins.org/linux/exim/sa.html>) >@@ -159,8 +163,11 @@ > # use `make makeconfig' to edit the defaults (MAINTAINER only) > > _OPTIONSNG_READ?=default >-.ifndef WITHOUT_EXISCAN >-WITH_EXISCAN?=yes >+.ifndef WITH_CONTENT_SCAN >+WITHOUT_CONTENT_SCAN?=yes >+.endif >+.ifndef WITHOUT_OLD_DEMIME >+WITH_OLD_DEMIME?=yes > .endif > .ifndef WITH_SA_EXIM > WITHOUT_SA_EXIM?=yes >diff -ruN --exclude=CVS /usr/ports/mail/exim/pkg-plist /home/krion/exim/pkg-plist >--- /usr/ports/mail/exim/pkg-plist Sun Oct 17 14:05:20 2004 >+++ /home/krion/exim/pkg-plist Sun Feb 27 22:46:14 2005 >@@ -28,12 +28,11 @@ > %%PORTDOCS%%%%DOCSDIR%%/NewStuff > %%PORTDOCS%%%%DOCSDIR%%/OptionLists.txt > %%PORTDOCS%%%%DOCSDIR%%/POST-INSTALL-NOTES >-%%PORTDOCS%%%%EXISCAN_ACL%%%%DOCSDIR%%/POST-INSTALL-NOTES.clamd >+%%PORTDOCS%%%%DOCSDIR%%/POST-INSTALL-NOTES.clamd > %%PORTDOCS%%%%DOCSDIR%%/README > %%PORTDOCS%%%%DOCSDIR%%/README.SIEVE > %%PORTDOCS%%%%DOCSDIR%%/dbm.discuss.txt >-%%PORTDOCS%%%%EXISCAN_ACL%%%%DOCSDIR%%/exiscan-acl-examples.txt >-%%PORTDOCS%%%%EXISCAN_ACL%%%%DOCSDIR%%/exiscan-acl-spec.txt >+%%PORTDOCS%%%%DOCSDIR%%/experimental-spec.txt > %%PORTDOCS%%%%DOCSDIR%%/filter.txt > %%PORTDOCS%%%%DOCSDIR%%/pcrepattern.txt > %%PORTDOCS%%%%DOCSDIR%%/pcretest.txt
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 78168
: 51471