summaryrefslogtreecommitdiffstats
path: root/plugins/surbl.c
diff options
context:
space:
mode:
authorcebka@mailsupport.rambler.ru <cebka@mailsupport.rambler.ru>2008-09-23 18:12:36 +0400
committercebka@mailsupport.rambler.ru <cebka@mailsupport.rambler.ru>2008-09-23 18:12:36 +0400
commitffe2b54bd024bb45fe7ee182d452ad61283df8ca (patch)
treed63a7589dfea70ac173dc44bd2b1c88303afa024 /plugins/surbl.c
parent193acf73e51b24ccca8048ebb6aaec2971594268 (diff)
downloadrspamd-ffe2b54bd024bb45fe7ee182d452ad61283df8ca.tar.gz
rspamd-ffe2b54bd024bb45fe7ee182d452ad61283df8ca.zip
* Rework logic of filters
* Add some documentation to rspamd (about new filters logic and about protocol)
Diffstat (limited to 'plugins/surbl.c')
-rw-r--r--plugins/surbl.c26
1 files changed, 20 insertions, 6 deletions
diff --git a/plugins/surbl.c b/plugins/surbl.c
index c8a545ed1..d35ab6069 100644
--- a/plugins/surbl.c
+++ b/plugins/surbl.c
@@ -29,6 +29,7 @@
#define DEFAULT_REDIRECTOR_READ_TIMEOUT 5000
#define DEFAULT_SURBL_MAX_URLS 1000
#define DEFAULT_SURBL_URL_EXPIRE 86400
+#define DEFAULT_SURBL_SYMBOL "SURBL_DNS"
#define DEFAULT_SURBL_SUFFIX "multi.surbl.org"
struct surbl_ctx {
@@ -44,6 +45,8 @@ struct surbl_ctx {
unsigned int max_urls;
unsigned int url_expire;
char *suffix;
+ char *symbol;
+ char *metric;
GHashTable *hosters;
GHashTable *whitelist;
unsigned use_redirector:1;
@@ -144,6 +147,18 @@ surbl_module_init (struct config_file *cfg, struct module_ctx **ctx)
else {
surbl_module_ctx->suffix = DEFAULT_SURBL_SUFFIX;
}
+ if ((value = get_module_opt (cfg, "surbl", "symbol")) != NULL) {
+ surbl_module_ctx->symbol = value;
+ }
+ else {
+ surbl_module_ctx->symbol = DEFAULT_SURBL_SYMBOL;
+ }
+ if ((value = get_module_opt (cfg, "surbl", "metric")) != NULL) {
+ surbl_module_ctx->metric = value;
+ }
+ else {
+ surbl_module_ctx->metric = DEFAULT_METRIC;
+ }
surbl_module_ctx->hosters = g_hash_table_new (g_str_hash, g_str_equal);
surbl_module_ctx->whitelist = g_hash_table_new (g_str_hash, g_str_equal);
@@ -265,13 +280,14 @@ static void
dns_callback (int result, char type, int count, int ttl, void *addresses, void *data)
{
struct memcached_param *param = (struct memcached_param *)data;
- struct filter_result *res;
/* If we have result from DNS server, this url exists in SURBL, so increase score */
if (result != DNS_ERR_NONE || type != DNS_IPv4_A) {
msg_info ("surbl_check: url %s is in surbl %s", param->url->host, surbl_module_ctx->suffix);
- res = TAILQ_LAST (&param->task->results, resultsq);
- res->mark += surbl_module_ctx->weight;
+ insert_result (param->task, surbl_module_ctx->metric, surbl_module_ctx->symbol, 1);
+ }
+ else {
+ insert_result (param->task, surbl_module_ctx->metric, surbl_module_ctx->symbol, 0);
}
param->task->save.saved --;
@@ -292,7 +308,6 @@ memcached_callback (memcached_ctx_t *ctx, memc_error_t error, void *data)
{
struct memcached_param *param = (struct memcached_param *)data;
int *url_count;
- struct filter_result *res;
char *surbl_req;
switch (ctx->op) {
@@ -335,8 +350,7 @@ memcached_callback (memcached_ctx_t *ctx, memc_error_t error, void *data)
/* Do not check DNS for urls that have count more than max_urls */
if (*url_count > surbl_module_ctx->max_urls) {
msg_info ("memcached_callback: url '%s' has count %d, max: %d", struri (param->url), *url_count, surbl_module_ctx->max_urls);
- res = TAILQ_LAST (&param->task->results, resultsq);
- res->mark += surbl_module_ctx->weight;
+ insert_result (param->task, surbl_module_ctx->metric, surbl_module_ctx->symbol, 1);
}
(*url_count) ++;
memc_set (param->ctx, param->ctx->param, surbl_module_ctx->url_expire);