diff options
Diffstat (limited to 'net-mail/cyrus-imapd')
13 files changed, 13 insertions, 1005 deletions
diff --git a/net-mail/cyrus-imapd/ChangeLog b/net-mail/cyrus-imapd/ChangeLog index 347cd6f7bcee..975127985e89 100644 --- a/net-mail/cyrus-imapd/ChangeLog +++ b/net-mail/cyrus-imapd/ChangeLog @@ -1,6 +1,18 @@ # ChangeLog for net-mail/cyrus-imapd # Copyright 1999-2011 Gentoo Foundation; Distributed under the GPL v2 -# $Header: /var/cvsroot/gentoo-x86/net-mail/cyrus-imapd/ChangeLog,v 1.172 2011/06/21 06:21:58 eras Exp $ +# $Header: /var/cvsroot/gentoo-x86/net-mail/cyrus-imapd/ChangeLog,v 1.173 2011/06/22 10:50:31 eras Exp $ + + 22 Jun 2011; Eray Aslan <eras@gentoo.org> + -files/cyrus-imapd-2.2-libwrap.patch, + -files/cyrus-imapd-2.3.14-add-db47-support.patch, + -files/cyrus-imapd-2.3.14-bug283596-2.patch, + -files/cyrus-imapd-2.3.14-fix-db-rpath.patch, + -files/kolab/2.3.14/Annotations2.patch, + -files/kolab/2.3.14/Folder-names.patch, -files/kolab/2.3.14/Groups2.patch, + -files/kolab/2.3.14/UID.patch, -files/cyrus-imapd-2.3.16+db-5.0.patch, + -files/cyrus-imapd-strip.patch, -files/kolab/2.3.14/Logging.patch, + -files/kolab/2.3.14/timsieved_starttls-sendcaps.patch: + Clean up FILESDIR 21 Jun 2011; Eray Aslan <eras@gentoo.org> metadata.xml: Maintainer changed to net-mail with dertobi123's permission diff --git a/net-mail/cyrus-imapd/files/cyrus-imapd-2.2-libwrap.patch b/net-mail/cyrus-imapd/files/cyrus-imapd-2.2-libwrap.patch deleted file mode 100644 index 6157c879ae88..000000000000 --- a/net-mail/cyrus-imapd/files/cyrus-imapd-2.2-libwrap.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- master/Makefile.in.orig 2004-10-17 19:48:01.923901016 -0700 -+++ master/Makefile.in 2004-10-17 19:48:33.639079576 -0700 -@@ -59,7 +59,7 @@ - - CFLAGS = @CFLAGS@ - LDFLAGS = @LDFLAGS@ @COM_ERR_LDFLAGS@ --LIBS = ../lib/libcyrus_min.a @LIB_UCDSNMP@ @LIBS@ @COM_ERR_LIBS@ -+LIBS = ../lib/libcyrus_min.a @LIB_UCDSNMP@ @LIBS@ @COM_ERR_LIBS@ @LIB_WRAP@ - - SHELL = /bin/sh - MAKEDEPEND = @MAKEDEPEND@ diff --git a/net-mail/cyrus-imapd/files/cyrus-imapd-2.3.14-add-db47-support.patch b/net-mail/cyrus-imapd/files/cyrus-imapd-2.3.14-add-db47-support.patch deleted file mode 100644 index ea31cda149f4..000000000000 --- a/net-mail/cyrus-imapd/files/cyrus-imapd-2.3.14-add-db47-support.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -Naur cmulocal.orig/berkdb.m4 cmulocal/berkdb.m4 ---- cmulocal.orig/berkdb.m4 2007-08-15 19:18:01.000000000 +0200 -+++ cmulocal/berkdb.m4 2009-07-07 19:34:55.000000000 +0200 -@@ -213,7 +213,7 @@ - fi - - saved_LIBS=$LIBS -- for dbname in ${with_bdb} db-4.6 db4.6 db46 db-4.5 db4.5 db45 db-4.4 db4.4 db44 db-4.3 db4.3 db43 db-4.2 db4.2 db42 db-4.1 db4.1 db41 db-4.0 db4.0 db-4 db40 db4 db-3.3 db3.3 db33 db-3.2 db3.2 db32 db-3.1 db3.1 db31 db-3 db30 db3 db -+ for dbname in ${with_bdb} db-4.7 db4.7 db-4.6 db4.6 db46 db-4.5 db4.5 db45 db-4.4 db4.4 db44 db-4.3 db4.3 db43 db-4.2 db4.2 db42 db-4.1 db4.1 db41 db-4.0 db4.0 db-4 db40 db4 db-3.3 db3.3 db33 db-3.2 db3.2 db32 db-3.1 db3.1 db31 db-3 db30 db3 db - do - LIBS="$saved_LIBS -l$dbname" - AC_TRY_LINK([#include <stdio.h> diff --git a/net-mail/cyrus-imapd/files/cyrus-imapd-2.3.14-bug283596-2.patch b/net-mail/cyrus-imapd/files/cyrus-imapd-2.3.14-bug283596-2.patch deleted file mode 100644 index a223fe41dace..000000000000 --- a/net-mail/cyrus-imapd/files/cyrus-imapd-2.3.14-bug283596-2.patch +++ /dev/null @@ -1,80 +0,0 @@ ---- src/sieve/script.c 2008/03/24 20:08:46 1.67 -+++ src/sieve/script.c 2009/09/02 13:56:18 1.68 -@@ -40,7 +40,7 @@ - * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING - * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * -- * $Id: script.c,v 1.67 2008/03/24 20:08:46 murch Exp $ -+ * $Id: script.c,v 1.68 2009/09/02 13:56:18 brong Exp $ - */ - - #ifdef HAVE_CONFIG_H -@@ -688,7 +688,7 @@ static int do_sieve_error(int ret, - ret |= keep_ret; - if (keep_ret == SIEVE_OK) - snprintf(actions_string+strlen(actions_string), -- sizeof(actions_string)-strlen(actions_string), -+ ACTIONS_STRING_LEN-strlen(actions_string), - "Kept\n"); - else { - implicit_keep = 0; /* don't try an implicit keep again */ -@@ -742,7 +742,7 @@ static int do_action_list(sieve_interp_t - - if (ret == SIEVE_OK) - snprintf(actions_string+strlen(actions_string), -- sizeof(actions_string)-strlen(actions_string), -+ ACTIONS_STRING_LEN-strlen(actions_string), - "Rejected with: %s\n", a->u.rej.msg); - - break; -@@ -757,7 +757,7 @@ static int do_action_list(sieve_interp_t - - if (ret == SIEVE_OK) - snprintf(actions_string+strlen(actions_string), -- sizeof(actions_string)-strlen(actions_string), -+ ACTIONS_STRING_LEN-strlen(actions_string), - "Filed into: %s\n",a->u.fil.mailbox); - break; - case ACTION_KEEP: -@@ -770,7 +770,7 @@ static int do_action_list(sieve_interp_t - &errmsg); - if (ret == SIEVE_OK) - snprintf(actions_string+strlen(actions_string), -- sizeof(actions_string)-strlen(actions_string), -+ ACTIONS_STRING_LEN-strlen(actions_string), - "Kept\n"); - break; - case ACTION_REDIRECT: -@@ -783,7 +783,7 @@ static int do_action_list(sieve_interp_t - &errmsg); - if (ret == SIEVE_OK) - snprintf(actions_string+strlen(actions_string), -- sizeof(actions_string)-strlen(actions_string), -+ ACTIONS_STRING_LEN-strlen(actions_string), - "Redirected to %s\n", a->u.red.addr); - break; - case ACTION_DISCARD: -@@ -794,7 +794,7 @@ static int do_action_list(sieve_interp_t - &errmsg); - if (ret == SIEVE_OK) - snprintf(actions_string+strlen(actions_string), -- sizeof(actions_string)-strlen(actions_string), -+ ACTIONS_STRING_LEN-strlen(actions_string), - "Discarded\n"); - break; - -@@ -820,12 +820,12 @@ static int do_action_list(sieve_interp_t - - if (ret == SIEVE_OK) - snprintf(actions_string+strlen(actions_string), -- sizeof(actions_string)-strlen(actions_string), -+ ACTIONS_STRING_LEN-strlen(actions_string), - "Sent vacation reply\n"); - - } else if (ret == SIEVE_DONE) { - snprintf(actions_string+strlen(actions_string), -- sizeof(actions_string)-strlen(actions_string), -+ ACTIONS_STRING_LEN-strlen(actions_string), - "Vacation reply suppressed\n"); - - ret = SIEVE_OK; diff --git a/net-mail/cyrus-imapd/files/cyrus-imapd-2.3.14-fix-db-rpath.patch b/net-mail/cyrus-imapd/files/cyrus-imapd-2.3.14-fix-db-rpath.patch deleted file mode 100644 index 9b74a8db2516..000000000000 --- a/net-mail/cyrus-imapd/files/cyrus-imapd-2.3.14-fix-db-rpath.patch +++ /dev/null @@ -1,40 +0,0 @@ ---- cyrus-imapd-2.3.14.old/cmulocal/cyrus.m4 2003-10-08 22:35:24.000000000 +0200 -+++ cyrus-imapd-2.3.14/cmulocal/cyrus.m4 2009-09-18 04:32:41.000000000 +0200 -@@ -11,35 +11,12 @@ - dnl (so the runpath for shared libraries is set). - AC_DEFUN([CMU_ADD_LIBPATH], [ - # this is CMU ADD LIBPATH -- if test "$andrew_runpath_switch" = "none" ; then -- LDFLAGS="-L$1 ${LDFLAGS}" -- else -- LDFLAGS="-L$1 $andrew_runpath_switch$1 ${LDFLAGS}" -- fi -+ LDFLAGS="-L$1 ${LDFLAGS}" - ]) - - dnl add -L(1st arg), and possibly (runpath switch)(1st arg), to (2nd arg) - dnl (so the runpath for shared libraries is set). - AC_DEFUN([CMU_ADD_LIBPATH_TO], [ - # this is CMU ADD LIBPATH TO -- if test "$andrew_runpath_switch" = "none" ; then -- $2="-L$1 ${$2}" -- else -- $2="-L$1 ${$2} $andrew_runpath_switch$1" -- fi -+ $2="-L$1 ${$2}" - ]) -- --dnl runpath initialization --AC_DEFUN([CMU_GUESS_RUNPATH_SWITCH], [ -- # CMU GUESS RUNPATH SWITCH -- AC_CACHE_CHECK(for runpath switch, andrew_runpath_switch, [ -- # first, try -R -- SAVE_LDFLAGS="${LDFLAGS}" -- LDFLAGS="-R /usr/lib" -- AC_TRY_LINK([],[],[andrew_runpath_switch="-R"], [ -- LDFLAGS="-Wl,-rpath,/usr/lib" -- AC_TRY_LINK([],[],[andrew_runpath_switch="-Wl,-rpath,"], -- [andrew_runpath_switch="none"]) -- ]) -- LDFLAGS="${SAVE_LDFLAGS}" -- ])]) diff --git a/net-mail/cyrus-imapd/files/cyrus-imapd-2.3.16+db-5.0.patch b/net-mail/cyrus-imapd/files/cyrus-imapd-2.3.16+db-5.0.patch deleted file mode 100644 index 319abf1f6bb7..000000000000 --- a/net-mail/cyrus-imapd/files/cyrus-imapd-2.3.16+db-5.0.patch +++ /dev/null @@ -1,49 +0,0 @@ -Index: cyrus-imapd-2.3.16/lib/cyrusdb_berkeley.c -=================================================================== ---- cyrus-imapd-2.3.16.orig/lib/cyrusdb_berkeley.c -+++ cyrus-imapd-2.3.16/lib/cyrusdb_berkeley.c -@@ -108,7 +108,7 @@ static void db_panic(DB_ENV *dbenv __att - exit(EC_TEMPFAIL); - } - --#if (DB_VERSION_MAJOR == 4) && (DB_VERSION_MINOR >= 3) -+#if ((DB_VERSION_MAJOR == 4) && (DB_VERSION_MINOR >= 3)) || (DB_VERSION_MAJOR >= 5) - static void db_err(const DB_ENV *dbenv __attribute__((unused)), - const char *db_prfx, const char *buffer) - #else -@@ -164,7 +164,7 @@ static int init(const char *dbdir, int m - #endif - } - --#if (DB_VERSION_MAJOR == 4) && (DB_VERSION_MINOR >= 3) -+#if ((DB_VERSION_MAJOR == 4) && (DB_VERSION_MINOR >= 3)) || (DB_VERSION_MAJOR >= 5) - dbenv->set_msgcall(dbenv, db_msg); - #endif - dbenv->set_errcall(dbenv, db_err); -@@ -282,7 +282,7 @@ static int mysync(void) - - assert(dbinit); - --#if !(DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR >= 1) -+#if !((DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR >= 1) || DB_VERSION_MAJOR >= 5) - do { - #endif - #if (DB_VERSION_MAJOR > 3) || ((DB_VERSION_MAJOR == 3) && (DB_VERSION_MINOR > 0)) -@@ -290,7 +290,7 @@ static int mysync(void) - #else - r = txn_checkpoint(dbenv, 0, 0); - #endif --#if !(DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR >= 1) -+#if !((DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR >= 1) || DB_VERSION_MAJOR >= 5) - } while (r == DB_INCOMPLETE); /* Never returned by BDB 4.1 */ - #endif - if (r) { -@@ -413,7 +413,7 @@ static int myopen(const char *fname, DBT - /* xxx set comparator! */ - if (flags & CYRUSDB_MBOXSORT) db->set_bt_compare(db, mbox_compar); - --#if DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR >= 1 -+#if (DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR >= 1) || (DB_VERSION_MAJOR >= 5) - r = (db->open)(db, NULL, fname, NULL, type, dbflags | DB_AUTO_COMMIT, 0664); - #else - r = (db->open)(db, fname, NULL, type, dbflags, 0664); diff --git a/net-mail/cyrus-imapd/files/cyrus-imapd-strip.patch b/net-mail/cyrus-imapd/files/cyrus-imapd-strip.patch deleted file mode 100644 index fa82a4b18d8d..000000000000 --- a/net-mail/cyrus-imapd/files/cyrus-imapd-strip.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- imtest/Makefile.in.orig 2007-09-07 21:45:46.000000000 +0200 -+++ imtest/Makefile.in 2007-09-07 21:45:52.000000000 +0200 -@@ -72,7 +72,7 @@ - all: imtest - - install: -- $(INSTALL) -s -m 755 imtest $(DESTDIR)$(exec_prefix)/bin -+ $(INSTALL) -m 755 imtest $(DESTDIR)$(exec_prefix)/bin - ln -f $(DESTDIR)$(exec_prefix)/bin/imtest $(DESTDIR)$(exec_prefix)/bin/pop3test - ln -f $(DESTDIR)$(exec_prefix)/bin/imtest $(DESTDIR)$(exec_prefix)/bin/nntptest - ln -f $(DESTDIR)$(exec_prefix)/bin/imtest $(DESTDIR)$(exec_prefix)/bin/lmtptest diff --git a/net-mail/cyrus-imapd/files/kolab/2.3.14/Annotations2.patch b/net-mail/cyrus-imapd/files/kolab/2.3.14/Annotations2.patch deleted file mode 100644 index 87fa920fc08f..000000000000 --- a/net-mail/cyrus-imapd/files/kolab/2.3.14/Annotations2.patch +++ /dev/null @@ -1,356 +0,0 @@ -Provides a new version of annotation support for the cyrus imapd server [Version: 2.3.9] - -diff -r 321cda1d6136 imap/annotate.c ---- a/imap/annotate.c Tue Apr 22 10:44:56 2008 +0200 -+++ b/imap/annotate.c Tue Apr 22 10:47:04 2008 +0200 -@@ -90,6 +90,8 @@ int (*proxy_fetch_func)(const char *serv - struct strlist *attribute_pat) = NULL; - int (*proxy_store_func)(const char *server, const char *mbox_pat, - struct entryattlist *entryatts) = NULL; -+ -+void init_annotation_definitions(); - - /* String List Management */ - /* -@@ -237,6 +239,8 @@ void annotatemore_init(int myflags, - if (store_func) { - proxy_store_func = store_func; - } -+ -+ init_annotation_definitions(); - } - - void annotatemore_open(char *fname) -@@ -1832,6 +1836,224 @@ const struct annotate_st_entry mailbox_r - { NULL, 0, ANNOTATION_PROXY_T_INVALID, 0, 0, NULL, NULL } - }; - -+struct annotate_st_entry_list *server_entries_list = NULL; -+struct annotate_st_entry_list *mailbox_rw_entries_list = NULL; -+ -+enum { -+ ANNOTATION_SCOPE_SERVER = 1, -+ ANNOTATION_SCOPE_MAILBOX = 2 -+}; -+ -+const struct annotate_attrib annotation_scope_names[] = -+{ -+ { "server", ANNOTATION_SCOPE_SERVER }, -+ { "mailbox", ANNOTATION_SCOPE_MAILBOX }, -+ { NULL, 0 } -+}; -+ -+const struct annotate_attrib annotation_proxy_type_names[] = -+{ -+ { "proxy", PROXY_ONLY }, -+ { "backend", BACKEND_ONLY }, -+ { "proxy_and_backend", PROXY_AND_BACKEND }, -+ { NULL, 0 } -+}; -+ -+const struct annotate_attrib attribute_type_names[] = -+{ -+ { "content-type", ATTRIB_TYPE_CONTENTTYPE }, -+ { "string", ATTRIB_TYPE_STRING }, -+ { "boolean", ATTRIB_TYPE_BOOLEAN }, -+ { "uint", ATTRIB_TYPE_UINT }, -+ { "int", ATTRIB_TYPE_INT }, -+ { NULL, 0 } -+}; -+ -+#define ANNOT_DEF_MAXLINELEN 1024 -+ -+int table_lookup(const struct annotate_attrib *table, -+ char* name, -+ size_t namelen, -+ char* errmsg) -+/* search in table for the value given by name and namelen (name is null-terminated, -+ but possibly more than just the key). errmsg is used to hint the user where we failed */ -+{ -+ char errbuf[ANNOT_DEF_MAXLINELEN*2]; -+ int entry; -+ -+ for (entry = 0; table[entry].name && -+ (strncasecmp(table[entry].name, name, namelen) -+ || table[entry].name[namelen] != '\0'); entry++); -+ -+ if (! table[entry].name) { -+ sprintf(errbuf, "invalid %s at '%s'", errmsg, name); -+ fatal(errbuf, EC_CONFIG); -+ } -+ return table[entry].entry; -+} -+ -+char *consume_comma(char* p) -+ /* advance beyond the next ',', skipping whitespace, fail if next non-space is no comma */ -+{ -+ char errbuf[ANNOT_DEF_MAXLINELEN*2]; -+ -+ for (; *p && isspace(*p); p++); -+ if (*p != ',') { -+ sprintf(errbuf, "',' expected, '%s' found parsing annotation definition", -+ p); -+ fatal(errbuf, EC_CONFIG); -+ } -+ p++; -+ for (; *p && isspace(*p); p++); -+ -+ return p; -+} -+ -+int parse_table_lookup_bitmask(const struct annotate_attrib *table, -+ char** s, -+ char* errmsg) -+ /* parses strings of the form value1 [ value2 [ ... ]] -+ value1 is mapped via table to ints and the result ored -+ whitespace is allowed between value names and punctuation -+ the field must end in '\0' or ',' -+ s is advanced to '\0' or ',' -+ on error errmsg is used to identify item to be parsed -+ */ -+{ -+ char errbuf[ANNOT_DEF_MAXLINELEN*2]; -+ int result = 0; -+ char *p, *p2; -+ -+ p = *s; -+ do { -+ p2 = p; -+ for (; *p && (isalnum(*p) || *p=='.' || *p=='-' || *p=='_' || *p=='/');p++); -+ result |= table_lookup(table, p2, p-p2, errmsg); -+ for (; *p && isspace(*p); p++); -+ } while (*p && *p != ','); -+ -+ *s = p; -+ return result; -+} -+ -+void init_annotation_definitions() -+{ -+ char *p, *p2, *tmp; -+ const char *filename; -+ char aline[ANNOT_DEF_MAXLINELEN]; -+ char errbuf[ANNOT_DEF_MAXLINELEN*2]; -+ struct annotate_st_entry_list *se, *me; -+ struct annotate_st_entry *ae; -+ int i; -+ FILE* f; -+ -+ /* NOTE: we assume # static entries > 0 */ -+ server_entries_list = xmalloc(sizeof(struct annotate_st_entry_list)); -+ mailbox_rw_entries_list = xmalloc(sizeof(struct annotate_st_entry_list)); -+ se = server_entries_list; -+ me = mailbox_rw_entries_list; -+ /* copy static entries into list */ -+ for (i = 0; server_entries[i].name;i++) { -+ se->entry = &server_entries[i]; -+ if (server_entries[i+1].name) { -+ se->next = xmalloc(sizeof(struct annotate_st_entry_list)); -+ se = se->next; -+ } -+ } -+ /* copy static entries into list */ -+ for (i = 0; mailbox_rw_entries[i].name;i++) { -+ me->entry = &mailbox_rw_entries[i]; -+ if (mailbox_rw_entries[i+1].name) { -+ me->next = xmalloc(sizeof(struct annotate_st_entry_list)); -+ me = me->next; -+ } -+ } -+ -+ /* parse config file */ -+ filename = config_getstring(IMAPOPT_ANNOTATION_DEFINITIONS); -+ -+ if (! filename) { -+ se->next = NULL; -+ me->next = NULL; -+ return; -+ } -+ -+ f = fopen(filename,"r"); -+ if (! f) { -+ sprintf(errbuf, "could not open annotation definiton %s", filename); -+ fatal(errbuf, EC_CONFIG); -+ } -+ -+ while (fgets(aline, sizeof(aline), f)) { -+ // remove leading space, skip blank lines and comments -+ for (p = aline; *p && isspace(*p); p++); -+ if (!*p || *p == '#') continue; -+ -+ // note, we only do the most basic validity checking and may -+ // be more restrictive than neccessary -+ -+ ae = xmalloc(sizeof(struct annotate_st_entry)); -+ -+ p2 = p; -+ for (; *p && (isalnum(*p) || *p=='.' || *p=='-' || *p=='_' || *p=='/');p++); -+ // TV-TODO: should test for empty -+ ae->name = xstrndup(p2, p-p2); -+ -+ p = consume_comma(p); -+ -+ p2 = p; -+ for (; *p && (isalnum(*p) || *p=='.' || *p=='-' || *p=='_' || *p=='/');p++); -+ -+ if (table_lookup(annotation_scope_names, p2, p-p2, -+ "annotation scope")==ANNOTATION_SCOPE_SERVER) { -+ se->next = xmalloc(sizeof(struct annotate_st_entry_list)); -+ se = se->next; -+ se->entry = ae; -+ } -+ else { -+ me->next = xmalloc(sizeof(struct annotate_st_entry_list)); -+ me = me->next; -+ me->entry = ae; -+ } -+ -+ p = consume_comma(p); -+ p2 = p; -+ for (; *p && (isalnum(*p) || *p=='.' || *p=='-' || *p=='_' || *p=='/');p++); -+ ae->type = table_lookup(attribute_type_names, p2, p-p2, -+ "attribute type"); -+ -+ p = consume_comma(p); -+ ae->proxytype = parse_table_lookup_bitmask(annotation_proxy_type_names, -+ &p, -+ "annotation proxy type"); -+ -+ p = consume_comma(p); -+ ae->attribs = parse_table_lookup_bitmask(annotation_attributes, -+ &p, -+ "annotation attributes"); -+ -+ p = consume_comma(p); -+ p2 = p; -+ for (; *p && (isalnum(*p) || *p=='.' || *p=='-' || *p=='_' || *p=='/');p++); -+ tmp = xstrndup(p2, p-p2); -+ ae->acl = cyrus_acl_strtomask(tmp); -+ free(tmp); -+ -+ for (; *p && isspace(*p); p++); -+ if (*p) { -+ sprintf(errbuf, "junk at end of line: '%s'", p); -+ fatal(errbuf, EC_CONFIG); -+ } -+ -+ ae->set = annotation_set_todb; -+ ae->rock = NULL; -+ } -+ -+ fclose(f); -+ se->next = NULL; -+ me->next = NULL; -+} -+ - int annotatemore_store(char *mailbox, - struct entryattlist *l, - struct namespace *namespace, -@@ -1843,7 +2065,7 @@ int annotatemore_store(char *mailbox, - struct entryattlist *e = l; - struct attvaluelist *av; - struct storedata sdata; -- const struct annotate_st_entry *entries; -+ const struct annotate_st_entry_list *entries, *currententry; - time_t now = time(0); - - memset(&sdata, 0, sizeof(struct storedata)); -@@ -1854,45 +2076,45 @@ int annotatemore_store(char *mailbox, - - if (!mailbox[0]) { - /* server annotations */ -- entries = server_entries; -+ entries = server_entries_list; - } - else { - /* mailbox annotation(s) */ -- entries = mailbox_rw_entries; -+ entries = mailbox_rw_entries_list; - } - - /* Build a list of callbacks for storing the annotations */ - while (e) { -- int entrycount, attribs; -+ int attribs; - struct annotate_st_entry_list *nentry = NULL; - - /* See if we support this entry */ -- for (entrycount = 0; -- entries[entrycount].name; -- entrycount++) { -- if (!strcmp(e->entry, entries[entrycount].name)) { -+ for (currententry = entries; -+ currententry; -+ currententry = currententry->next) { -+ if (!strcmp(e->entry, currententry->entry->name)) { - break; - } - } -- if (!entries[entrycount].name) { -+ if (!currententry) { - /* unknown annotation */ - return IMAP_PERMISSION_DENIED; - } - - /* Add this entry to our list only if it - applies to our particular server type */ -- if ((entries[entrycount].proxytype != PROXY_ONLY) -+ if ((currententry->entry->proxytype != PROXY_ONLY) - || proxy_store_func) { - nentry = xzmalloc(sizeof(struct annotate_st_entry_list)); - nentry->next = sdata.entry_list; -- nentry->entry = &(entries[entrycount]); -+ nentry->entry = currententry->entry; - nentry->shared.modifiedsince = now; - nentry->priv.modifiedsince = now; - sdata.entry_list = nentry; - } - - /* See if we are allowed to set the given attributes. */ -- attribs = entries[entrycount].attribs; -+ attribs = currententry->entry->attribs; - av = e->attvalues; - while (av) { - const char *value; -@@ -1902,7 +2124,7 @@ int annotatemore_store(char *mailbox, - goto cleanup; - } - value = annotate_canon_value(av->value, -- entries[entrycount].type); -+ currententry->entry->type); - if (!value) { - r = IMAP_ANNOTATION_BADVALUE; - goto cleanup; -@@ -1928,7 +2150,7 @@ int annotatemore_store(char *mailbox, - goto cleanup; - } - value = annotate_canon_value(av->value, -- entries[entrycount].type); -+ currententry->entry->type); - if (!value) { - r = IMAP_ANNOTATION_BADVALUE; - goto cleanup; -@@ -2110,3 +2332,10 @@ int annotatemore_delete(const char *mbox - - return annotatemore_rename(mboxname, NULL, NULL, NULL); - } -+ -+/* This file contains code Copyright (c) 2006 by Thomas Viehmann. -+ * You may distribute source code or binaries under the conditions -+ * conditions given in the CMU license, provided this note stays intact -+ * in the distributed source. If you want to distribute my code without -+ * this notice, do contact me at <tv@beamnet.de>. -+ */ -diff -r 321cda1d6136 lib/imapoptions ---- a/lib/imapoptions Tue Apr 22 10:44:56 2008 +0200 -+++ b/lib/imapoptions Tue Apr 22 10:47:04 2008 +0200 -@@ -172,6 +172,9 @@ are listed with ``<none>''. - /* Should non-admin users be allowed to set ACLs for the 'anyone' - user on their mailboxes? In a large organization this can cause - support problems, but it's enabled by default. */ -+ -+{ "annotation_definitions", NULL, STRING } -+/* File containing annotation definitions. */ - - { "auth_mech", "unix", STRINGLIST("unix", "pts", "krb", "krb5")} - /* The authorization mechanism to use. */ diff --git a/net-mail/cyrus-imapd/files/kolab/2.3.14/Folder-names.patch b/net-mail/cyrus-imapd/files/kolab/2.3.14/Folder-names.patch deleted file mode 100644 index 2f8689ae4ed4..000000000000 --- a/net-mail/cyrus-imapd/files/kolab/2.3.14/Folder-names.patch +++ /dev/null @@ -1,17 +0,0 @@ -Modifies the set of accepted characters in folder names for the cyrus imapd server [Version: 2.3.9] - -diff -r 17e54b46d7b6 imap/mboxname.c ---- a/imap/mboxname.c Mon Oct 27 18:44:56 2008 +0100 -+++ b/imap/mboxname.c Mon Oct 27 18:47:11 2008 +0100 -@@ -713,8 +713,10 @@ - /* - * Apply site policy restrictions on mailbox names. - * Restrictions are hardwired for now. -+ * original definition -+#define GOODCHARS " #$'+,-.0123456789:=@ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz~" - */ --#define GOODCHARS " #$'+,-.0123456789:=@ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz~" -+#define GOODCHARS " #$%'()*+,-.0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~" - int mboxname_policycheck(char *name) - { - unsigned i; diff --git a/net-mail/cyrus-imapd/files/kolab/2.3.14/Groups2.patch b/net-mail/cyrus-imapd/files/kolab/2.3.14/Groups2.patch deleted file mode 100644 index 36ba6b58d381..000000000000 --- a/net-mail/cyrus-imapd/files/kolab/2.3.14/Groups2.patch +++ /dev/null @@ -1,232 +0,0 @@ -diff -r 0d5aacd84718 lib/auth_unix.c ---- a/lib/auth_unix.c Mon Oct 27 18:37:49 2008 +0100 -+++ b/lib/auth_unix.c Wed Apr 01 18:19:19 2009 +0200 -@@ -46,12 +46,133 @@ - #include <stdlib.h> - #include <pwd.h> - #include <grp.h> -+#include <stdio.h> - #include <ctype.h> - #include <string.h> - - #include "auth.h" - #include "libcyr_cfg.h" - #include "xmalloc.h" -+ -+#if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) -+/* -+ * __getgrent.c - This file is part of the libc-8086/grp package for ELKS, -+ * Copyright (C) 1995, 1996 Nat Friedman <ndf@linux.mit.edu>. -+ * -+ * This library is free software; you can redistribute it and/or -+ * modify it under the terms of the GNU Library General Public -+ * License as published by the Free Software Foundation; either -+ * version 2 of the License, or (at your option) any later version. -+ * -+ * This library is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ * Library General Public License for more details. -+ * -+ * You should have received a copy of the GNU Library General Public -+ * License along with this library; if not, write to the Free -+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -+ * -+ */ -+ -+#include <unistd.h> -+#include <string.h> -+#include <errno.h> -+ -+static struct group *__getgrent(int grp_fd, char *line_buff, char **members) -+{ -+ short line_index; -+ short buff_size; -+ static struct group group; -+ register char *ptr; -+ char *field_begin; -+ short member_num; -+ char *endptr; -+ int line_len; -+ -+ /* We use the restart label to handle malformatted lines */ -+ restart: -+ line_index = 0; -+ buff_size = 256; -+ -+ line_buff = realloc(line_buff, buff_size); -+ while (1) { -+ if ((line_len = read(grp_fd, line_buff + line_index, -+ buff_size - line_index)) <= 0) { -+ return NULL; -+ } -+ field_begin = strchr(line_buff, '\n'); -+ if (field_begin != NULL) { -+ lseek(grp_fd, -+ (long) (1 + field_begin - -+ (line_len + line_index + line_buff)), SEEK_CUR); -+ *field_begin = '\0'; -+ if (*line_buff == '#' || *line_buff == ' ' -+ || *line_buff == '\n' || *line_buff == '\t') -+ goto restart; -+ break; -+ } else { -+ /* Allocate some more space */ -+ line_index = buff_size; -+ buff_size += 256; -+ line_buff = realloc(line_buff, buff_size); -+ } -+ } -+ -+ /* Now parse the line */ -+ group.gr_name = line_buff; -+ ptr = strchr(line_buff, ':'); -+ if (ptr == NULL) -+ goto restart; -+ *ptr++ = '\0'; -+ -+ group.gr_passwd = ptr; -+ ptr = strchr(ptr, ':'); -+ if (ptr == NULL) -+ goto restart; -+ *ptr++ = '\0'; -+ -+ field_begin = ptr; -+ ptr = strchr(ptr, ':'); -+ if (ptr == NULL) -+ goto restart; -+ *ptr++ = '\0'; -+ -+ group.gr_gid = (gid_t) strtoul(field_begin, &endptr, 10); -+ if (*endptr != '\0') -+ goto restart; -+ -+ member_num = 0; -+ field_begin = ptr; -+ -+ if (members != NULL) -+ free(members); -+ members = (char **) malloc((member_num + 1) * sizeof(char *)); -+ for ( ; field_begin && *field_begin != '\0'; field_begin = ptr) { -+ if ((ptr = strchr(field_begin, ',')) != NULL) -+ *ptr++ = '\0'; -+ members[member_num++] = field_begin; -+ members = (char **) realloc(members, -+ (member_num + 1) * sizeof(char *)); -+ } -+ members[member_num] = NULL; -+ -+ group.gr_mem = members; -+ return &group; -+} -+ -+static char *line_buff = NULL; -+static char **members = NULL; -+ -+struct group *fgetgrent(FILE *file) -+{ -+ if (file == NULL) { -+ errno = EINTR; -+ return NULL; -+ } -+ return __getgrent(fileno(file), line_buff, members); -+} -+#endif /* __FreeBSD__ */ - - struct auth_state { - char userid[81]; -@@ -140,6 +261,25 @@ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - }; - -+static struct group* fgetgrnam(const char* name) -+{ -+ struct group *grp; -+ FILE *groupfile; -+ -+ groupfile = fopen("/etc/imapd.group", "r"); -+ if (!groupfile) groupfile = fopen("/etc/group", "r"); -+ if (groupfile) { -+ while ((grp = fgetgrent(groupfile))) { -+ if (strcmp(grp->gr_name, name) == 0) { -+ fclose(groupfile); -+ return grp; -+ } -+ } -+ } -+ if (groupfile) fclose(groupfile); -+ return NULL; -+} -+ - /* - * Convert 'identifier' into canonical form. - * Returns a pointer to a static buffer containing the canonical form -@@ -175,7 +315,7 @@ - */ - - if (!strncmp(retbuf, "group:", 6)) { -- grp = getgrnam(retbuf+6); -+ grp = fgetgrnam(retbuf+6); - if (!grp) return NULL; - if (strlen(grp->gr_name) >= sizeof(retbuf)-6) - return NULL; -@@ -223,11 +363,12 @@ - struct auth_state *newstate; - struct passwd *pwd; - struct group *grp; --#if defined(HAVE_GETGROUPLIST) && defined(__GLIBC__) -+#if 0 && defined(HAVE_GETGROUPLIST) && defined(__GLIBC__) - gid_t gid, *groupids = NULL; - int ret, ngroups = 10; - #else - char **mem; -+ FILE *groupfile; - #endif - - identifier = mycanonifyid(identifier, 0); -@@ -245,7 +386,7 @@ - - pwd = getpwnam(identifier); - --#if defined(HAVE_GETGROUPLIST) && defined(__GLIBC__) -+#if 0 && defined(HAVE_GETGROUPLIST) && defined(__GLIBC__) - gid = pwd ? pwd->pw_gid : (gid_t) -1; - - /* get the group ids */ -@@ -283,20 +424,23 @@ - if (groupids) free(groupids); - - #else /* !HAVE_GETGROUPLIST */ -- setgrent(); -- while ((grp = getgrent())) { -- for (mem = grp->gr_mem; *mem; mem++) { -- if (!strcmp(*mem, identifier)) break; -- } -+ groupfile = fopen("/etc/imapd.group", "r"); -+ if (!groupfile) groupfile = fopen("/etc/group", "r"); -+ if (groupfile) { -+ while ((grp = fgetgrent(groupfile))) { -+ for (mem = grp->gr_mem; *mem; mem++) { -+ if (!strcmp(*mem, identifier)) break; -+ } - -- if (*mem || (pwd && pwd->pw_gid == grp->gr_gid)) { -- newstate->ngroups++; -- newstate->group = (char **)xrealloc((char *)newstate->group, -- newstate->ngroups * sizeof(char *)); -- newstate->group[newstate->ngroups-1] = xstrdup(grp->gr_name); -- } -- } -- endgrent(); -+ if (*mem || (pwd && pwd->pw_gid == grp->gr_gid)) { -+ newstate->ngroups++; -+ newstate->group = (char **)xrealloc((char *)newstate->group, -+ newstate->ngroups * sizeof(char *)); -+ newstate->group[newstate->ngroups-1] = xstrdup(grp->gr_name); -+ } -+ } -+ fclose(groupfile); -+ } - #endif /* HAVE_GETGROUPLIST */ - - return newstate; diff --git a/net-mail/cyrus-imapd/files/kolab/2.3.14/Logging.patch b/net-mail/cyrus-imapd/files/kolab/2.3.14/Logging.patch deleted file mode 100644 index c0bd2faec033..000000000000 --- a/net-mail/cyrus-imapd/files/kolab/2.3.14/Logging.patch +++ /dev/null @@ -1,58 +0,0 @@ -Provides improved logging for the cyrus imapd server [Version: 2.3.9] - -diff -r 6162fc947b22 imap/append.c ---- a/imap/append.c Tue Dec 11 11:22:03 2007 +0100 -+++ b/imap/append.c Tue Dec 11 11:22:13 2007 +0100 -@@ -648,6 +648,9 @@ int append_fromstage(struct appendstate - - /* ok, we've successfully added a message */ - as->quota_used += message_index.size; -+ -+ syslog(LOG_DEBUG, "append_fromstage: message %d added to %s", -+ message_index.uid, mailbox->name ); - - return 0; - } -diff -r 6162fc947b22 imap/imapd.c ---- a/imap/imapd.c Tue Dec 11 11:22:03 2007 +0100 -+++ b/imap/imapd.c Tue Dec 11 11:22:13 2007 +0100 -@@ -3509,17 +3509,19 @@ void cmd_close(char *tag) - if (!r) sync_log_mailbox(imapd_mailbox->name); - } - -+ if (r) { -+ prot_printf(imapd_out, "%s NO %s\r\n", tag, error_message(r)); -+ } -+ else { -+ prot_printf(imapd_out, "%s OK %s\r\n", tag, -+ error_message(IMAP_OK_COMPLETED)); -+ syslog(LOG_DEBUG, "cmd_expunge: user %s, mailbox %s, sequence %s", -+ imapd_userid, imapd_mailbox->name, "''"); -+ } -+ - index_closemailbox(imapd_mailbox); - mailbox_close(imapd_mailbox); - imapd_mailbox = 0; -- -- if (r) { -- prot_printf(imapd_out, "%s NO %s\r\n", tag, error_message(r)); -- } -- else { -- prot_printf(imapd_out, "%s OK %s\r\n", tag, -- error_message(IMAP_OK_COMPLETED)); -- } - } - - /* -diff -r 6162fc947b22 imap/mailbox.c ---- a/imap/mailbox.c Tue Dec 11 11:22:03 2007 +0100 -+++ b/imap/mailbox.c Tue Dec 11 11:22:13 2007 +0100 -@@ -2520,6 +2520,8 @@ int mailbox_expunge(struct mailbox *mail - *(fname->tail)++ = '/'; - fname->len++; - for (msgno = 0; msgno < numdeleted; msgno++) { -+ syslog(LOG_DEBUG, "mailbox_expunge: removing mail %s:%d", -+ mailbox->name, deleted[msgno]); - mailbox_message_get_fname(mailbox, deleted[msgno], - fname->tail, - sizeof(fname->buf) - fname->len); diff --git a/net-mail/cyrus-imapd/files/kolab/2.3.14/UID.patch b/net-mail/cyrus-imapd/files/kolab/2.3.14/UID.patch deleted file mode 100644 index ecc960d7bffe..000000000000 --- a/net-mail/cyrus-imapd/files/kolab/2.3.14/UID.patch +++ /dev/null @@ -1,117 +0,0 @@ -Allows login by uid rather than the mail address on the cyrus imapd server [Version: 2.3.9] - -diff -r 2ebe14b7db9d configure ---- a/configure Mon Oct 27 18:47:12 2008 +0100 -+++ b/configure Mon Oct 27 18:48:18 2008 +0100 -@@ -19667,7 +19667,7 @@ - done - - IMAP_COM_ERR_LIBS="${COM_ERR_LIBS}" --IMAP_LIBS="${LIB_SASL} ${LIBS} ${SQL_LIBS}" -+IMAP_LIBS="${LIB_SASL} -lldap -llber ${LIBS} ${SQL_LIBS}" - - - -diff -r 2ebe14b7db9d imap/global.c ---- a/imap/global.c Mon Oct 27 18:47:12 2008 +0100 -+++ b/imap/global.c Mon Oct 27 18:48:18 2008 +0100 -@@ -52,6 +52,9 @@ - #include <sys/types.h> - #include <netinet/in.h> - #include <sys/stat.h> -+ -+#include <ldap.h> -+#include <lber.h> - - #if HAVE_UNISTD_H - # include <unistd.h> -@@ -378,6 +381,18 @@ - char *domain = NULL; - int len = strlen(user); - char buf[81]; -+ const char *uri; -+ const char *base; -+ const char *binddn; -+ const char *bindpw; -+ struct timeval timeout; -+ char filter[255]; -+ LDAP *handle; -+ LDAPMessage *res; -+ LDAPMessage *entry; -+ struct berval** vals; -+ -+ int rc; - - /* check for domain */ - if (config_virtdomains && -@@ -396,6 +411,49 @@ - } - - if (config_virtdomains) { -+ if (config_virtdomains == IMAP_ENUM_VIRTDOMAINS_LDAP) { -+ uri = config_getstring(IMAPOPT_LDAP_URI); -+ base = config_getstring(IMAPOPT_LDAP_BASE); -+ binddn = config_getstring(IMAPOPT_LDAP_BIND_DN); -+ bindpw = config_getstring(IMAPOPT_LDAP_PASSWORD); -+ timeout.tv_sec = config_getint(IMAPOPT_LDAP_TIME_LIMIT); -+ timeout.tv_usec = 0; -+ sprintf(filter, "(uid=%s)", user); -+ rc = ldap_initialize(&handle, uri); -+ if (rc != LDAP_SUCCESS) { -+ syslog(LOG_ERR, "ldap_initialize failed (%s)", uri); -+ } else { -+ rc = ldap_simple_bind_s(handle, binddn, bindpw); -+ if (rc != LDAP_SUCCESS) { -+ syslog(LOG_ERR, "ldap_simple_bind() failed %d (%s)", rc, ldap_err2string(rc)); -+ } else { -+ rc = ldap_search_st(handle, base, LDAP_SCOPE_SUBTREE, filter, NULL, 0, &timeout, &res); -+ if (rc != LDAP_SUCCESS) { -+ syslog(LOG_ERR, "ldap_search_st failed %d (%s)", rc, ldap_err2string(rc)); -+ } else { -+ if ( (entry = ldap_first_entry(handle, res)) != NULL ) { -+ // read mail attribute from entry -+ if ( (vals = ldap_get_values_len(handle, entry, "mail")) ) { -+ if (memchr(vals[0]->bv_val, '@', vals[0]->bv_len)) { -+ static char buf[81]; /* same size as in auth_canonifyid */ -+ int len = ((sizeof(buf) - 1) > vals[0]->bv_len ? vals[0]->bv_len : sizeof(buf) - 1); -+ strncpy( buf, vals[0]->bv_val, len); -+ buf[len] = '\0'; /* make sure it's null-terminated */ -+ ldap_value_free_len( vals ); -+ ldap_msgfree( res ); -+ ldap_unbind_s(handle); /* also frees handle */ -+ syslog(LOG_DEBUG, "canonify: '%s'\n", buf); -+ return auth_canonifyid( buf, 0) ; -+ } -+ ldap_value_free_len( vals ); -+ } -+ } -+ ldap_msgfree( res ); -+ } -+ } -+ ldap_unbind_s(handle); /* also frees handle */ -+ } -+ } - if (domain) { - if (config_defdomain && !strcasecmp(config_defdomain, domain+1)) { - *domain = '\0'; /* trim the default domain */ -@@ -408,7 +466,7 @@ - user = buf; - } - } -- else if (config_virtdomains != IMAP_ENUM_VIRTDOMAINS_USERID) { -+ else if (config_virtdomains != IMAP_ENUM_VIRTDOMAINS_USERID && config_virtdomains != IMAP_ENUM_VIRTDOMAINS_LDAP) { - socklen_t salen; - int error; - struct sockaddr_storage localaddr; -diff -r 2ebe14b7db9d lib/imapoptions ---- a/lib/imapoptions Mon Oct 27 18:47:12 2008 +0100 -+++ b/lib/imapoptions Mon Oct 27 18:48:18 2008 +0100 -@@ -1114,7 +1114,7 @@ - mailbox hierarchy. The default is to use the netnews separator - character '.'. */ - --{ "virtdomains", "off", ENUM("off", "userid", "on") } -+{ "virtdomains", "off", ENUM("off", "userid", "ldap", "on") } - /* Enable virtual domain support. If enabled, the user's domain will - be determined by splitting a fully qualified userid at the last '@' - or '%' symbol. If the userid is unqualified, and the virtdomains diff --git a/net-mail/cyrus-imapd/files/kolab/2.3.14/timsieved_starttls-sendcaps.patch b/net-mail/cyrus-imapd/files/kolab/2.3.14/timsieved_starttls-sendcaps.patch deleted file mode 100644 index 45088d86317e..000000000000 --- a/net-mail/cyrus-imapd/files/kolab/2.3.14/timsieved_starttls-sendcaps.patch +++ /dev/null @@ -1,21 +0,0 @@ -This patch was downloaded from https://bugzilla.andrew.cmu.edu/cgi-bin/cvsweb.cgi/src/cyrus/timsieved/parser.c.diff?r1=1.44;r2=1.45 -(minus the CVS keywords) - -It should be reverse-applied with patch -p2 -R to work around the kontact -behaviour described in kolab/issue2443 (kontact aborts sieve when imapd sends -capabilities after starttls) and can be dropped as soon as kontact has a way -to work with old and new cyrus imapd servers. - -diff -r 1688e25afb65 timsieved/parser.c ---- a/timsieved/parser.c Thu Apr 23 23:28:07 2009 +0200 -+++ b/timsieved/parser.c Thu Apr 23 23:28:54 2009 +0200 -@@ -908,8 +908,7 @@ - - starttls_done = 1; - -- return capabilities(sieved_out, sieved_saslconn, starttls_done, -- authenticated, sasl_ssf); -+ return result; - } - #else - static int cmd_starttls(struct protstream *sieved_out, struct protstream *sieved_in) |