[packages/dovecot-antispam] - updated to current upstream git - rel 33
baggins
baggins at pld-linux.org
Thu Apr 6 02:03:27 CEST 2017
commit 4c03318dfd7707a5cde20aeb06da526b33a59174
Author: Jan Rękorajski <baggins at pld-linux.org>
Date: Thu Apr 6 02:03:03 2017 +0200
- updated to current upstream git
- rel 33
dovecot-2.2.14.patch | 225 -----------------------
dovecot-2.2.patch | 52 ------
dovecot-antispam-git.patch | 443 +++++++++++++++++++++++++++++++++++++++++++--
dovecot-antispam.spec | 6 +-
4 files changed, 427 insertions(+), 299 deletions(-)
---
diff --git a/dovecot-antispam.spec b/dovecot-antispam.spec
index 396ba6b..8302ba6 100644
--- a/dovecot-antispam.spec
+++ b/dovecot-antispam.spec
@@ -2,14 +2,12 @@ Summary: The dovecot antispam plugin
Summary(pl.UTF-8): Wtyczka antyspamowa dla dovecota
Name: dovecot-antispam
Version: 2.0
-Release: 32
+Release: 33
License: GPL v2
Group: Daemons
Source0: http://johannes.sipsolutions.net/download/dovecot-antispam/%{name}-%{version}.tar.bz2
# Source0-md5: 14547898759fbd93f2b98304520decc6
Patch0: %{name}-git.patch
-Patch1: dovecot-2.2.patch
-Patch2: dovecot-2.2.14.patch
URL: http://johannes.sipsolutions.net/Projects/dovecot-antispam
BuildRequires: dovecot-devel >= 1:2.0
%requires_eq_to dovecot dovecot-devel
@@ -24,8 +22,6 @@ way it was moved).
%prep
%setup -q
%patch0 -p1
-%patch1 -p1
-%patch2 -p1
%build
unset GIT_DIR
diff --git a/dovecot-2.2.14.patch b/dovecot-2.2.14.patch
deleted file mode 100644
index 7e48f07..0000000
--- a/dovecot-2.2.14.patch
+++ /dev/null
@@ -1,225 +0,0 @@
-From d17c6a9c34aa407d2ced8488389520903f16971f Mon Sep 17 00:00:00 2001
-From: Ron <ron at debian.org>
-Date: Sat, 25 Oct 2014 00:36:12 +1030
-Subject: Include the patch level in the dovecot version checks
-
-Dovecot broke the t_push() API for 2.2.14 so just checking the major/minor
-versions is no longer enough. Bonus points for it not actually exporting
-that version anywhere itself, so we still need to parse the full string to
-get it.
-
-There's a chance this might break some things for dovecot < 2.0 or so
-(based mostly on the theory that the patch=255 fallback coded into the
-dovecot-version.c parsing was put there for a reason), but we might be
-well past the stage of needing to worry about that now. If someone
-tests it with an earlier version and it breaks there, we'll worry about
-that when they report how and where it breaks.
-
-diff --git a/antispam-plugin.c b/antispam-plugin.c
-index 103b5fb..6ea49cf 100644
---- a/antispam-plugin.c
-+++ b/antispam-plugin.c
-@@ -70,7 +70,7 @@ static void lowercase_string(const char *in, char *out)
- }
-
- static bool mailbox_patternmatch(struct mailbox *box,
--#if DOVECOT_IS_GE(2,0)
-+#if DOVECOT_IS_GE(2,0,0)
- const struct mail_namespace *ns,
- #else
- struct mail_storage *storage,
-@@ -82,7 +82,7 @@ static bool mailbox_patternmatch(struct mailbox *box,
- int len;
- int rc;
-
--#if DOVECOT_IS_GE(2,0)
-+#if DOVECOT_IS_GE(2,0,0)
- if (ns && mailbox_get_namespace(box) != ns)
- return FALSE;
- #else
-@@ -116,7 +116,7 @@ static bool mailbox_patternmatch(struct mailbox *box,
- }
-
- static bool mailbox_patternmatch_case(struct mailbox *box,
--#if DOVECOT_IS_GE(2,0)
-+#if DOVECOT_IS_GE(2,0,0)
- const struct mail_namespace *ns,
- #else
- struct mail_storage *ns,
-@@ -127,7 +127,7 @@ static bool mailbox_patternmatch_case(struct mailbox *box,
- }
-
- static bool mailbox_patternmatch_icase(struct mailbox *box,
--#if DOVECOT_IS_GE(2,0)
-+#if DOVECOT_IS_GE(2,0,0)
- const struct mail_namespace *ns,
- #else
- struct mail_storage *ns,
-@@ -138,7 +138,7 @@ static bool mailbox_patternmatch_icase(struct mailbox *box,
- }
-
- static bool _mailbox_equals(struct mailbox *box,
--#if DOVECOT_IS_GE(2,0)
-+#if DOVECOT_IS_GE(2,0,0)
- const struct mail_namespace *ns,
- #else
- struct mail_storage *ns,
-@@ -149,7 +149,7 @@ static bool _mailbox_equals(struct mailbox *box,
- }
-
- typedef bool (*match_fn_t)(struct mailbox *,
--#if DOVECOT_IS_GE(2,0)
-+#if DOVECOT_IS_GE(2,0,0)
- const struct mail_namespace *,
- #else
- struct mail_storage *,
-@@ -187,7 +187,7 @@ static bool mailbox_in_list(struct mailbox *box, char ** const * patterns)
-
- while (*list) {
- if (match_info[i].fn(box,
--#if DOVECOT_IS_GE(2,0)
-+#if DOVECOT_IS_GE(2,0,0)
- mailbox_get_namespace(box),
- #else
- mailbox_get_storage(box),
-@@ -374,7 +374,7 @@ void antispam_free_config(struct antispam_config *cfg)
- i_free(cfg);
- }
-
--#if DOVECOT_IS_GE(2,0)
-+#if DOVECOT_IS_GE(2,0,0)
- void PLUGIN_FUNCTION(init)(struct module *module)
- {
- antispam_storage_init(module);
-@@ -392,7 +392,7 @@ void PLUGIN_FUNCTION(deinit)(void)
- }
-
- /* put dovecot version we built against into plugin for checking */
--#ifdef DOVECOT_ABI_VERSION
-+#if DOVECOT_IS_GE(2,2,0)
- const char *PLUGIN_FUNCTION(version) = DOVECOT_ABI_VERSION;
- #else
- const char *PLUGIN_FUNCTION(version) = PACKAGE_VERSION;
-diff --git a/antispam-plugin.h b/antispam-plugin.h
-index a06f7be..724ab5e 100644
---- a/antispam-plugin.h
-+++ b/antispam-plugin.h
-@@ -4,7 +4,7 @@
- #include "lib.h"
- #include "str.h"
- #include "dovecot-version.h"
--#if DOVECOT_IS_GE(2, 0)
-+#if DOVECOT_IS_GE(2,0,0)
- #include "imap-client.h"
- #else
- #include "client.h"
-@@ -186,7 +186,7 @@ void antispam_free_config(struct antispam_config *cfg);
- /*
- * Dovecot version compat code
- */
--#if DOVECOT_IS_EQ(1, 0)
-+#if DOVECOT_IS_GE(1,0,0) && DOVECOT_IS_LT(1,1,0)
- #define module_arg void
- #define ATTR_UNUSED __attr_unused__
- #define mempool_unref(x) pool_unref(*(x))
-@@ -217,7 +217,7 @@ static inline int _mail_get_stream(struct mail *mail,
- return 0;
- }
- #define mail_get_stream _mail_get_stream
--#elif DOVECOT_IS_EQ(1, 1)
-+#elif DOVECOT_IS_GE(1,1,0) && DOVECOT_IS_LT(1,2,0)
- #define mempool_unref pool_unref
- #define module_arg void
- #define ME(err) MAIL_ERROR_ ##err,
-@@ -236,7 +236,7 @@ o_stream_create_from_fd(int fd, pool_t pool ATTR_UNUSED)
- {
- return o_stream_create_fd(fd, 0, TRUE);
- }
--#elif DOVECOT_IS_EQ(1, 2)
-+#elif DOVECOT_IS_GE(1,2,0) && DOVECOT_IS_LT(2,0,0)
- #define mempool_unref pool_unref
- #define module_arg void
- #define ME(err) MAIL_ERROR_ ##err,
-@@ -255,7 +255,7 @@ o_stream_create_from_fd(int fd, pool_t pool ATTR_UNUSED)
- {
- return o_stream_create_fd(fd, 0, TRUE);
- }
--#elif DOVECOT_IS_EQ(2, 0) || DOVECOT_IS_EQ(2, 1)
-+#elif DOVECOT_IS_GE(2,0,0) && DOVECOT_IS_LT(2,2,0)
- #define mempool_unref pool_unref
- #define module_arg struct module *
- #define ME(err) MAIL_ERROR_ ##err,
-@@ -277,7 +277,7 @@ o_stream_create_from_fd(int fd, pool_t pool ATTR_UNUSED)
- {
- return dict_init(uri, DICT_DATA_TYPE_STRING, username, NULL);
- }
--#elif DOVECOT_IS_EQ(2, 2)
-+#elif DOVECOT_IS_GE(2,2,0)
- #define mempool_unref pool_unref
- #define module_arg struct module *
- #define ME(err) MAIL_ERROR_ ##err,
-diff --git a/dovecot-version.c b/dovecot-version.c
-index e7e7cf2..a9f980a 100644
---- a/dovecot-version.c
-+++ b/dovecot-version.c
-@@ -40,19 +40,19 @@ int main(int argc, char **argv)
- printf("/* Auto-generated file, do not edit */\n\n");
- printf("#define DOVECOT_VERSION_CODE(maj, min, patch) "
- "((maj)<<16 | ((min)<<8) | (patch))\n\n");
--
-+
- printf("#define DOVECOT_VCODE "
-- "0x%.2x%.2x%.2x\n", maj, min, 0);
-- printf("#define DOVECOT_IS_EQ(maj, min) "
-- "DOVECOT_VCODE == DOVECOT_VERSION_CODE(maj, min, 0)\n");
-- printf("#define DOVECOT_IS_GT(maj, min) "
-- "DOVECOT_VCODE > DOVECOT_VERSION_CODE(maj, min, 0)\n");
-- printf("#define DOVECOT_IS_GE(maj, min) "
-- "DOVECOT_VCODE >= DOVECOT_VERSION_CODE(maj, min, 0)\n");
-- printf("#define DOVECOT_IS_LT(maj, min) "
-- "DOVECOT_VCODE < DOVECOT_VERSION_CODE(maj, min, 0)\n");
-- printf("#define DOVECOT_IS_LE(maj, min) "
-- "DOVECOT_VCODE <= DOVECOT_VERSION_CODE(maj, min, 0)\n");
-+ "0x%.2x%.2x%.2x\n", maj, min, patch);
-+ printf("#define DOVECOT_IS_EQ(maj, min, patch) "
-+ "DOVECOT_VCODE == DOVECOT_VERSION_CODE(maj, min, patch)\n");
-+ printf("#define DOVECOT_IS_GT(maj, min, patch) "
-+ "DOVECOT_VCODE > DOVECOT_VERSION_CODE(maj, min, patch)\n");
-+ printf("#define DOVECOT_IS_GE(maj, min, patch) "
-+ "DOVECOT_VCODE >= DOVECOT_VERSION_CODE(maj, min, patch)\n");
-+ printf("#define DOVECOT_IS_LT(maj, min, patch) "
-+ "DOVECOT_VCODE < DOVECOT_VERSION_CODE(maj, min, patch)\n");
-+ printf("#define DOVECOT_IS_LE(maj, min, patch) "
-+ "DOVECOT_VCODE <= DOVECOT_VERSION_CODE(maj, min, patch)\n");
-
- /* Use the antispam-storage-2.0.c for dovecot 2.1 and 2.2 as well */
- if (maj == 2 && min < 3)
---
-cgit v0.10.2
-
-From 2aa93d15409f5a47589d264991fd3e8261d34b1b Mon Sep 17 00:00:00 2001
-From: Ron <ron at debian.org>
-Date: Sat, 25 Oct 2014 00:47:21 +1030
-Subject: Add a compatibility macro for t_push()
-
-This should fix things for the API change in dovecot 2.2.14 reported in:
-https://bugs.debian.org/765943
-
-diff --git a/antispam-plugin.h b/antispam-plugin.h
-index 724ab5e..939e27e 100644
---- a/antispam-plugin.h
-+++ b/antispam-plugin.h
-@@ -299,6 +299,10 @@ o_stream_create_from_fd(int fd, pool_t pool ATTR_UNUSED)
- #define module_arg struct module *
- #define ME(err) MAIL_ERROR_ ##err,
-
-+#if DOVECOT_IS_GE(2,2,14)
-+#define t_push() t_push(__func__)
-+#endif
-+
- static inline const char *const *
- get_mail_headers(struct mail *mail, const char *hdr)
- {
---
-cgit v0.10.2
-
diff --git a/dovecot-2.2.patch b/dovecot-2.2.patch
deleted file mode 100644
index 8e7e881..0000000
--- a/dovecot-2.2.patch
+++ /dev/null
@@ -1,52 +0,0 @@
-diff -ur dovecot-antispam-2.0/antispam-plugin.h dovecot-antispam-2.0-2.2/antispam-plugin.h
---- dovecot-antispam-2.0/antispam-plugin.h 2013-07-16 08:49:17.445971507 +0200
-+++ dovecot-antispam-2.0-2.2/antispam-plugin.h 2013-07-16 08:47:54.968547139 +0200
-@@ -287,6 +287,25 @@
- {
- return dict_init(uri, DICT_DATA_TYPE_STRING, username, NULL);
- }
-+#elif DOVECOT_IS_EQ(2, 2)
-+#define mempool_unref pool_unref
-+#define module_arg struct module *
-+#define ME(err) MAIL_ERROR_ ##err,
-+
-+static inline const char *const *
-+get_mail_headers(struct mail *mail, const char *hdr)
-+{
-+ const char *const *ret;
-+ if (mail_get_headers(mail, hdr, &ret))
-+ return NULL;
-+ return ret;
-+}
-+
-+static inline struct ostream *
-+o_stream_create_from_fd(int fd, pool_t pool ATTR_UNUSED)
-+{
-+ return o_stream_create_fd(fd, 0, TRUE);
-+}
- #else
- #error "Building against this dovecot version is not supported"
- #endif
-diff -ur dovecot-antispam-2.0/dovecot-version.c dovecot-antispam-2.0-2.2/dovecot-version.c
---- dovecot-antispam-2.0/dovecot-version.c 2013-07-16 08:49:17.445971507 +0200
-+++ dovecot-antispam-2.0-2.2/dovecot-version.c 2013-07-16 08:48:53.755753877 +0200
-@@ -55,7 +55,7 @@
- "DOVECOT_VCODE <= DOVECOT_VERSION_CODE(maj, min, 0)\n");
-
- /* Use the antispam-storage-2.0.c for dovecot 2.1 as well */
-- if (maj == 2 && min == 1)
-+ if (maj == 2 && (min == 1 || min == 2))
- min = 0;
-
- printf("#define ANTISPAM_STORAGE "
---- dovecot-antispam-2.0/antispam-plugin.c~ 2011-11-07 10:49:47.000000000 +0100
-+++ dovecot-antispam-2.0/antispam-plugin.c 2013-07-23 20:19:25.951626755 +0200
-@@ -392,4 +392,8 @@
- }
-
- /* put dovecot version we built against into plugin for checking */
-+#ifdef DOVECOT_ABI_VERSION
-+const char *PLUGIN_FUNCTION(version) = DOVECOT_ABI_VERSION;
-+#else
- const char *PLUGIN_FUNCTION(version) = PACKAGE_VERSION;
-+#endif
diff --git a/dovecot-antispam-git.patch b/dovecot-antispam-git.patch
index 7f11fbd..f717447 100644
--- a/dovecot-antispam-git.patch
+++ b/dovecot-antispam-git.patch
@@ -1,7 +1,72 @@
+diff --git a/antispam-plugin.c b/antispam-plugin.c
+index 7756204..76ced7b 100644
+--- a/antispam-plugin.c
++++ b/antispam-plugin.c
+@@ -90,7 +90,7 @@ static bool mailbox_patternmatch(struct mailbox *box,
+ return FALSE;
+ #endif
+
+- t_push();
++ T_BEGIN {
+
+ boxname = mailbox_get_name(box);
+ if (lowercase) {
+@@ -110,7 +110,7 @@ static bool mailbox_patternmatch(struct mailbox *box,
+
+ rc = memcmp(name, boxname, len) == 0;
+
+- t_pop();
++ } T_END;
+
+ return rc;
+ }
+@@ -257,7 +257,7 @@ static int parse_folder_setting(const struct antispam_config *cfg,
+ int cnt = 0;
+ enum match_type i;
+
+- t_push();
++ T_BEGIN {
+
+ for (i = 0; i < NUM_MT; ++i) {
+ tmp = getenv(t_strconcat(setting, match_info[i].suffix, NULL),
+@@ -286,7 +286,7 @@ static int parse_folder_setting(const struct antispam_config *cfg,
+ }
+ }
+
+- t_pop();
++ } T_END;
+
+ if (!cnt)
+ debug(&cfg->dbgcfg, "no %s folders\n", display_name);
+@@ -392,4 +392,8 @@ void PLUGIN_FUNCTION(deinit)(void)
+ }
+
+ /* put dovecot version we built against into plugin for checking */
++#if DOVECOT_IS_GE(2,2)
++const char *PLUGIN_FUNCTION(version) = DOVECOT_ABI_VERSION;
++#else
+ const char *PLUGIN_FUNCTION(version) = PACKAGE_VERSION;
++#endif
diff --git a/antispam-plugin.h b/antispam-plugin.h
-index 280bb12..72b906d 100644
+index 280bb12..62a3eb3 100644
--- a/antispam-plugin.h
+++ b/antispam-plugin.h
+@@ -10,7 +10,6 @@
+ #include "client.h"
+ #endif
+ #include "ostream.h"
+-#include "dict.h"
+ #include "imap-search.h"
+ #include <stdlib.h>
+
+@@ -43,6 +42,7 @@ struct signature_config {
+ };
+
+ struct antispam_debug_config {
++ const char *prefix;
+ enum antispam_debug_target target;
+ int verbose;
+ };
@@ -98,8 +98,10 @@ struct antispam_config {
int extra_env_num;
} crm;
@@ -15,17 +80,116 @@ index 280bb12..72b906d 100644
const char *pipe_binary;// = "/usr/sbin/sendmail";
const char *tmpdir;// = "/tmp";
char **extra_args;
-@@ -260,7 +262,7 @@ o_stream_create_from_fd(int fd, pool_t pool ATTR_UNUSED)
+@@ -204,12 +206,6 @@ o_stream_create_from_fd(int fd, pool_t pool)
+ return o_stream_create_file(fd, pool, 0, TRUE);
+ }
+
+-static inline struct dict *
+-string_dict_init(const char *uri, const char *username)
+-{
+- return dict_init(uri, username);
+-}
+-
+ static inline int _mail_get_stream(struct mail *mail,
+ struct message_size *hdr_size,
+ struct message_size *body_size,
+@@ -222,6 +218,11 @@ static inline int _mail_get_stream(struct mail *mail,
+ return 0;
+ }
+ #define mail_get_stream _mail_get_stream
++
++#define T_BEGIN \
++ STMT_START { t_push();
++#define T_END \
++ t_pop(); } STMT_END
+ #elif DOVECOT_IS_EQ(1, 1)
+ #define mempool_unref pool_unref
+ #define module_arg void
+@@ -231,7 +232,7 @@ static inline const char *const *
+ get_mail_headers(struct mail *mail, const char *hdr)
+ {
+ const char *const *ret;
+- if (mail_get_headers(mail, hdr, &ret))
++ if (mail_get_headers(mail, hdr, &ret) < 0)
+ return NULL;
+ return ret;
+ }
+@@ -250,7 +251,7 @@ static inline const char *const *
+ get_mail_headers(struct mail *mail, const char *hdr)
+ {
+ const char *const *ret;
+- if (mail_get_headers(mail, hdr, &ret))
++ if (mail_get_headers(mail, hdr, &ret) < 0)
+ return NULL;
+ return ret;
+ }
+@@ -260,7 +261,7 @@ o_stream_create_from_fd(int fd, pool_t pool ATTR_UNUSED)
{
return o_stream_create_fd(fd, 0, TRUE);
}
-#elif DOVECOT_IS_EQ(2, 0)
-+#elif DOVECOT_IS_EQ(2, 0) || DOVECOT_IS_EQ(2, 1)
++#elif DOVECOT_IS_EQ(2, 0) || DOVECOT_IS_EQ(2, 1) || DOVECOT_IS_EQ(2, 2)
#define mempool_unref pool_unref
#define module_arg struct module *
#define ME(err) MAIL_ERROR_ ##err,
+@@ -269,7 +270,7 @@ static inline const char *const *
+ get_mail_headers(struct mail *mail, const char *hdr)
+ {
+ const char *const *ret;
+- if (mail_get_headers(mail, hdr, &ret))
++ if (mail_get_headers(mail, hdr, &ret) < 0)
+ return NULL;
+ return ret;
+ }
+@@ -279,12 +280,6 @@ o_stream_create_from_fd(int fd, pool_t pool ATTR_UNUSED)
+ {
+ return o_stream_create_fd(fd, 0, TRUE);
+ }
+-
+-static inline struct dict *
+-string_dict_init(const char *uri, const char *username)
+-{
+- return dict_init(uri, DICT_DATA_TYPE_STRING, username, NULL);
+-}
+ #else
+ #error "Building against this dovecot version is not supported"
+ #endif
+diff --git a/antispam-storage-1.1.c b/antispam-storage-1.1.c
+index f28a0cf..aab23d9 100644
+--- a/antispam-storage-1.1.c
++++ b/antispam-storage-1.1.c
+@@ -508,10 +508,10 @@ void antispam_mail_storage_created(struct mail_storage *storage)
+
+ static const char *_getenv(const char *env, void *data ATTR_UNUSED)
+ {
+- t_push();
++ T_BEGIN {
+ env = t_str_ucase(t_strconcat("antispam_", env, NULL));
+ env = getenv(env);
+- t_pop();
++ } T_END;
+
+ return env;
+ }
+diff --git a/antispam-storage-1.2.c b/antispam-storage-1.2.c
+index 5e0cb97..269a373 100644
+--- a/antispam-storage-1.2.c
++++ b/antispam-storage-1.2.c
+@@ -498,10 +498,10 @@ void antispam_mail_storage_created(struct mail_storage *storage)
+
+ static const char *_getenv(const char *env, void *data ATTR_UNUSED)
+ {
+- t_push();
++ T_BEGIN {
+ env = t_str_ucase(t_strconcat("antispam_", env, NULL));
+ env = getenv(env);
+- t_pop();
++ } T_END;
+
+ return env;
+ }
diff --git a/antispam-storage-2.0.c b/antispam-storage-2.0.c
-index 5a089bc..3e67553 100644
+index 5a089bc..c3d6251 100644
--- a/antispam-storage-2.0.c
+++ b/antispam-storage-2.0.c
@@ -472,7 +472,7 @@ static void antispam_mailbox_allocated(struct mailbox *box)
@@ -37,8 +201,22 @@ index 5a089bc..3e67553 100644
v->free = antispam_mailbox_free;
+@@ -494,11 +494,11 @@ static const char *_getenv(const char *name, void *data)
+ struct mail_user *user = data;
+ const char *env;
+
+- t_push();
++ T_BEGIN {
+ env = t_strconcat("antispam_", t_str_lcase(name), NULL);
+
+ env = mail_user_plugin_getenv(user, env);
+- t_pop();
++ } T_END;
+
+ return env;
+ }
diff --git a/antispam.7 b/antispam.7
-index 5e33e4c..5d077f0 100644
+index 5e33e4c..497da58 100644
--- a/antispam.7
+++ b/antispam.7
@@ -1,4 +1,4 @@
@@ -47,7 +225,17 @@ index 5e33e4c..5d077f0 100644
.SH NAME
antispam \- The dovecot antispam plugin.
-@@ -206,6 +206,11 @@ plugin {
+@@ -120,6 +120,9 @@ plugin {
+ # antispam_debug_target = syslog
+ # antispam_debug_target = stderr
+ # antispam_verbose_debug = 1
++ #
++ # This can be used to get a prefix, e.g. by specifying %u in it
++ # antispam_debug_prefix = "antispam: "
+
+ # backend selection, MUST be configured first,
+ # there's no default so you need to set one of
+@@ -206,6 +209,11 @@ plugin {
# semicolon-separated list of blacklisted results, case insensitive
# antispam_dspam_result_blacklist = Virus
@@ -59,7 +247,7 @@ index 5e33e4c..5d077f0 100644
#=====================
# pipe plugin
#
-@@ -228,6 +233,14 @@ plugin {
+@@ -228,6 +236,14 @@ plugin {
# "mailtrain" are still valid, these are, in the same order as
# above: antispam_mail_sendmail, antispam_mail_sendmail_args,
# antispam_mail_spam, antispam_mail_notspam and antispam_mail_tmpdir.
@@ -74,7 +262,7 @@ index 5e33e4c..5d077f0 100644
# temporary directory
antispam_pipe_tmpdir = /tmp
-@@ -247,7 +260,7 @@ plugin {
+@@ -247,7 +263,7 @@ plugin {
antispam_crm_binary = /bin/false
# antispam_crm_binary = /usr/share/crm114/mailreaver.crm
@@ -83,7 +271,7 @@ index 5e33e4c..5d077f0 100644
# (default unset i.e. none)
# antispam_crm_args =
# antispam_crm_args = --config=/path/to/config
-@@ -257,11 +270,6 @@ plugin {
+@@ -257,11 +273,6 @@ plugin {
# antispam_crm_env =
# antispam_crm_env = HOME=%h;USER=%u
@@ -95,11 +283,100 @@ index 5e33e4c..5d077f0 100644
# NOTE: you need to set the signature for this backend
antispam_signature = X-CRM114-CacheID
+diff --git a/crm114-exec.c b/crm114-exec.c
+index 5b39ca9..d786e04 100644
+--- a/crm114-exec.c
++++ b/crm114-exec.c
+@@ -113,7 +113,7 @@ static int call_reaver(const struct antispam_config *cfg,
+
+ debugv(&cfg->dbgcfg, argv);
+
+- t_push();
++ T_BEGIN {
+ for (i = 0; i < cfg->crm.extra_env_num; i++) {
+ char *name, *value;
+ name = t_strdup_noconst(cfg->crm.extra_env[i]);
+@@ -124,7 +124,7 @@ static int call_reaver(const struct antispam_config *cfg,
+ }
+ setenv(name, value, 1);
+ }
+- t_pop();
++ } T_END;
+
+ execv(cfg->crm.reaver_binary, argv);
+ /* fall through if reaver can't be found */
+diff --git a/debug.c b/debug.c
+index d2683fa..77f0167 100644
+--- a/debug.c
++++ b/debug.c
+@@ -1,4 +1,3 @@
+-#define _BSD_SOURCE
+ #include <syslog.h>
+ #include <stdarg.h>
+ #include <stdio.h>
+@@ -14,9 +13,9 @@ static void _debug(const struct antispam_debug_config *cfg,
+ if (cfg->target == ADT_NONE)
+ return;
+
+- t_push();
++ T_BEGIN {
+
+- fmt = t_strconcat("antispam: ", format, NULL);
++ fmt = t_strconcat(cfg->prefix, format, NULL);
+
+ switch (cfg->target) {
+ case ADT_NONE:
+@@ -30,7 +29,7 @@ static void _debug(const struct antispam_debug_config *cfg,
+ break;
+ }
+
+- t_pop();
++ } T_END;
+ }
+
+ void debug(const struct antispam_debug_config *cfg, const char *fmt, ...)
+@@ -48,7 +47,7 @@ void debugv(const struct antispam_debug_config *cfg, char **args)
+ char *buf;
+ const char *str;
+
+- t_push();
++ T_BEGIN {
+ buf = t_buffer_get(buflen);
+
+ while (1) {
+@@ -72,7 +71,7 @@ void debugv(const struct antispam_debug_config *cfg, char **args)
+ t_buffer_alloc(pos);
+
+ debug(cfg, "%s", buf);
+- t_pop();
++ } T_END;
+ }
+
+ void debugv_not_stderr(const struct antispam_debug_config *cfg, char **args)
+@@ -111,6 +110,10 @@ int debug_init(struct antispam_debug_config *cfg,
+ return -1;
+ }
+
++ cfg->prefix = getenv("DEBUG_PREFIX", getenv_data);
++ if (!cfg->prefix)
++ cfg->prefix = "antispam: ";
++
+ debug(cfg, "plugin initialising (%s)\n", ANTISPAM_VERSION);
+
+ tmp = getenv("VERBOSE_DEBUG", getenv_data);
diff --git a/dovecot-version.c b/dovecot-version.c
-index cbcb35b..0026fbf 100644
+index cbcb35b..fe9bc73 100644
--- a/dovecot-version.c
+++ b/dovecot-version.c
-@@ -17,21 +17,24 @@ int main(int argc, char **argv)
+@@ -1,6 +1,7 @@
+ #include <stdio.h>
+ #include <string.h>
+ #include <stdlib.h>
++#include <ctype.h>
+ #include "config.h"
+
+ int main(int argc, char **argv)
+@@ -17,21 +18,24 @@ int main(int argc, char **argv)
maj = strtol(v, &e, 10);
if (v == e)
@@ -125,24 +402,66 @@ index cbcb35b..0026fbf 100644
+ if (v == e)
+ return 4;
+ } else
-+ patch = 255;
++ patch = 0;
}
printf("/* Auto-generated file, do not edit */\n\n");
-@@ -50,6 +53,11 @@ int main(int argc, char **argv)
+@@ -40,6 +44,8 @@ int main(int argc, char **argv)
+
+ printf("#define DOVECOT_VCODE "
+ "0x%.2x%.2x%.2x\n", maj, min, 0);
++ printf("#define DOVECOT_VCODE_PATCH "
++ "0x%.2x%.2x%.2x\n", maj, min, patch);
+ printf("#define DOVECOT_IS_EQ(maj, min) "
+ "DOVECOT_VCODE == DOVECOT_VERSION_CODE(maj, min, 0)\n");
+ printf("#define DOVECOT_IS_GT(maj, min) "
+@@ -50,6 +56,22 @@ int main(int argc, char **argv)
"DOVECOT_VCODE < DOVECOT_VERSION_CODE(maj, min, 0)\n");
printf("#define DOVECOT_IS_LE(maj, min) "
"DOVECOT_VCODE <= DOVECOT_VERSION_CODE(maj, min, 0)\n");
+
-+ /* Use the antispam-storage-2.0.c for dovecot 2.1 as well */
-+ if (maj == 2 && min == 1)
++ printf("#define DOVECOT_P_IS_EQ(maj, min, patch) "
++ "DOVECOT_VCODE_PATCH == DOVECOT_VERSION_CODE(maj, min, patch)\n");
++ printf("#define DOVECOT_P_IS_GT(maj, min, patch) "
++ "DOVECOT_VCODE_PATCH > DOVECOT_VERSION_CODE(maj, min, patch)\n");
++ printf("#define DOVECOT_P_IS_GE(maj, min, patch) "
++ "DOVECOT_VCODE_PATCH >= DOVECOT_VERSION_CODE(maj, min, patch)\n");
++ printf("#define DOVECOT_P_IS_LT(maj, min, patch) "
++ "DOVECOT_VCODE_PATCH < DOVECOT_VERSION_CODE(maj, min, patch)\n");
++ printf("#define DOVECOT_P_IS_LE(maj, min, patch) "
++ "DOVECOT_VCODE_PATCH <= DOVECOT_VERSION_CODE(maj, min, patch)\n");
++
++ /* Use the antispam-storage-2.0.c for dovecot 2.1 and 2.2 as well */
++ if (maj == 2 && min < 3)
+ min = 0;
+
printf("#define ANTISPAM_STORAGE "
"\"antispam-storage-%d.%d.c\"\n", maj, min);
+diff --git a/dspam-exec.c b/dspam-exec.c
+index 2e353ce..856babb 100644
+--- a/dspam-exec.c
++++ b/dspam-exec.c
+@@ -141,7 +141,7 @@ static int call_dspam(const struct antispam_config *cfg,
+ */
+ debugv_not_stderr(&cfg->dbgcfg, argv);
+
+- t_push();
++ T_BEGIN {
+ for (i = 0; i < cfg->dspam.extra_env_num; i++) {
+ char *name, *value;
+ name = t_strdup_noconst(cfg->dspam.extra_env[i]);
+@@ -152,7 +152,7 @@ static int call_dspam(const struct antispam_config *cfg,
+ }
+ setenv(name, value, 1);
+ }
+- t_pop();
++ } T_END;
+
+ execv(cfg->dspam.binary, argv);
+ debug(&cfg->dbgcfg, "executing %s failed: %d (uid=%d, gid=%d)",
diff --git a/pipe.c b/pipe.c
-index 18c2233..a20b4aa 100644
+index 18c2233..f9abef5 100644
--- a/pipe.c
+++ b/pipe.c
@@ -34,16 +34,19 @@
@@ -164,7 +483,7 @@ index 18c2233..a20b4aa 100644
case CLASS_NOTSPAM:
- dest = cfg->pipe.ham_arg;
+ dest = cfg->pipe.ham_args;
-+ dest_num = cfg->pipe.spam_args_num;
++ dest_num = cfg->pipe.ham_args_num;
break;
}
@@ -196,6 +515,42 @@ index 18c2233..a20b4aa 100644
dup2(mailfd, 0);
fd = open("/dev/null", O_WRONLY);
+@@ -128,7 +136,7 @@ static int process_tmpdir(const struct antispam_config *cfg,
+ enum classification wanted;
+ int rc = 0;
+
+- t_push();
++ T_BEGIN {
+
+ buf = t_malloc(20 + ast->tmplen);
+
+@@ -151,7 +159,7 @@ static int process_tmpdir(const struct antispam_config *cfg,
+ close(fd);
+ }
+
+- t_pop();
++ } T_END;
+
+ return rc;
+ }
+@@ -160,7 +168,7 @@ static void clear_tmpdir(struct antispam_transaction_context *ast)
+ {
+ char *buf;
+
+- t_push();
++ T_BEGIN {
+
+ buf = t_malloc(20 + ast->tmplen);
+
+@@ -172,7 +180,7 @@ static void clear_tmpdir(struct antispam_transaction_context *ast)
+ }
+ rmdir(ast->tmpdir);
+
+- t_pop();
++ } T_END;
+ }
+
+ static void backend_rollback(const struct antispam_config *cfg ATTR_UNUSED,
@@ -228,7 +236,7 @@ static int backend_handle_mail(const struct antispam_config *cfg,
return -1;
}
@@ -205,6 +560,26 @@ index 18c2233..a20b4aa 100644
mail_storage_set_error(t->box->storage,
ME(NOTPOSSIBLE)
"antispam plugin not configured");
+@@ -242,7 +250,7 @@ static int backend_handle_mail(const struct antispam_config *cfg,
+ return -1;
+ }
+
+- t_push();
++ T_BEGIN {
+
+ buf = t_malloc(20 + ast->tmplen);
+ i_snprintf(buf, 20 + ast->tmplen - 1, "%s/%d", ast->tmpdir, ast->count);
+@@ -303,8 +311,8 @@ static int backend_handle_mail(const struct antispam_config *cfg,
+ o_stream_destroy(&outstream);
+ out_close:
+ close(fd);
+- out:
+- t_pop();
++ out: ;
++ } T_END;
+
+ return ret;
+ }
@@ -316,20 +324,50 @@ static void backend_init(struct antispam_config *cfg,
const char *tmp;
int i;
@@ -266,3 +641,37 @@ index 18c2233..a20b4aa 100644
}
tmp = getenv("PIPE_PROGRAM", getenv_data);
+diff --git a/spool2dir.c b/spool2dir.c
+index cbd1909..d304716 100644
+--- a/spool2dir.c
++++ b/spool2dir.c
+@@ -165,7 +165,7 @@ static int backend_handle_mail(const struct antispam_config *cfg,
+ return -1;
+ }
+
+- t_push();
++ T_BEGIN {
+
+ /* atomically create a _new_ file */
+ while (ast->count <= 9999) {
+@@ -174,9 +174,6 @@ static int backend_handle_mail(const struct antispam_config *cfg,
+ if (fd >= 0 || errno != EEXIST)
+ break;
+ /* current filename in buf already exists, zap it */
+- t_pop();
+- t_push();
+- /* buf is invalid now! */
+ }
+
+ if (fd < 0) {
+@@ -225,8 +222,8 @@ static int backend_handle_mail(const struct antispam_config *cfg,
+ close(fd);
+ if (ret)
+ unlink(buf);
+- out:
+- t_pop();
++ out: ;
++ } T_END;
+
+ return ret;
+ }
================================================================
---- gitweb:
http://git.pld-linux.org/gitweb.cgi/packages/dovecot-antispam.git/commitdiff/4c03318dfd7707a5cde20aeb06da526b33a59174
More information about the pld-cvs-commit
mailing list