]> source.dussan.org Git - rspamd.git/commitdiff
[Feature] Treat SPF +all in a special way
authorVsevolod Stakhov <vsevolod@rspamd.com>
Wed, 17 Jul 2024 14:35:18 +0000 (15:35 +0100)
committerVsevolod Stakhov <vsevolod@rspamd.com>
Wed, 17 Jul 2024 14:35:18 +0000 (15:35 +0100)
Issue: #4996

src/libserver/spf.c
src/libserver/spf.h
src/lua/lua_spf.c
src/plugins/lua/spf.lua

index 32c020bf3b4bd1230cb9eda7a359807073012d87..afd77294badc636d1943656c6324bccf83cb05ea 100644 (file)
@@ -1418,7 +1418,7 @@ parse_spf_all(struct spf_record *rec, struct spf_addr *addr)
 
        /* Disallow +all */
        if (addr->mech == SPF_PASS) {
-               addr->flags |= RSPAMD_SPF_FLAG_INVALID;
+               addr->flags |= RSPAMD_SPF_FLAG_INVALID | RSPAMD_SPF_FLAG_PLUSALL;
                msg_notice_spf("domain %s allows any SPF (+all), ignore SPF record completely",
                                           rec->sender_domain);
        }
index cc0ee4c059438896c732287050400e50a14422a9..2487b6d574f0237f18978b6c02638247d4a8d321 100644 (file)
@@ -77,6 +77,7 @@ typedef enum spf_action_e {
 #define RSPAMD_SPF_FLAG_PERMFAIL (1u << 10u)
 #define RSPAMD_SPF_FLAG_RESOLVED (1u << 11u)
 #define RSPAMD_SPF_FLAG_CACHED (1u << 12u)
+#define RSPAMD_SPF_FLAG_PLUSALL (1u << 13u)
 
 /** Default SPF limits for avoiding abuse **/
 #define SPF_MAX_NESTING 10
index 46e72202f1677531b28d2e1d949e84e0cbaa9631..a9bcfc80c5cdea397bb43f325c88b5e46da0208b 100644 (file)
@@ -89,6 +89,8 @@ lua_load_spf(lua_State *L)
        lua_setfield(L, -2, "perm_fail");
        lua_pushinteger(L, RSPAMD_SPF_FLAG_CACHED);
        lua_setfield(L, -2, "cached");
+       lua_pushinteger(L, RSPAMD_SPF_FLAG_PLUSALL);
+       lua_setfield(L, -2, "plusall");
 
        lua_setfield(L, -2, "flags");
 
index 48f3c17bec7ebfd04882cfe0b2774b550f4a0e3d..b9add61a6b34e44f3e2f227399c43d97fe220f9a 100644 (file)
@@ -56,6 +56,7 @@ local symbols = {
   dnsfail = "R_SPF_DNSFAIL",
   permfail = "R_SPF_PERMFAIL",
   na = "R_SPF_NA",
+  plusall = "R_SPF_PLUSALL",
 }
 
 local default_config = {