Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 27 Feb 2005 23:53:25 +0100
From:      Kirill Ponomarew <krion@voodoo.oberon.net>
To:        FreeBSD-gnats-submit@FreeBSD.org
Cc:        eik@FreeBSD.org
Subject:   ports/78168: [PATCH] mail/exim: update to 4.50
Message-ID:  <E1D5XHx-000P9c-Vx@voodoo.oberon.net>
Resent-Message-ID: <200502272300.j1RN0Tfr071437@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help

>Number:         78168
>Category:       ports
>Synopsis:       [PATCH] mail/exim: update to 4.50
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-ports-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          update
>Submitter-Id:   current-users
>Arrival-Date:   Sun Feb 27 23:00:29 GMT 2005
>Closed-Date:
>Last-Modified:
>Originator:     Kirill Ponomarew
>Release:        FreeBSD 5.3-STABLE i386
>Organization:
>Environment:
System: FreeBSD voodoo.oberon.net 5.3-STABLE FreeBSD 5.3-STABLE #0: Tue Feb 15 12:35:50 CET 2005
>Description:
- Update to 4.50

* Remove WITH/WITHOUT_EXISCAN variable, since exiscan code was
  merged into exim-4.50

* Introduce two new variables: WITH_CONTENT_SCAN and WITH_OLD_DEMIME.

* Enable WITH_OLD_DEMIME by default to preserve backward
  compatibility with deprecated "demime" ACL condition.  For Exim
  itself, setting WITH_OLD_DEMIME forces WITH_CONTENT_SCAN to be set.

* Remove POST-INSTALL-NOTES.exiscan-acl and xpatch-exiscan2 patches.

* Add experimental-spec.txt into docs, to inform about experimental
  features.

Removed file(s):
- files/POST-INSTALL-NOTES.exiscan-acl
- files/xpatch-exiscan2

Port maintainer (eik@FreeBSD.org) is cc'd.

Generated with FreeBSD Port Tools 0.63
>How-To-Repeat:
>Fix:

--- exim-4.50.patch begins here ---
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
--- exim-4.50.patch ends here ---

>Release-Note:
>Audit-Trail:
>Unformatted:



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?E1D5XHx-000P9c-Vx>