rspamd_config_add_metric_symbol (cfg,
"DKIM_SIGN", 0.0, "DKIM signature fake symbol",
"dkim", RSPAMD_SYMBOL_FLAG_IGNORE, 1, 1);
+ rspamd_config_add_metric_symbol (cfg,
+ "DKIM_TRACE", 0.0, "DKIM trace symbol",
+ "dkim", RSPAMD_SYMBOL_FLAG_IGNORE, 1, 1);
}
else {
if (all_done) {
DL_FOREACH (first, cur) {
- const gchar *symbol = NULL;
+ const gchar *symbol = NULL, *trace = NULL;
int symbol_weight = 1;
if (cur->ctx == NULL) {
}
if (cur->res == DKIM_REJECT) {
symbol = dkim_module_ctx->symbol_reject;
+ trace = "-";
symbol_weight = cur->mult_deny * 1.0;
}
else if (cur->res == DKIM_CONTINUE) {
symbol = dkim_module_ctx->symbol_allow;
+ trace = "+";
symbol_weight = cur->mult_allow * 1.0;
}
else if (cur->res == DKIM_PERM_ERROR) {
+ trace = "~";
symbol = dkim_module_ctx->symbol_permfail;
}
else if (cur->res == DKIM_TRYAGAIN) {
+ trace = "?";
symbol = dkim_module_ctx->symbol_tempfail;
}
if (symbol != NULL) {
+ const gchar *domain = rspamd_dkim_get_domain (cur->ctx);
+ gsize tracelen;
+ gchar *tracebuf;
+
+ tracelen = strlen (domain) + 3; /* :<trace>\0 */
+ tracebuf = rspamd_mempool_alloc (cur->task->task_pool,
+ tracelen);
+ rspamd_snprintf (tracebuf, tracelen, "%s:%s", domain, trace);
+
rspamd_task_insert_result (cur->task,
symbol,
symbol_weight,
- rspamd_dkim_get_domain (cur->ctx));
+ domain);
+ rspamd_task_insert_result (cur->task,
+ "DKIM_TRACE",
+ 0.0,
+ tracebuf);
}
}
rspamd_session_watcher_pop (res->task->s, res->w);