X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fsrc%2Fspf.c;h=1955b5d968cf7646142a0b7c665cf38f8c70dc82;hb=2dc4c388544fb06a476f6526a705e15984cf1aa5;hp=8b7bf4bc9428a52f9fe271bf65ef6182fe48ad41;hpb=8743d3acaaa2262007aa2862ffecd6b19125e38d;p=user%2Fhenk%2Fcode%2Fexim.git diff --git a/src/src/spf.c b/src/src/spf.c index 8b7bf4bc9..1955b5d96 100644 --- a/src/src/spf.c +++ b/src/src/spf.c @@ -133,25 +133,18 @@ return spf_dns_server; -/* spf_init sets up a context that can be re-used for several - messages on the same SMTP connection (that come from the - same host with the same HELO string). -XXX the spf_server layer could usefully be separately init'd -given that it sets up a dns cache. -Return: Boolean success */ +/* Construct the SPF library stack. + Return: Boolean success. +*/ BOOL -spf_init(uschar *spf_helo_domain, uschar *spf_remote_addr) +spf_init(void) { -int debug = 0; SPF_dns_server_t * dc; +int debug = 0; -DEBUG(D_receive) - { - debug_printf("spf_init: %s %s\n", spf_helo_domain, spf_remote_addr); - debug = 1; - } +DEBUG(D_receive) debug = 1; /* We insert our own DNS access layer rather than letting the spf library do it, so that our dns access path is used for debug tracing and for the @@ -172,6 +165,30 @@ if (!(spf_server = SPF_server_new_dns(dc, debug))) DEBUG(D_receive) debug_printf("spf: SPF_server_new() failed.\n"); return FALSE; } + /* Quick hack to override the outdated explanation URL. + See https://www.mail-archive.com/mailop@mailop.org/msg08019.html */ + SPF_server_set_explanation(spf_server, "Please%_see%_http://www.open-spf.org/Why?id=%{S}&ip=%{C}&receiver=%{R}", &spf_response); + if (SPF_response_errcode(spf_response) != SPF_E_SUCCESS) + log_write(0, LOG_MAIN|LOG_PANIC_DIE, "%s", SPF_strerror(SPF_response_errcode(spf_response))); + +return TRUE; +} + + +/* Set up a context that can be re-used for several + messages on the same SMTP connection (that come from the + same host with the same HELO string). + +Return: Boolean success +*/ + +BOOL +spf_conn_init(uschar * spf_helo_domain, uschar * spf_remote_addr) +{ +DEBUG(D_receive) + debug_printf("spf_conn_init: %s %s\n", spf_helo_domain, spf_remote_addr); + +if (!spf_server && !spf_init()) return FALSE; if (SPF_server_set_rec_dom(spf_server, CS primary_hostname)) {