struct spf_record *rec;
struct spf_addr *addr;
struct spf_resolved_element *resolved;
- gchar *ptr_host;
+ const gchar *ptr_host;
spf_action_t cur_action;
gboolean in_include;
};
}
}
+static const gchar *
+rspamd_spf_dns_action_to_str (spf_action_t act)
+{
+ const char *ret = "unknown";
+
+ switch (act) {
+ case SPF_RESOLVE_MX:
+ ret = "MX";
+ break;
+ case SPF_RESOLVE_A:
+ ret = "A";
+ break;
+ case SPF_RESOLVE_PTR:
+ ret = "PTR";
+ break;
+ case SPF_RESOLVE_AAA:
+ ret = "AAAA";
+ break;
+ case SPF_RESOLVE_REDIRECT:
+ ret = "REDIRECT";
+ break;
+ case SPF_RESOLVE_INCLUDE:
+ ret = "INCLUDE";
+ break;
+ case SPF_RESOLVE_EXISTS:
+ ret = "EXISTS";
+ break;
+ case SPF_RESOLVE_EXP:
+ ret = "EXP";
+ break;
+ }
+
+ return ret;
+}
+
static struct spf_addr *
rspamd_spf_new_addr (struct spf_record *rec,
struct spf_resolved_element *resolved, const gchar *elt)
reply->code == RDNS_RC_TIMEOUT) {
cb->addr->flags |= RSPAMD_SPF_FLAG_TEMPFAIL;
msg_info_spf (
- "<%s>: spf error for domain %s: cannot resolve DNS record for"
+ "<%s>: spf error for domain %s: cannot resolve %s DNS record for"
" %s: %s",
task->message_id,
cb->rec->sender_domain,
- cb->resolved->cur_domain,
+ rspamd_spf_dns_action_to_str (cb->cur_action),
+ cb->ptr_host,
rdns_strerror (reply->code));
}
rec->dns_requests++;
cb = rspamd_mempool_alloc (task->task_pool, sizeof (struct spf_dns_cb));
cb->rec = rec;
+ cb->ptr_host = host;
cb->addr = addr;
cb->cur_action = SPF_RESOLVE_A;
cb->resolved = resolved;
cb->rec = rec;
cb->addr = addr;
cb->cur_action = SPF_RESOLVE_MX;
+ cb->ptr_host = host;
cb->resolved = resolved;
msg_debug_spf ("resolve mx for %s", host);
cb->cur_action = SPF_RESOLVE_INCLUDE;
addr->m.idx = rec->resolved->len;
cb->resolved = rspamd_spf_new_addr_list (rec, domain);
+ cb->ptr_host = domain;
/* Set reference */
addr->flags |= RSPAMD_SPF_FLAG_REFRENCE;
msg_debug_spf ("resolve include %s", domain);
cb->addr = addr;
cb->cur_action = SPF_RESOLVE_REDIRECT;
cb->resolved = rspamd_spf_new_addr_list (rec, domain);
+ cb->ptr_host = domain;
msg_debug_spf ("resolve redirect %s", domain);
if (make_dns_request_task_forced (task,
cb->addr = addr;
cb->cur_action = SPF_RESOLVE_EXISTS;
cb->resolved = resolved;
+ cb->ptr_host = host;
msg_debug_spf ("resolve exists %s", host);
if (make_dns_request_task_forced (task,