diff options
19 files changed, 76 insertions, 1352 deletions
diff --git a/testing/cyrus-sasl/APKBUILD b/extra/cyrus-sasl/APKBUILD index 4e907576..4e907576 100644 --- a/testing/cyrus-sasl/APKBUILD +++ b/extra/cyrus-sasl/APKBUILD diff --git a/testing/cyrus-sasl/cyrus-sasl-2.1.19-checkpw.c.patch b/extra/cyrus-sasl/cyrus-sasl-2.1.19-checkpw.c.patch index f7bf44b7..f7bf44b7 100644 --- a/testing/cyrus-sasl/cyrus-sasl-2.1.19-checkpw.c.patch +++ b/extra/cyrus-sasl/cyrus-sasl-2.1.19-checkpw.c.patch diff --git a/testing/cyrus-sasl/db-4.7.patch b/extra/cyrus-sasl/db-4.7.patch index 8937d763..8937d763 100644 --- a/testing/cyrus-sasl/db-4.7.patch +++ b/extra/cyrus-sasl/db-4.7.patch diff --git a/testing/cyrus-sasl/saslauthd.initd b/extra/cyrus-sasl/saslauthd.initd index a5e9a440..a5e9a440 100644 --- a/testing/cyrus-sasl/saslauthd.initd +++ b/extra/cyrus-sasl/saslauthd.initd diff --git a/extra/postfix/APKBUILD b/extra/postfix/APKBUILD index dc0d0e8c..a0a83f46 100644 --- a/extra/postfix/APKBUILD +++ b/extra/postfix/APKBUILD @@ -1,19 +1,19 @@ # Maintainer: Natanael Copa <ncopa@alpinelinux.org> pkgname=postfix -pkgver=2.5.6 -pkgrel=5 +pkgver=2.6.1 +pkgrel=0 pkgdesc="Secure and fast drop-in replacement for Sendmail (MTA)" url="http://www.postfix.org/" license="IPL-1" -depends="db pcre openssl" -makedepends="db-dev pcre-dev openssl-dev postgresql-dev mysql-dev openldap-dev" +depends="db pcre openssl libsasl" +makedepends="db-dev pcre-dev openssl-dev postgresql-dev mysql-dev openldap-dev cyrus-sasl-dev" install="$pkgname.pre-install $pkgname.post-install" subpackages="$pkgname-doc $pkgname-ldap $pkgname-mysql $pkgname-pcre $pkgname-pgsql" source="ftp://ftp.porcupine.org/mirrors/$pkgname-release/official/$pkgname-$pkgver.tar.gz $pkgname.initd $install - postfix-2.5.5-dynamicmaps.patch + postfix-2.6.1-dynamicmaps.patch dynamicmaps.cf postfix-ldap.post-install postfix-mysql.post-install @@ -51,8 +51,12 @@ build () { ccargs="$ccargs -DUSE_TLS" auxlibs="$auxlibs -lssl -lcrypto" - # dovecot-sasl - ccargs="$ccargs -DUSE_SASL_AUTH -DDEF_SERVER_SASL_TYPE=\\\"dovecot\\\"" + ## dovecot-sasl + #ccargs="$ccargs -DUSE_SASL_AUTH -DDEF_SERVER_SASL_TYPE=\\\"dovecot\\\"" + + # cyrus sasl + ccargs="$ccargs -DUSE_SASL_AUTH -DUSE_CYRUS_SASL -I/usr/include/sasl" + auxlibs="$auxlibs -lsasl2" # postgresql ccargs="$ccargs -DHAS_PGSQL -I$(pg_config --includedir)" @@ -99,8 +103,13 @@ build () { mkdir -p "$pkgdir"/etc/postfix mv "$pkgdir"/usr/share/doc/$pkgname/defaults/*.cf \ - "$pkgdir"/usr/share/doc/$pkgname/defaults/post*-* \ "$pkgdir"/usr/share/doc/$pkgname/defaults/aliases \ + "$pkgdir"/usr/share/doc/$pkgname/defaults/canonical \ + "$pkgdir"/usr/share/doc/$pkgname/defaults/generic \ + "$pkgdir"/usr/share/doc/$pkgname/defaults/header_checks \ + "$pkgdir"/usr/share/doc/$pkgname/defaults/relocated \ + "$pkgdir"/usr/share/doc/$pkgname/defaults/transport \ + "$pkgdir"/usr/share/doc/$pkgname/defaults/virtual \ "$pkgdir"/etc/postfix/ || return 1 install -d -o postfix -g postfix "$pkgdir"/var/spool/postfix @@ -124,11 +133,11 @@ mysql() { _mv_dict mysql libmysqlclient;} pcre() { _mv_dict pcre pcre; } pgsql() { _mv_dict pgsql libpq; } -md5sums="ec2cb63b53f5f36c3ca91da8f3bc9407 postfix-2.5.6.tar.gz +md5sums="737bbc245da9c72c174893397f70ae86 postfix-2.6.1.tar.gz 8416354d402f3be288fa98b60af86240 postfix.initd 2bfc3864183694e5484ac073bb0cb7ef postfix.pre-install 0064d45c2c8a46c374b55c4abc46cfb2 postfix.post-install -e71b0c501150cba4d30aef52a6fb542c postfix-2.5.5-dynamicmaps.patch +b8812dbf2d076c79cf948ee017e81b39 postfix-2.6.1-dynamicmaps.patch 0efff9b4bb493ad2ff0b9915cb244d14 dynamicmaps.cf 2ebe51a882eb9d6d7866583eb6af3969 postfix-ldap.post-install 2ebe51a882eb9d6d7866583eb6af3969 postfix-mysql.post-install diff --git a/extra/postfix/postfix-2.5.5-dynamicmaps.patch b/extra/postfix/postfix-2.5.5-dynamicmaps.patch deleted file mode 100644 index 92446559..00000000 --- a/extra/postfix/postfix-2.5.5-dynamicmaps.patch +++ /dev/null @@ -1,1042 +0,0 @@ -This patch is taken from mandriva: -http://svn.mandriva.com/cgi-bin/viewvc.cgi/packages/cooker/postfix/current/SOURCES/ - -diff -Naurp postfix-2.5.5/conf/postfix-files postfix-2.5.5.oden/conf/postfix-files ---- postfix-2.5.5/conf/postfix-files 2008-01-24 01:13:49.000000000 +0100 -+++ postfix-2.5.5.oden/conf/postfix-files 2008-12-17 18:17:11.000000000 +0100 -@@ -64,6 +64,10 @@ $queue_directory/saved:d:$mail_owner:-:7 - $queue_directory/trace:d:$mail_owner:-:700:ucr - $daemon_directory/anvil:f:root:-:755 - $daemon_directory/bounce:f:root:-:755 -+$daemon_directory/dict_ldap.so:f:root:-:755 -+$daemon_directory/dict_pcre.so:f:root:-:755 -+$daemon_directory/dict_mysql.so:f:root:-:755 -+$daemon_directory/dict_pgsql.so:f:root:-:755 - $daemon_directory/cleanup:f:root:-:755 - $daemon_directory/discard:f:root:-:755 - $daemon_directory/error:f:root:-:755 -@@ -86,6 +90,11 @@ $daemon_directory/tlsmgr:f:root:-:755 - $daemon_directory/trivial-rewrite:f:root:-:755 - $daemon_directory/verify:f:root:-:755 - $daemon_directory/virtual:f:root:-:755 -+/usr/lib/libpostfix-dns.so.1:f:root:-:755 -+/usr/lib/libpostfix-global.so.1:f:root:-:755 -+/usr/lib/libpostfix-tls.so.1:f:root:-:755 -+/usr/lib/libpostfix-master.so.1:f:root:-:755 -+/usr/lib/libpostfix-util.so.1:f:root:-:755 - $daemon_directory/nqmgr:h:$daemon_directory/qmgr - $daemon_directory/lmtp:h:$daemon_directory/smtp - $command_directory/postalias:f:root:-:755 -@@ -108,6 +117,7 @@ $config_directory/access:f:root:-:644:p - $config_directory/aliases:f:root:-:644:p - $config_directory/bounce.cf.default:f:root:-:644 - $config_directory/canonical:f:root:-:644:p -+$config_directory/dynamicmaps.cf:f:root:-:644:p - $config_directory/cidr_table:f:root:-:644:o - $config_directory/generic:f:root:-:644:p - $config_directory/generics:f:root:-:644:o -diff -Naurp postfix-2.5.5/src/dns/Makefile.in postfix-2.5.5.oden/src/dns/Makefile.in ---- postfix-2.5.5/src/dns/Makefile.in 2007-03-17 18:51:37.000000000 +0100 -+++ postfix-2.5.5.oden/src/dns/Makefile.in 2008-12-17 18:17:11.000000000 +0100 -@@ -14,7 +14,7 @@ LIBS = ../../lib/libutil.a - LIB_DIR = ../../lib - INC_DIR = ../../include - --.c.o:; $(CC) $(CFLAGS) -c $*.c -+.c.o:; $(CC) -fPIC $(CFLAGS) -c $*.c - - all: $(LIB) - -@@ -31,12 +31,10 @@ tests: test dns_rr_to_pa_test dns_rr_to_ - root_tests: - - $(LIB): $(OBJS) -- $(AR) $(ARFL) $(LIB) $? -- $(RANLIB) $(LIB) -+ gcc -shared -Wl,-soname,libpostfix-dns.so.1 -o $(LIB) $(OBJS) $(LIBS) $(SYSLIBS) - - $(LIB_DIR)/$(LIB): $(LIB) - cp $(LIB) $(LIB_DIR) -- $(RANLIB) $(LIB_DIR)/$(LIB) - - update: $(LIB_DIR)/$(LIB) $(HDRS) - -for i in $(HDRS); \ -diff -Naurp postfix-2.5.5/src/global/Makefile.in postfix-2.5.5.oden/src/global/Makefile.in ---- postfix-2.5.5/src/global/Makefile.in 2007-12-06 14:49:03.000000000 +0100 -+++ postfix-2.5.5.oden/src/global/Makefile.in 2008-12-17 18:17:11.000000000 +0100 -@@ -33,7 +33,7 @@ OBJS = abounce.o anvil_clnt.o been_here. - canon_addr.o cfg_parser.o cleanup_strerror.o cleanup_strflags.o \ - clnt_stream.o conv_time.o db_common.o debug_peer.o debug_process.o \ - defer.o deliver_completed.o deliver_flock.o deliver_pass.o \ -- deliver_request.o dict_ldap.o dict_mysql.o dict_pgsql.o \ -+ deliver_request.o \ - dict_proxy.o domain_list.o dot_lockfile.o dot_lockfile_as.o \ - dsb_scan.o dsn.o dsn_buf.o dsn_mask.o dsn_print.o dsn_util.o \ - ehlo_mask.o ext_prop.o file_id.o flush_clnt.o header_opts.o \ -@@ -101,10 +101,13 @@ LIBS = ../../lib/libutil.a - LIB_DIR = ../../lib - INC_DIR = ../../include - MAKES = -+LDAPSO = dict_ldap.so -+MYSQLSO = dict_mysql.so -+PGSQLSO = dict_pgsql.so - --.c.o:; $(CC) $(CFLAGS) -c $*.c -+.c.o:; $(CC) -fPIC $(CFLAGS) -c $*.c - --all: $(LIB) -+all: $(LIB) $(LDAPSO) $(MYSQLSO) $(PGSQLSO) - - $(OBJS): ../../conf/makedefs.out - -@@ -114,14 +117,30 @@ Makefile: Makefile.in - test: $(TESTPROG) - - $(LIB): $(OBJS) -- $(AR) $(ARFL) $(LIB) $? -- $(RANLIB) $(LIB) -+ gcc -shared -Wl,-soname,libpostfix-global.so.1 -o $(LIB) $(OBJS) $(LIBS) $(SYSLIBS) -+ -+$(LDAPSO): dict_ldap.o $(LIB) -+ gcc -shared -Wl,-soname,dict_ldap.so -o $@ $? -lldap -llber -L../../lib -lutil -L. -lglobal -+ -+$(MYSQLSO): dict_mysql.o $(LIB) -+ gcc -shared -Wl,-soname,dict_mysql.so -o $@ $? -lmysqlclient -L. -lutil -lglobal -+ -+$(PGSQLSO): dict_pgsql.o $(LIB) -+ gcc -shared -Wl,-soname,dict_pgsql.so -o $@ $? -lpq -L. -lutil -lglobal - - $(LIB_DIR)/$(LIB): $(LIB) - cp $(LIB) $(LIB_DIR) -- $(RANLIB) $(LIB_DIR)/$(LIB) - --update: $(LIB_DIR)/$(LIB) $(HDRS) -+../../libexec/$(LDAPSO): $(LDAPSO) -+ cp $(LDAPSO) ../../libexec -+ -+../../libexec/$(MYSQLSO): $(MYSQLSO) -+ cp $(MYSQLSO) ../../libexec -+ -+../../libexec/$(PGSQLSO): $(PGSQLSO) -+ cp $(PGSQLSO) ../../libexec -+ -+update: $(LIB_DIR)/$(LIB) ../../libexec/$(LDAPSO) ../../libexec/$(MYSQLSO) ../../libexec/$(PGSQLSO) $(HDRS) - -for i in $(HDRS); \ - do \ - cmp -s $$i $(INC_DIR)/$$i 2>/dev/null || cp $$i $(INC_DIR); \ -@@ -489,7 +508,7 @@ lint: - lint $(DEFS) $(SRCS) $(LINTFIX) - - clean: -- rm -f *.o $(LIB) *core $(TESTPROG) junk -+ rm -f *.o $(LIB) $(LDAPSO) $(MYSQLSO) $(PGSQLSO) *core $(TESTPROG) junk - rm -rf printfck - - tidy: clean -diff -Naurp postfix-2.5.5/src/global/mail_conf.c postfix-2.5.5.oden/src/global/mail_conf.c ---- postfix-2.5.5/src/global/mail_conf.c 2004-04-10 16:52:51.000000000 +0200 -+++ postfix-2.5.5.oden/src/global/mail_conf.c 2008-12-17 18:17:11.000000000 +0100 -@@ -175,6 +175,13 @@ void mail_conf_suck(void) - path = concatenate(var_config_dir, "/", "main.cf", (char *) 0); - dict_load_file(CONFIG_DICT, path); - myfree(path); -+ -+#ifndef NO_DYNAMIC_MAPS -+ path = concatenate(var_config_dir, "/", "dynamicmaps.cf", (char *) 0); -+ dict_open_dlinfo(path); -+ myfree(path); -+#endif -+ - } - - /* mail_conf_eval - expand macros in string */ -diff -Naurp postfix-2.5.5/src/global/mail_dict.c postfix-2.5.5.oden/src/global/mail_dict.c ---- postfix-2.5.5/src/global/mail_dict.c 2008-01-08 22:07:47.000000000 +0100 -+++ postfix-2.5.5.oden/src/global/mail_dict.c 2008-12-17 18:17:11.000000000 +0100 -@@ -45,6 +45,7 @@ typedef struct { - - static const DICT_OPEN_INFO dict_open_info[] = { - DICT_TYPE_PROXY, dict_proxy_open, -+#ifdef NO_DYNAMIC_MAPS - #ifdef HAS_LDAP - DICT_TYPE_LDAP, dict_ldap_open, - #endif -@@ -54,6 +55,7 @@ static const DICT_OPEN_INFO dict_open_in - #ifdef HAS_PGSQL - DICT_TYPE_PGSQL, dict_pgsql_open, - #endif -+#endif /* NO_DYNAMIC_MAPS */ - 0, - }; - -diff -Naurp postfix-2.5.5/src/global/mail_params.c postfix-2.5.5.oden/src/global/mail_params.c ---- postfix-2.5.5/src/global/mail_params.c 2008-01-08 21:35:08.000000000 +0100 -+++ postfix-2.5.5.oden/src/global/mail_params.c 2008-12-17 18:17:11.000000000 +0100 -@@ -78,6 +78,7 @@ - /* char *var_export_environ; - /* char *var_debug_peer_list; - /* int var_debug_peer_level; -+/* int var_command_maxtime; - /* int var_in_flow_delay; - /* int var_fault_inj_code; - /* char *var_bounce_service; -@@ -254,6 +255,7 @@ char *var_import_environ; - char *var_export_environ; - char *var_debug_peer_list; - int var_debug_peer_level; -+int var_command_maxtime; - int var_fault_inj_code; - char *var_bounce_service; - char *var_cleanup_service; -@@ -265,6 +267,7 @@ char *var_showq_service; - char *var_error_service; - char *var_flush_service; - char *var_verify_service; -+char *var_scache_service; - char *var_trace_service; - int var_db_create_buf; - int var_db_read_buf; -diff -Naurp postfix-2.5.5/src/global/mkmap_open.c postfix-2.5.5.oden/src/global/mkmap_open.c ---- postfix-2.5.5/src/global/mkmap_open.c 2008-01-08 23:08:45.000000000 +0100 -+++ postfix-2.5.5.oden/src/global/mkmap_open.c 2008-12-17 18:17:11.000000000 +0100 -@@ -81,7 +81,7 @@ - * We use a different table (in dict_open.c) when querying maps. - */ - typedef struct { -- char *type; -+ const char *type; - MKMAP *(*before_open) (const char *); - } MKMAP_OPEN_INFO; - -@@ -156,7 +156,16 @@ MKMAP *mkmap_open(const char *type, con - */ - for (mp = mkmap_types; /* void */ ; mp++) { - if (mp->type == 0) -+#ifndef NO_DYNAMIC_MAPS -+ { -+ static MKMAP_OPEN_INFO oi; -+ oi.before_open=(MKMAP*(*)(const char*))dict_mkmap_func(type); -+ oi.type=type; -+ mp=&oi; -+ } -+#else - msg_fatal("unsupported map type: %s", type); -+#endif - if (strcmp(type, mp->type) == 0) - break; - } -diff -Naurp postfix-2.5.5/src/master/Makefile.in postfix-2.5.5.oden/src/master/Makefile.in ---- postfix-2.5.5/src/master/Makefile.in 2007-09-03 19:51:46.000000000 +0200 -+++ postfix-2.5.5.oden/src/master/Makefile.in 2008-12-17 18:17:11.000000000 +0100 -@@ -20,7 +20,7 @@ LIB_DIR = ../../lib - INC_DIR = ../../include - BIN_DIR = ../../libexec - --.c.o:; $(CC) $(CFLAGS) -c $*.c -+.c.o:; $(CC) `for i in $(LIB_OBJ); do [ $$i = $@ ] && echo -fPIC; done` $(CFLAGS) -c $*.c - - all: $(PROG) $(LIB) - -@@ -39,12 +39,10 @@ tests: - root_tests: - - $(LIB): $(LIB_OBJ) -- $(AR) $(ARFL) $(LIB) $? -- $(RANLIB) $(LIB) -+ gcc -shared -Wl,-soname,libpostfix-master.so.1 -o $(LIB) $(LIB_OBJ) $(LIBS) $(SYSLIBS) - - $(LIB_DIR)/$(LIB): $(LIB) - cp $(LIB) $(LIB_DIR)/$(LIB) -- $(RANLIB) $(LIB_DIR)/$(LIB) - - $(BIN_DIR)/$(PROG): $(PROG) - cp $(PROG) $(BIN_DIR) -diff -Naurp postfix-2.5.5/src/milter/Makefile.in postfix-2.5.5.oden/src/milter/Makefile.in ---- postfix-2.5.5/src/milter/Makefile.in 2007-12-23 22:22:58.000000000 +0100 -+++ postfix-2.5.5.oden/src/milter/Makefile.in 2008-12-17 18:17:11.000000000 +0100 -@@ -14,7 +14,7 @@ LIB_DIR = ../../lib - INC_DIR = ../../include - MAKES = - --.c.o:; $(CC) $(CFLAGS) -c $*.c -+.c.o:; $(CC) -fPIC $(CFLAGS) -c $*.c - - all: $(LIB) - -@@ -30,12 +30,10 @@ tests: - root_tests: - - $(LIB): $(OBJS) -- $(AR) $(ARFL) $(LIB) $? -- $(RANLIB) $(LIB) -+ gcc -shared -Wl,-soname,libpostfix-milter.so.1 -o $(LIB) $(OBJS) $(LIBS) $(SYSLIBS) - - $(LIB_DIR)/$(LIB): $(LIB) - cp $(LIB) $(LIB_DIR) -- $(RANLIB) $(LIB_DIR)/$(LIB) - - update: $(LIB_DIR)/$(LIB) $(HDRS) - -for i in $(HDRS); \ -diff -Naurp postfix-2.5.5/src/postconf/postconf.c postfix-2.5.5.oden/src/postconf/postconf.c ---- postfix-2.5.5/src/postconf/postconf.c 2008-01-08 21:48:38.000000000 +0100 -+++ postfix-2.5.5.oden/src/postconf/postconf.c 2008-12-17 18:17:11.000000000 +0100 -@@ -893,6 +893,16 @@ static void show_maps(void) - { - ARGV *maps_argv; - int i; -+#ifndef NO_DYNAMIC_MAPS -+ char *path; -+ char *config_dir; -+ -+ var_config_dir = mystrdup((config_dir = safe_getenv(CONF_ENV_PATH)) != 0 ? -+ config_dir : DEF_CONFIG_DIR); /* XXX */ -+ path = concatenate(var_config_dir, "/", "dynamicmaps.cf", (char *) 0); -+ dict_open_dlinfo(path); -+ myfree(path); -+#endif - - maps_argv = dict_mapnames(); - for (i = 0; i < maps_argv->argc; i++) -diff -Naurp postfix-2.5.5/src/postmap/postmap.c postfix-2.5.5.oden/src/postmap/postmap.c ---- postfix-2.5.5/src/postmap/postmap.c 2007-12-04 17:25:13.000000000 +0100 -+++ postfix-2.5.5.oden/src/postmap/postmap.c 2008-12-17 18:17:11.000000000 +0100 -@@ -5,7 +5,7 @@ - /* Postfix lookup table management - /* SYNOPSIS - /* .fi --/* \fBpostmap\fR [\fB-Nfinoprsvw\fR] [\fB-c \fIconfig_dir\fR] -+/* \fBpostmap\fR [\fB-Nfinoprsuvw\fR] [\fB-c \fIconfig_dir\fR] - /* [\fB-d \fIkey\fR] [\fB-q \fIkey\fR] - /* [\fIfile_type\fR:]\fIfile_name\fR ... - /* DESCRIPTION -@@ -115,6 +115,8 @@ - /* as the original input order. - /* This feature is available in Postfix version 2.2 and later, - /* and is not available for all database types. -+/* .IP \fB-u\fR -+/* Upgrade the database to the current version. - /* .IP \fB-v\fR - /* Enable verbose logging for debugging purposes. Multiple \fB-v\fR - /* options make the software increasingly verbose. -@@ -555,6 +557,18 @@ static void postmap_seq(const char *map_ - dict_close(dict); - } - -+/* postmap_upgrade - upgrade a map */ -+ -+static int postmap_upgrade(const char *map_type, const char *map_name) -+{ -+ DICT *dict; -+ -+ dict = dict_open3(map_type, map_name, O_RDWR, -+ DICT_FLAG_LOCK|DICT_FLAG_UPGRADE); -+ dict_close(dict); -+ return (dict != 0); -+} -+ - /* usage - explain */ - - static NORETURN usage(char *myname) -@@ -575,6 +589,7 @@ int main(int argc, char **argv) - int postmap_flags = POSTMAP_FLAG_AS_OWNER | POSTMAP_FLAG_SAVE_PERM; - int open_flags = O_RDWR | O_CREAT | O_TRUNC; - int dict_flags = DICT_FLAG_DUP_WARN | DICT_FLAG_FOLD_FIX; -+ int upgrade = 0; - char *query = 0; - char *delkey = 0; - int sequence = 0; -@@ -619,7 +634,7 @@ int main(int argc, char **argv) - /* - * Parse JCL. - */ -- while ((ch = GETOPT(argc, argv, "Nc:d:finopq:rsvw")) > 0) { -+ while ((ch = GETOPT(argc, argv, "Nc:d:finopq:rsuvw")) > 0) { - switch (ch) { - default: - usage(argv[0]); -@@ -633,8 +648,8 @@ int main(int argc, char **argv) - msg_fatal("out of memory"); - break; - case 'd': -- if (sequence || query || delkey) -- msg_fatal("specify only one of -s -q or -d"); -+ if (sequence || query || delkey || upgrade) -+ msg_fatal("specify only one of -s -q -u or -d"); - delkey = optarg; - break; - case 'f': -@@ -654,8 +669,8 @@ int main(int argc, char **argv) - postmap_flags &= ~POSTMAP_FLAG_SAVE_PERM; - break; - case 'q': -- if (sequence || query || delkey) -- msg_fatal("specify only one of -s -q or -d"); -+ if (sequence || query || delkey || upgrade) -+ msg_fatal("specify only one of -s -q -u or -d"); - query = optarg; - break; - case 'r': -@@ -663,10 +678,15 @@ int main(int argc, char **argv) - dict_flags |= DICT_FLAG_DUP_REPLACE; - break; - case 's': -- if (query || delkey) -- msg_fatal("specify only one of -s or -q or -d"); -+ if (query || delkey || upgrade) -+ msg_fatal("specify only one of -s or -q -u or -d"); - sequence = 1; - break; -+ case 'u': -+ if (sequence || query || delkey || upgrade) -+ msg_fatal("specify only one of -s -q -u or -d"); -+ upgrade=1; -+ break; - case 'v': - msg_verbose++; - break; -@@ -734,6 +754,21 @@ int main(int argc, char **argv) - exit(0); - } - exit(1); -+ } else if (upgrade) { /* Upgrade the map(s) */ -+ int success = 1; -+ if (optind + 1 > argc) -+ usage(argv[0]); -+ while (optind < argc) { -+ if ((path_name = split_at(argv[optind], ':')) != 0) { -+ success &= postmap_upgrade(argv[optind], path_name); -+ } else { -+ success &= postmap_upgrade(var_db_type, path_name); -+ } -+ if (!success) -+ exit(1); -+ optind++; -+ } -+ exit(0); - } else { /* create/update map(s) */ - if (optind + 1 > argc) - usage(argv[0]); -diff -Naurp postfix-2.5.5/src/tls/Makefile.in postfix-2.5.5.oden/src/tls/Makefile.in ---- postfix-2.5.5/src/tls/Makefile.in 2008-01-08 02:42:47.000000000 +0100 -+++ postfix-2.5.5.oden/src/tls/Makefile.in 2008-12-17 18:17:11.000000000 +0100 -@@ -22,7 +22,7 @@ LIB_DIR = ../../lib - INC_DIR = ../../include - MAKES = - --.c.o:; $(CC) $(CFLAGS) -c $*.c -+.c.o:; $(CC) -fPIC $(CFLAGS) -c $*.c - - all: $(LIB) - -@@ -38,12 +38,10 @@ tests: - root_tests: - - $(LIB): $(OBJS) -- $(AR) $(ARFL) $(LIB) $? -- $(RANLIB) $(LIB) -+ gcc -shared -Wl,-soname,libpostfix-tls.so.1 -o $(LIB) $(OBJS) $(LIBS) $(SYSLIBS) - - $(LIB_DIR)/$(LIB): $(LIB) - cp $(LIB) $(LIB_DIR) -- $(RANLIB) $(LIB_DIR)/$(LIB) - - update: $(LIB_DIR)/$(LIB) $(HDRS) - -for i in $(HDRS); \ -diff -Naurp postfix-2.5.5/src/util/Makefile.in postfix-2.5.5.oden/src/util/Makefile.in ---- postfix-2.5.5/src/util/Makefile.in 2008-01-07 17:22:02.000000000 +0100 -+++ postfix-2.5.5.oden/src/util/Makefile.in 2008-12-17 18:17:11.000000000 +0100 -@@ -31,21 +31,21 @@ SRCS = alldig.c allprint.c argv.c argv_s - vstream_popen.c vstring.c vstring_vstream.c watchdog.c writable.c \ - write_buf.c write_wait.c sane_basename.c format_tv.c allspace.c \ - allascii.c load_file.c killme_after.c vstream_tweak.c upass_connect.c \ -- upass_listen.c upass_trigger.c -+ upass_listen.c upass_trigger.c load_lib.c - OBJS = alldig.o allprint.o argv.o argv_split.o attr_clnt.o attr_print0.o \ - attr_print64.o attr_print_plain.o attr_scan0.o attr_scan64.o \ - attr_scan_plain.o auto_clnt.o base64_code.o basename.o binhash.o \ - chroot_uid.o cidr_match.o clean_env.o close_on_exec.o concatenate.o \ - ctable.o dict.o dict_alloc.o dict_cdb.o dict_cidr.o dict_db.o \ - dict_dbm.o dict_debug.o dict_env.o dict_ht.o dict_ni.o dict_nis.o \ -- dict_nisplus.o dict_open.o dict_pcre.o dict_regexp.o dict_sdbm.o \ -- dict_static.o dict_tcp.o dict_unix.o dir_forest.o doze.o dummy_read.o \ -+ dict_nisplus.o dict_open.o dict_regexp.o \ -+ dict_static.o dict_unix.o dir_forest.o doze.o dummy_read.o \ - dummy_write.o duplex_pipe.o environ.o events.o exec_command.o \ - fifo_listen.o fifo_trigger.o file_limit.o find_inet.o fsspace.o \ - fullname.o get_domainname.o get_hostname.o hex_code.o hex_quote.o \ - host_port.o htable.o inet_addr_host.o inet_addr_list.o \ - inet_addr_local.o inet_connect.o inet_listen.o inet_proto.o \ -- inet_trigger.o line_wrap.o lowercase.o lstat_as.o mac_expand.o \ -+ inet_trigger.o line_wrap.o lowercase.o lstat_as.o mac_expand.o load_lib.o \ - mac_parse.o make_dirs.o mask_addr.o match_list.o match_ops.o msg.o \ - msg_output.o msg_syslog.o msg_vstream.o mvect.o myaddrinfo.o myflock.o \ - mymalloc.o myrand.o mystrtok.o name_code.o name_mask.o netstring.o \ -@@ -78,7 +78,7 @@ HDRS = argv.h attr.h attr_clnt.h auto_cl - msg_output.h msg_syslog.h msg_vstream.h mvect.h myaddrinfo.h myflock.h \ - mymalloc.h myrand.h name_code.h name_mask.h netstring.h nvtable.h \ - open_as.h open_lock.h percentm.h posix_signals.h readlline.h ring.h \ -- safe.h safe_open.h sane_accept.h sane_connect.h sane_fsops.h \ -+ safe.h safe_open.h sane_accept.h sane_connect.h sane_fsops.h load_lib.h \ - sane_socketpair.h sane_time.h scan_dir.h set_eugid.h set_ugid.h \ - sigdelay.h sock_addr.h spawn_command.h split_at.h stat_as.h \ - stringops.h sys_defs.h timed_connect.h timed_wait.h trigger.h \ -@@ -90,6 +90,7 @@ DEFS = -I. -D$(SYSTYPE) - CFLAGS = $(DEBUG) $(OPT) $(DEFS) - FILES = Makefile $(SRCS) $(HDRS) - INCL = -+PCRESO = dict_pcre.so - LIB = libutil.a - TESTPROG= dict_open dup2_pass_on_exec events exec_command fifo_open \ - fifo_rdonly_bug fifo_rdwr_bug fifo_trigger fsspace fullname \ -@@ -104,10 +105,11 @@ TESTPROG= dict_open dup2_pass_on_exec ev - - LIB_DIR = ../../lib - INC_DIR = ../../include -+LIBS = $(LIB_DIR)/$(LIB) $(PCRESO) - --.c.o:; $(CC) $(CFLAGS) -c $*.c -+.c.o:; $(CC) -fPIC $(CFLAGS) -c $*.c - --all: $(LIB) -+all: $(LIB) $(PCRESO) - - $(OBJS): ../../conf/makedefs.out - -@@ -116,15 +118,19 @@ Makefile: Makefile.in - - test: $(TESTPROG) - -+$(PCRESO): dict_pcre.o -+ gcc -shared -Wl,-soname,dict_pcre.so -o $@ $? -lpcre -L. -lutil -+ - $(LIB): $(OBJS) -- $(AR) $(ARFL) $(LIB) $? -- $(RANLIB) $(LIB) -+ gcc -shared -Wl,-soname,libpostfix-util.so.1 -o $(LIB) $(OBJS) -ldl $(SYSLIBS) - - $(LIB_DIR)/$(LIB): $(LIB) - cp $(LIB) $(LIB_DIR) -- $(RANLIB) $(LIB_DIR)/$(LIB) - --update: $(LIB_DIR)/$(LIB) $(HDRS) -+../../libexec/$(PCRESO): $(PCRESO) -+ cp $(PCRESO) ../../libexec -+ -+update: $(LIBS) ../../libexec/$(PCRESO) $(HDRS) - -for i in $(HDRS); \ - do \ - cmp -s $$i $(INC_DIR)/$$i 2>/dev/null || cp $$i $(INC_DIR); \ -@@ -146,7 +152,8 @@ lint: - lint $(SRCS) - - clean: -- rm -f *.o $(LIB) *core $(TESTPROG) junk $(MAKES) *.tmp -+ rm -f *.o $(LIB) $(PCRESO) *core $(TESTPROG) \ -+ junk $(MAKES) *.tmp - rm -rf printfck - - tidy: clean -diff -Naurp postfix-2.5.5/src/util/dict.h postfix-2.5.5.oden/src/util/dict.h ---- postfix-2.5.5/src/util/dict.h 2007-12-03 20:42:26.000000000 +0100 -+++ postfix-2.5.5.oden/src/util/dict.h 2008-12-17 18:17:11.000000000 +0100 -@@ -66,6 +66,7 @@ extern DICT *dict_debug(DICT *); - #define DICT_FLAG_NO_UNAUTH (1<<13) /* disallow unauthenticated data */ - #define DICT_FLAG_FOLD_FIX (1<<14) /* case-fold key with fixed-case map */ - #define DICT_FLAG_FOLD_MUL (1<<15) /* case-fold key with multi-case map */ -+#define DICT_FLAG_UPGRADE (1<<30) /* Upgrade the db */ - #define DICT_FLAG_FOLD_ANY (DICT_FLAG_FOLD_FIX | DICT_FLAG_FOLD_MUL) - - /* IMPORTANT: Update the dict_mask[] table when the above changes */ -@@ -138,6 +139,11 @@ extern const char *dict_eval(const char - extern DICT *dict_open(const char *, int, int); - extern DICT *dict_open3(const char *, const char *, int, int); - extern void dict_open_register(const char *, DICT *(*) (const char *, int, int)); -+#ifndef NO_DYNAMIC_MAPS -+extern void dict_open_dlinfo(const char *path); -+typedef void* (*dict_mkmap_func_t)(const char *); -+dict_mkmap_func_t dict_mkmap_func(const char *dict_type); -+#endif - - #define dict_get(dp, key) ((const char *) (dp)->lookup((dp), (key))) - #define dict_put(dp, key, val) (dp)->update((dp), (key), (val)) -diff -Naurp postfix-2.5.5/src/util/dict_db.c postfix-2.5.5.oden/src/util/dict_db.c ---- postfix-2.5.5/src/util/dict_db.c 2007-01-04 15:06:07.000000000 +0100 -+++ postfix-2.5.5.oden/src/util/dict_db.c 2008-12-17 18:17:11.000000000 +0100 -@@ -664,6 +664,12 @@ static DICT *dict_db_open(const char *cl - msg_fatal("set DB cache size %d: %m", dict_db_cache_size); - if (type == DB_HASH && db->set_h_nelem(db, DICT_DB_NELM) != 0) - msg_fatal("set DB hash element count %d: %m", DICT_DB_NELM); -+ if (dict_flags & DICT_FLAG_UPGRADE) { -+ if (msg_verbose) -+ msg_info("upgrading database %s",db_path); -+ if ((errno = db->upgrade(db,db_path,0)) != 0) -+ msg_fatal("upgrade of database %s: %m",db_path); -+ } - #if (DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR > 0) - if ((errno = db->open(db, 0, db_path, 0, type, db_flags, 0644)) != 0) - msg_fatal("open database %s: %m", db_path); -diff -Naurp postfix-2.5.5/src/util/dict_dbm.c postfix-2.5.5.oden/src/util/dict_dbm.c ---- postfix-2.5.5/src/util/dict_dbm.c 2007-01-04 15:07:36.000000000 +0100 -+++ postfix-2.5.5.oden/src/util/dict_dbm.c 2008-12-17 18:17:11.000000000 +0100 -@@ -407,6 +407,10 @@ DICT *dict_dbm_open(const char *path, - char *dbm_path; - int lock_fd; - -+#ifdef HAVE_GDBM -+ msg_fatal("%s: gdbm maps use locking that is incompatible with postfix. Use a hash map instead.", -+ path); -+#endif - /* - * Note: DICT_FLAG_LOCK is used only by programs that do fine-grained (in - * the time domain) locking while accessing individual database records. -diff -Naurp postfix-2.5.5/src/util/dict_open.c postfix-2.5.5.oden/src/util/dict_open.c ---- postfix-2.5.5/src/util/dict_open.c 2008-01-08 22:05:20.000000000 +0100 -+++ postfix-2.5.5.oden/src/util/dict_open.c 2008-12-17 18:17:11.000000000 +0100 -@@ -44,6 +44,8 @@ - /* DICT *(*open) (const char *, int, int); - /* - /* ARGV *dict_mapnames() -+/* -+/* void (*)() dict_mkmap_func(const char *dict_type) - /* DESCRIPTION - /* This module implements a low-level interface to multiple - /* physical dictionary types. -@@ -159,6 +161,9 @@ - /* - /* dict_mapnames() returns a sorted list with the names of all available - /* dictionary types. -+/* -+/* dict_mkmap_func() returns a pointer to the mkmap setup function -+/* for the given map type, as given in /etc/dynamicmaps.cf - /* DIAGNOSTICS - /* Fatal error: open error, unsupported dictionary type, attempt to - /* update non-writable dictionary. -@@ -183,6 +188,9 @@ - #include <strings.h> - #endif - -+#include <sys/stat.h> -+#include <unistd.h> -+ - /* Utility library. */ - - #include <argv.h> -@@ -207,6 +215,27 @@ - #include <split_at.h> - #include <htable.h> - -+#ifndef NO_DYNAMIC_MAPS -+#include <load_lib.h> -+#include <vstring.h> -+#include <vstream.h> -+#include <vstring_vstream.h> -+#include <mvect.h> -+ -+ /* -+ * Interface for dynamic map loading. -+ */ -+typedef struct { -+ const char *pattern; -+ const char *soname; -+ const char *openfunc; -+ const char *mkmapfunc; -+} DLINFO; -+ -+static DLINFO *dict_dlinfo; -+static DLINFO *dict_open_dlfind(const char *type); -+#endif -+ - /* - * lookup table for available map types. - */ -@@ -221,9 +250,11 @@ static const DICT_OPEN_INFO dict_open_in - #endif - DICT_TYPE_ENVIRON, dict_env_open, - DICT_TYPE_UNIX, dict_unix_open, -+#ifdef NO_DYNAMIC_MAPS - #ifdef SNAPSHOT - DICT_TYPE_TCP, dict_tcp_open, - #endif -+#endif - #ifdef HAS_SDBM - DICT_TYPE_SDBM, dict_sdbm_open, - #endif -@@ -243,9 +274,11 @@ static const DICT_OPEN_INFO dict_open_in - #ifdef HAS_NETINFO - DICT_TYPE_NETINFO, dict_ni_open, - #endif -+#ifdef NO_DYNAMIC_MAPS - #ifdef HAS_PCRE - DICT_TYPE_PCRE, dict_pcre_open, - #endif -+#endif /* NO_DYNAMIC_MAPS */ - #ifdef HAS_POSIX_REGEXP - DICT_TYPE_REGEXP, dict_regexp_open, - #endif -@@ -303,8 +336,31 @@ DICT *dict_open3(const char *dict_type - dict_type, dict_name); - if (dict_open_hash == 0) - dict_open_init(); -- if ((dp = (DICT_OPEN_INFO *) htable_find(dict_open_hash, dict_type)) == 0) -- msg_fatal("unsupported dictionary type: %s", dict_type); -+ if ((dp = (DICT_OPEN_INFO *) htable_find(dict_open_hash, dict_type)) == 0) { -+#ifdef NO_DYNAMIC_MAPS -+ msg_fatal("%s: unsupported dictionary type: %s", myname, dict_type); -+#else -+ struct stat st; -+ LIB_FN fn[2]; -+ DICT *(*open) (const char *, int, int); -+ DLINFO *dl=dict_open_dlfind(dict_type); -+ if (!dl) -+ msg_fatal("%s: unsupported dictionary type: %s: Is the postfix-%s package installed?", myname, dict_type, dict_type); -+ if (stat(dl->soname,&st) < 0) { -+ msg_fatal("%s: unsupported dictionary type: %s (%s not found. Is the postfix-%s package installed?)", -+ myname, dict_type, dl->soname, dict_type); -+ } -+ fn[0].name = dl->openfunc; -+ fn[0].ptr = (void**)&open; -+ fn[1].name = NULL; -+ load_library_symbols(dl->soname, fn, NULL); -+ dict_open_register(dict_type, open); -+ dp = (DICT_OPEN_INFO *) htable_find(dict_open_hash, dict_type); -+#endif -+ } -+ if (msg_verbose>1) { -+ msg_info("%s: calling %s open routine",myname,dict_type); -+ } - if ((dict = dp->open(dict_name, open_flags, dict_flags)) == 0) - msg_fatal("opening %s:%s %m", dict_type, dict_name); - if (msg_verbose) -@@ -312,6 +368,36 @@ DICT *dict_open3(const char *dict_type - return (dict); - } - -+dict_mkmap_func_t dict_mkmap_func(const char *dict_type) -+{ -+ char *myname="dict_mkmap_func"; -+ struct stat st; -+ LIB_FN fn[2]; -+ dict_mkmap_func_t mkmap; -+ DLINFO *dl; -+#ifndef NO_DYNAMIC_MAPS -+ if (!dict_dlinfo) -+ msg_fatal("dlinfo==NULL"); -+ dl=dict_open_dlfind(dict_type); -+ if (!dl) -+ msg_fatal("%s: unsupported dictionary type: %s: Is the postfix-%s package installed?", myname, dict_type, dict_type); -+ if (stat(dl->soname,&st) < 0) { -+ msg_fatal("%s: unsupported dictionary type: %s (%s not found. Is the postfix-%s package installed?)", -+ myname, dict_type, dl->soname, dict_type); -+ } -+ if (!dl->mkmapfunc) -+ msg_fatal("%s: unsupported dictionary type: %s does not allow map creation.", myname, dict_type); -+ -+ fn[0].name = dl->mkmapfunc; -+ fn[0].ptr = (void**)&mkmap; -+ fn[1].name = NULL; -+ load_library_symbols(dl->soname, fn, NULL); -+ return mkmap; -+#else -+ return (void(*)())NULL; -+#endif -+} -+ - /* dict_open_register - register dictionary type */ - - void dict_open_register(const char *type, -@@ -345,6 +431,9 @@ ARGV *dict_mapnames() - HTABLE_INFO **ht; - DICT_OPEN_INFO *dp; - ARGV *mapnames; -+#ifndef NO_DYNAMIC_MAPS -+ DLINFO *dlp; -+#endif - - if (dict_open_hash == 0) - dict_open_init(); -@@ -353,6 +442,13 @@ ARGV *dict_mapnames() - dp = (DICT_OPEN_INFO *) ht[0]->value; - argv_add(mapnames, dp->type, ARGV_END); - } -+#ifndef NO_DYNAMIC_MAPS -+ if (!dict_dlinfo) -+ msg_fatal("dlinfo==NULL"); -+ for (dlp=dict_dlinfo; dlp->pattern; dlp++) { -+ argv_add(mapnames, dlp->pattern, ARGV_END); -+ } -+#endif - qsort((void *) mapnames->argv, mapnames->argc, sizeof(mapnames->argv[0]), - dict_sort_alpha_cpp); - myfree((char *) ht_info); -@@ -360,6 +456,87 @@ ARGV *dict_mapnames() - return mapnames; - } - -+#ifndef NO_DYNAMIC_MAPS -+#define STREQ(x,y) (x == y || (x[0] == y[0] && strcmp(x,y) == 0)) -+ -+void dict_open_dlinfo(const char *path) -+{ -+ char *myname="dict_open_dlinfo"; -+ VSTREAM *conf_fp=vstream_fopen(path,O_RDONLY,0); -+ VSTRING *buf = vstring_alloc(100); -+ char *cp; -+ ARGV *argv; -+ MVECT vector; -+ int nelm=0; -+ int linenum=0; -+ -+ dict_dlinfo=(DLINFO*)mvect_alloc(&vector,sizeof(DLINFO),3,NULL,NULL); -+ -+ if (!conf_fp) { -+ msg_warn("%s: cannot open %s. No dynamic maps will be allowed.", -+ myname, path); -+ } else { -+ while (vstring_get_nonl(buf,conf_fp) != VSTREAM_EOF) { -+ cp = vstring_str(buf); -+ linenum++; -+ if (*cp == '#' || *cp == '\0') -+ continue; -+ argv = argv_split(cp, " \t"); -+ if (argv->argc != 3 && argv->argc != 4) { -+ msg_fatal("%s: Expected \"pattern .so-name open-function [mkmap-function]\" at line %d", -+ myname, linenum); -+ } -+ if (STREQ(argv->argv[0],"*")) { -+ msg_warn("%s: wildcard dynamic map entry no longer supported.", -+ myname); -+ continue; -+ } -+ if (argv->argv[1][0] != '/') { -+ msg_fatal("%s: .so name must begin with a \"/\" at line %d", -+ myname, linenum); -+ } -+ if (nelm >= vector.nelm) { -+ dict_dlinfo=(DLINFO*)mvect_realloc(&vector,vector.nelm+3); -+ } -+ dict_dlinfo[nelm].pattern = mystrdup(argv->argv[0]); -+ dict_dlinfo[nelm].soname = mystrdup(argv->argv[1]); -+ dict_dlinfo[nelm].openfunc = mystrdup(argv->argv[2]); -+ if (argv->argc==4) -+ dict_dlinfo[nelm].mkmapfunc = mystrdup(argv->argv[3]); -+ else -+ dict_dlinfo[nelm].mkmapfunc = NULL; -+ nelm++; -+ argv_free(argv); -+ } -+ } -+ if (nelm >= vector.nelm) { -+ dict_dlinfo=(DLINFO*)mvect_realloc(&vector,vector.nelm+1); -+ } -+ dict_dlinfo[nelm].pattern = NULL; -+ dict_dlinfo[nelm].soname = NULL; -+ dict_dlinfo[nelm].openfunc = NULL; -+ dict_dlinfo[nelm].mkmapfunc = NULL; -+ if (conf_fp) -+ vstream_fclose(conf_fp); -+ vstring_free(buf); -+} -+ -+static DLINFO *dict_open_dlfind(const char *type) -+{ -+ DLINFO *dp; -+ -+ if (!dict_dlinfo) -+ return NULL; -+ -+ for (dp=dict_dlinfo; dp->pattern; dp++) { -+ if (STREQ(dp->pattern,type)) -+ return dp; -+ } -+ return NULL; -+} -+ -+#endif /* !NO_DYNAMIC_MAPS */ -+ - #ifdef TEST - - /* -diff -Naurp postfix-2.5.5/src/util/load_lib.c postfix-2.5.5.oden/src/util/load_lib.c ---- postfix-2.5.5/src/util/load_lib.c 1970-01-01 01:00:00.000000000 +0100 -+++ postfix-2.5.5.oden/src/util/load_lib.c 2008-12-17 18:17:11.000000000 +0100 -@@ -0,0 +1,135 @@ -+/*++ -+/* NAME -+/* load_lib 3 -+/* SUMMARY -+/* library loading wrappers -+/* SYNOPSIS -+/* #include <load_lib.h> -+/* -+/* extern int load_library_symbols(const char *, LIB_FN *, LIB_FN *); -+/* const char *libname; -+/* LIB_FN *libfuncs; -+/* LIB_FN *libdata; -+/* -+/* DESCRIPTION -+/* This module loads functions from libraries, returnine pointers -+/* to the named functions. -+/* -+/* load_library_symbols() loads all of the desired functions, and -+/* returns zero for success, or exits via msg_fatal(). -+/* -+/* SEE ALSO -+/* msg(3) diagnostics interface -+/* DIAGNOSTICS -+/* Problems are reported via the msg(3) diagnostics routines: -+/* library not found, symbols not found, other fatal errors. -+/* LICENSE -+/* .ad -+/* .fi -+/* The Secure Mailer license must be distributed with this software. -+/* AUTHOR(S) -+/* LaMont Jones -+/* Hewlett-Packard Company -+/* 3404 Harmony Road -+/* Fort Collins, CO 80528, USA -+/* -+/* Wietse Venema -+/* IBM T.J. Watson Research -+/* P.O. Box 704 -+/* Yorktown Heights, NY 10598, USA -+/*--*/ -+ -+/* System libraries. */ -+ -+#include "sys_defs.h" -+#include <stdlib.h> -+#include <stddef.h> -+#include <string.h> -+#if defined(HAS_DLOPEN) -+#include <dlfcn.h> -+#elif defined(HAS_SHL_LOAD) -+#include <dl.h> -+#endif -+ -+/* Application-specific. */ -+ -+#include "msg.h" -+#include "load_lib.h" -+ -+extern int load_library_symbols(const char * libname, LIB_FN * libfuncs, LIB_FN * libdata) -+{ -+ char *myname = "load_library_symbols"; -+ LIB_FN *fn; -+ -+#if defined(HAS_DLOPEN) -+ void *handle; -+ char *emsg; -+ -+ handle=dlopen(libname,RTLD_NOW); -+ emsg=dlerror(); -+ if (emsg) { -+ msg_fatal("%s: dlopen failure loading %s: %s", myname, libname, emsg); -+ } -+ -+ if (libfuncs) { -+ for (fn=libfuncs; fn->name; fn++) { -+ *(fn->ptr) = dlsym(handle,fn->name); -+ emsg=dlerror(); -+ if (emsg) { -+ msg_fatal("%s: dlsym failure looking up %s in %s: %s", myname, -+ fn->name, libname, emsg); -+ } -+ if (msg_verbose>1) { -+ msg_info("loaded %s = %lx",fn->name, *((long*)(fn->ptr))); -+ } -+ } -+ } -+ -+ if (libdata) { -+ for (fn=libdata; fn->name; fn++) { -+ *(fn->ptr) = dlsym(handle,fn->name); -+ emsg=dlerror(); -+ if (emsg) { -+ msg_fatal("%s: dlsym failure looking up %s in %s: %s", myname, -+ fn->name, libname, emsg); -+ } -+ if (msg_verbose>1) { -+ msg_info("loaded %s = %lx",fn->name, *((long*)(fn->ptr))); -+ } -+ } -+ } -+#elif defined(HAS_SHL_LOAD) -+ shl_t handle; -+ -+ handle = shl_load(libname,BIND_IMMEDIATE,0); -+ -+ if (libfuncs) { -+ for (fn=libfuncs; fn->name; fn++) { -+ if (shl_findsym(&handle,fn->name,TYPE_PROCEDURE,fn->ptr) != 0) { -+ msg_fatal("%s: shl_findsym failure looking up %s in %s: %m", -+ myname, fn->name, libname); -+ } -+ if (msg_verbose>1) { -+ msg_info("loaded %s = %x",fn->name, *((long*)(fn->ptr))); -+ } -+ } -+ } -+ -+ if (libdata) { -+ for (fn=libdata; fn->name; fn++) { -+ if (shl_findsym(&handle,fn->name,TYPE_DATA,fn->ptr) != 0) { -+ msg_fatal("%s: shl_findsym failure looking up %s in %s: %m", -+ myname, fn->name, libname); -+ } -+ if (msg_verbose>1) { -+ msg_info("loaded %s = %x",fn->name, *((long*)(fn->ptr))); -+ } -+ } -+ } -+ -+#else -+ msg_fatal("%s: need dlopen or shl_load support for dynamic libraries", -+ myname); -+#endif -+ return 0; -+} -diff -Naurp postfix-2.5.5/src/util/load_lib.h postfix-2.5.5.oden/src/util/load_lib.h ---- postfix-2.5.5/src/util/load_lib.h 1970-01-01 01:00:00.000000000 +0100 -+++ postfix-2.5.5.oden/src/util/load_lib.h 2008-12-17 18:17:11.000000000 +0100 -@@ -0,0 +1,41 @@ -+#ifndef _LOAD_LIB_H_INCLUDED_ -+#define _LOAD_LIB_H_INCLUDED_ -+ -+/*++ -+/* NAME -+/* load_lib 3h -+/* SUMMARY -+/* library loading wrappers -+/* SYNOPSIS -+/* #include "load_lib.h" -+/* DESCRIPTION -+/* .nf -+ -+ /* -+ * External interface. -+ */ -+/* NULL name terminates list */ -+typedef struct LIB_FN { -+ const char *name; -+ void **ptr; -+} LIB_FN; -+ -+extern int load_library_symbols(const char *, LIB_FN *, LIB_FN *); -+ -+/* LICENSE -+/* .ad -+/* .fi -+/* The Secure Mailer license must be distributed with this software. -+/* AUTHOR(S) -+/* LaMont Jones -+/* Hewlett-Packard Company -+/* 3404 Harmony Road -+/* Fort Collins, CO 80528, USA -+/* -+/* Wietse Venema -+/* IBM T.J. Watson Research -+/* P.O. Box 704 -+/* Yorktown Heights, NY 10598, USA -+/*--*/ -+ -+#endif diff --git a/testing/postfix/postfix-2.6.1-dynamicmaps.patch b/extra/postfix/postfix-2.6.1-dynamicmaps.patch index 6000caaf..6000caaf 100644 --- a/testing/postfix/postfix-2.6.1-dynamicmaps.patch +++ b/extra/postfix/postfix-2.6.1-dynamicmaps.patch diff --git a/extra/postfix/postfix-mysql.post-install b/extra/postfix/postfix-mysql.post-install index 1e64c6a6..b8d23833 120000..100644 --- a/extra/postfix/postfix-mysql.post-install +++ b/extra/postfix/postfix-mysql.post-install @@ -1 +1,19 @@ -postfix-ldap.post-install
\ No newline at end of file +#!/bin/sh + +# update the dynamicmaps.cf +conf=/etc/postfix/dynamicmaps.cf + +sed -i -e '/\#\# AUTO BEGIN/,/\#\# AUTO END/d' $conf + +( +echo '## AUTO BEGIN ##' +if cd /usr/lib/postfix/; then + for i in *.so; do + m=${i#dict_} + m=${m%.so} + echo -e "$m\t/usr/lib/postfix/$i\tdict_${m}_open" + done +fi + +echo '## AUTO END ##' +) >> $conf diff --git a/extra/postfix/postfix-pcre.post-install b/extra/postfix/postfix-pcre.post-install index 1e64c6a6..b8d23833 120000..100644 --- a/extra/postfix/postfix-pcre.post-install +++ b/extra/postfix/postfix-pcre.post-install @@ -1 +1,19 @@ -postfix-ldap.post-install
\ No newline at end of file +#!/bin/sh + +# update the dynamicmaps.cf +conf=/etc/postfix/dynamicmaps.cf + +sed -i -e '/\#\# AUTO BEGIN/,/\#\# AUTO END/d' $conf + +( +echo '## AUTO BEGIN ##' +if cd /usr/lib/postfix/; then + for i in *.so; do + m=${i#dict_} + m=${m%.so} + echo -e "$m\t/usr/lib/postfix/$i\tdict_${m}_open" + done +fi + +echo '## AUTO END ##' +) >> $conf diff --git a/extra/postfix/postfix-pgsql.post-install b/extra/postfix/postfix-pgsql.post-install index 1e64c6a6..b8d23833 120000..100644 --- a/extra/postfix/postfix-pgsql.post-install +++ b/extra/postfix/postfix-pgsql.post-install @@ -1 +1,19 @@ -postfix-ldap.post-install
\ No newline at end of file +#!/bin/sh + +# update the dynamicmaps.cf +conf=/etc/postfix/dynamicmaps.cf + +sed -i -e '/\#\# AUTO BEGIN/,/\#\# AUTO END/d' $conf + +( +echo '## AUTO BEGIN ##' +if cd /usr/lib/postfix/; then + for i in *.so; do + m=${i#dict_} + m=${m%.so} + echo -e "$m\t/usr/lib/postfix/$i\tdict_${m}_open" + done +fi + +echo '## AUTO END ##' +) >> $conf diff --git a/testing/postfix/APKBUILD b/testing/postfix/APKBUILD deleted file mode 100644 index a0a83f46..00000000 --- a/testing/postfix/APKBUILD +++ /dev/null @@ -1,145 +0,0 @@ -# Maintainer: Natanael Copa <ncopa@alpinelinux.org> -pkgname=postfix -pkgver=2.6.1 -pkgrel=0 -pkgdesc="Secure and fast drop-in replacement for Sendmail (MTA)" -url="http://www.postfix.org/" -license="IPL-1" -depends="db pcre openssl libsasl" -makedepends="db-dev pcre-dev openssl-dev postgresql-dev mysql-dev openldap-dev cyrus-sasl-dev" -install="$pkgname.pre-install $pkgname.post-install" -subpackages="$pkgname-doc $pkgname-ldap $pkgname-mysql $pkgname-pcre - $pkgname-pgsql" -source="ftp://ftp.porcupine.org/mirrors/$pkgname-release/official/$pkgname-$pkgver.tar.gz - $pkgname.initd - $install - postfix-2.6.1-dynamicmaps.patch - dynamicmaps.cf - postfix-ldap.post-install - postfix-mysql.post-install - postfix-pcre.post-install - postfix-pgsql.post-install - " - -# the dynamic maps patch is taken from mandriva -# http://svn.mandriva.com/cgi-bin/viewvc.cgi/packages/cooker/postfix/current/SOURCES - -build () { - cd "$srcdir/$pkgname-$pkgver" - for i in ../*.patch; do - msg "Applying $i..." - patch -p1 < $i || return 1 - done - cp ../dynamicmaps.cf conf/ - - sed -i -e "s|#define HAS_NIS|//#define HAS_NIS|g" \ - -e "/^#define ALIAS_DB_MAP/s|:/etc/aliases|:/etc/postfix/aliases|" \ - src/util/sys_defs.h || return 1 - sed -i -e "s:/usr/local/:/usr/:g" conf/master.cf || return 1 - - # needed for dynamic maps. - local ccargs="-DHAS_DLOPEN -DHAS_SHL_LOAD" - local auxlibs="$LDFLAGS -lpthread -lcrypt" - - ccargs="$ccargs -DDEF_DAEMON_DIR=\\\"/usr/lib/postfix\\\"" - - # pcre - ccargs="$ccargs -DHAS_PCRE" - #auxlibs="$auxlibs -lpcre" - - # ssl - ccargs="$ccargs -DUSE_TLS" - auxlibs="$auxlibs -lssl -lcrypto" - - ## dovecot-sasl - #ccargs="$ccargs -DUSE_SASL_AUTH -DDEF_SERVER_SASL_TYPE=\\\"dovecot\\\"" - - # cyrus sasl - ccargs="$ccargs -DUSE_SASL_AUTH -DUSE_CYRUS_SASL -I/usr/include/sasl" - auxlibs="$auxlibs -lsasl2" - - # postgresql - ccargs="$ccargs -DHAS_PGSQL -I$(pg_config --includedir)" - #auxlibs="$auxlibs -lpq -L$(pg_config --libdir)" - - # mysql - ccargs="$ccargs -DHAS_MYSQL $(mysql_config --include)" - #auxlibs="$auxlibs -lmysqlclient -lm -lz" - - # compile - make DEBUG="" \ - OPT="$CFLAGS" \ - CCARGS="$ccargs" \ - AUXLIBS="$auxlibs" \ - makefiles || return 1 - - make OPT="$CFLAGS" || return 1 - - for i in lib/*.a; do - j=${i#lib/lib} - ln -s ${i#lib/} lib/libpostfix-${j%.a}.so.1 - done - - # install to pkgdir - LD_LIBRARY_PATH=$PWD/lib${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH} make \ - non-interactive-package \ - install_root="$pkgdir" \ - config_directory=/usr/share/doc/$pkgname/defaults \ - readme_directory=/usr/share/doc/$pkgname/readme \ - manpage_directory=/usr/share/man \ - || return 1 - - install -d "$pkgdir"/usr/lib - for i in lib/*.a; do - j=${i#lib/lib} - install $i "$pkgdir"/usr/lib/libpostfix-${j%.a}.so.1 || return 1 - done - - # fix permissions - for i in postdrop postqueue; do - chgrp postdrop "$pkgdir"/usr/sbin/$i - chmod g+s "$pkgdir"/usr/sbin/$i - done - - mkdir -p "$pkgdir"/etc/postfix - mv "$pkgdir"/usr/share/doc/$pkgname/defaults/*.cf \ - "$pkgdir"/usr/share/doc/$pkgname/defaults/aliases \ - "$pkgdir"/usr/share/doc/$pkgname/defaults/canonical \ - "$pkgdir"/usr/share/doc/$pkgname/defaults/generic \ - "$pkgdir"/usr/share/doc/$pkgname/defaults/header_checks \ - "$pkgdir"/usr/share/doc/$pkgname/defaults/relocated \ - "$pkgdir"/usr/share/doc/$pkgname/defaults/transport \ - "$pkgdir"/usr/share/doc/$pkgname/defaults/virtual \ - "$pkgdir"/etc/postfix/ || return 1 - - install -d -o postfix -g postfix "$pkgdir"/var/spool/postfix - install -Dm755 "$srcdir"/$pkgname.initd "$pkgdir"/etc/init.d/$pkgname - install -Dm644 LICENSE "$pkgdir"/usr/share/licenses/${pkgname}/LICENSE -} - -_mv_dict() { - local m=$1 - shift - pkgdesc="$m map support for postfix" - depends="postfix uclibc $@" - install="postfix-${m}.post-install" - mkdir -p "$subpkgdir"/usr/lib/postfix - mv "$pkgdir"/usr/lib/postfix/dict_${m}.so \ - "$subpkgdir"/usr/lib/postfix/ -} - -ldap() { _mv_dict ldap libldap; } -mysql() { _mv_dict mysql libmysqlclient;} -pcre() { _mv_dict pcre pcre; } -pgsql() { _mv_dict pgsql libpq; } - -md5sums="737bbc245da9c72c174893397f70ae86 postfix-2.6.1.tar.gz -8416354d402f3be288fa98b60af86240 postfix.initd -2bfc3864183694e5484ac073bb0cb7ef postfix.pre-install -0064d45c2c8a46c374b55c4abc46cfb2 postfix.post-install -b8812dbf2d076c79cf948ee017e81b39 postfix-2.6.1-dynamicmaps.patch -0efff9b4bb493ad2ff0b9915cb244d14 dynamicmaps.cf -2ebe51a882eb9d6d7866583eb6af3969 postfix-ldap.post-install -2ebe51a882eb9d6d7866583eb6af3969 postfix-mysql.post-install -2ebe51a882eb9d6d7866583eb6af3969 postfix-pcre.post-install -2ebe51a882eb9d6d7866583eb6af3969 postfix-pgsql.post-install" diff --git a/testing/postfix/dynamicmaps.cf b/testing/postfix/dynamicmaps.cf deleted file mode 100644 index 49d25480..00000000 --- a/testing/postfix/dynamicmaps.cf +++ /dev/null @@ -1,15 +0,0 @@ -# Postfix dynamic maps configuration file. -# -# The first match found is the one that is used. Wildcards are not -# supported. -# -#type location of .so file name of open function -#==== ============================= ===================== -#ldap /usr/lib/postfix/dict_ldap.so dict_ldap_open -#mysql /usr/lib/postfix/dict_mysql.so dict_mysql_open -#pcre /usr/lib/postfix/dict_pcre.so dict_pcre_open -#pgsq /usr/lib/postfix/dict_pgsql.so dict_pgsql_open - -# apk tools will manage the lines below -## AUTO BEGIN ## -## AUTO END ## diff --git a/testing/postfix/postfix-ldap.post-install b/testing/postfix/postfix-ldap.post-install deleted file mode 100644 index b8d23833..00000000 --- a/testing/postfix/postfix-ldap.post-install +++ /dev/null @@ -1,19 +0,0 @@ -#!/bin/sh - -# update the dynamicmaps.cf -conf=/etc/postfix/dynamicmaps.cf - -sed -i -e '/\#\# AUTO BEGIN/,/\#\# AUTO END/d' $conf - -( -echo '## AUTO BEGIN ##' -if cd /usr/lib/postfix/; then - for i in *.so; do - m=${i#dict_} - m=${m%.so} - echo -e "$m\t/usr/lib/postfix/$i\tdict_${m}_open" - done -fi - -echo '## AUTO END ##' -) >> $conf diff --git a/testing/postfix/postfix-mysql.post-install b/testing/postfix/postfix-mysql.post-install deleted file mode 100644 index b8d23833..00000000 --- a/testing/postfix/postfix-mysql.post-install +++ /dev/null @@ -1,19 +0,0 @@ -#!/bin/sh - -# update the dynamicmaps.cf -conf=/etc/postfix/dynamicmaps.cf - -sed -i -e '/\#\# AUTO BEGIN/,/\#\# AUTO END/d' $conf - -( -echo '## AUTO BEGIN ##' -if cd /usr/lib/postfix/; then - for i in *.so; do - m=${i#dict_} - m=${m%.so} - echo -e "$m\t/usr/lib/postfix/$i\tdict_${m}_open" - done -fi - -echo '## AUTO END ##' -) >> $conf diff --git a/testing/postfix/postfix-pcre.post-install b/testing/postfix/postfix-pcre.post-install deleted file mode 100644 index b8d23833..00000000 --- a/testing/postfix/postfix-pcre.post-install +++ /dev/null @@ -1,19 +0,0 @@ -#!/bin/sh - -# update the dynamicmaps.cf -conf=/etc/postfix/dynamicmaps.cf - -sed -i -e '/\#\# AUTO BEGIN/,/\#\# AUTO END/d' $conf - -( -echo '## AUTO BEGIN ##' -if cd /usr/lib/postfix/; then - for i in *.so; do - m=${i#dict_} - m=${m%.so} - echo -e "$m\t/usr/lib/postfix/$i\tdict_${m}_open" - done -fi - -echo '## AUTO END ##' -) >> $conf diff --git a/testing/postfix/postfix-pgsql.post-install b/testing/postfix/postfix-pgsql.post-install deleted file mode 100644 index b8d23833..00000000 --- a/testing/postfix/postfix-pgsql.post-install +++ /dev/null @@ -1,19 +0,0 @@ -#!/bin/sh - -# update the dynamicmaps.cf -conf=/etc/postfix/dynamicmaps.cf - -sed -i -e '/\#\# AUTO BEGIN/,/\#\# AUTO END/d' $conf - -( -echo '## AUTO BEGIN ##' -if cd /usr/lib/postfix/; then - for i in *.so; do - m=${i#dict_} - m=${m%.so} - echo -e "$m\t/usr/lib/postfix/$i\tdict_${m}_open" - done -fi - -echo '## AUTO END ##' -) >> $conf diff --git a/testing/postfix/postfix.initd b/testing/postfix/postfix.initd deleted file mode 100644 index b2396b3a..00000000 --- a/testing/postfix/postfix.initd +++ /dev/null @@ -1,48 +0,0 @@ -#!/sbin/runscript -# Copyright 1999-2004 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Header: /var/cvsroot/gentoo-x86/mail-mta/postfix/files/postfix.rc6.2.5,v 1.3 2008/08/18 14:18:40 falco Exp $ - -# If you plan to simultaneously use several Postfix instances, don't forget -# to specify your alternate_config_directories variable in your main main.cf file. -# Then make a symlink from /etc/init.d/postfix to /etc/init.d/postfix.alt, -# prepare your new /etc/postfix.alt environment, and at least change these working paths: -# queue_directory = /var/spool/postfix.alt -# data_directory = /var/lib/postfix.alt - -CONF_DIR="/etc/postfix" -CONF_OPT="${SVCNAME##*.}" -if [ -n ${CONF_OPT} -a ${SVCNAME} != "postfix" ]; then - CONF_DIR="${CONF_DIR}.${CONF_OPT}" -fi - -opts="${opts} reload" - -depend() { - use logger dns ypbind amavisd mysql postgresql antivirus postfix_greylist net saslauthd - if [ "${SVCNAME}" = "postfix" ]; then - provide mta - fi -} - -start() { - ebegin "Starting postfix (${CONF_DIR})" - if [ ! -d ${CONF_DIR} ]; then - eend 1 "${CONF_DIR} does not exist" - return 1 - fi - /usr/sbin/postfix -c ${CONF_DIR} start >/dev/null 2>&1 - eend $? -} - -stop() { - ebegin "Stopping postfix (${CONF_DIR})" - /usr/sbin/postfix -c ${CONF_DIR} stop >/dev/null 2>&1 - eend $? -} - -reload() { - ebegin "Reloading postfix (${CONF_DIR})" - /usr/sbin/postfix -c ${CONF_DIR} reload >/dev/null 2>&1 - eend $? -} diff --git a/testing/postfix/postfix.post-install b/testing/postfix/postfix.post-install deleted file mode 100644 index 98e01db0..00000000 --- a/testing/postfix/postfix.post-install +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/sh - -chown postfix /var/spool/postfix/* /var/lib/postfix -chgrp postdrop /var/spool/postfix/maildrop /var/spool/postfix/public - -exit 0 diff --git a/testing/postfix/postfix.pre-install b/testing/postfix/postfix.pre-install deleted file mode 100644 index 22414ef6..00000000 --- a/testing/postfix/postfix.pre-install +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/sh - -addgroup postfix 2>/dev/null -addgroup postdrop 2>/dev/null -adduser postfix -h /var/spool/postfix -G postfix,mail 2>/dev/null - -exit 0 |