From f4aaf2ad39f7a2e9cdd810616827f404bbd4ddf1 Mon Sep 17 00:00:00 2001 From: Raphael Michel Date: Wed, 18 Oct 2023 19:41:59 +0200 Subject: [PATCH] Mail settings: Add support for SPF redirect mechanism --- src/pretix/control/views/mailsetup.py | 5 +++++ src/tests/control/test_events.py | 3 ++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/pretix/control/views/mailsetup.py b/src/pretix/control/views/mailsetup.py index da637b785f..e095a9a6f7 100644 --- a/src/pretix/control/views/mailsetup.py +++ b/src/pretix/control/views/mailsetup.py @@ -73,6 +73,11 @@ def _check_spf_record(not_found_lookup_parts, spf_record, depth): rec_record = get_spf_record(hostname) if rec_record: _check_spf_record(not_found_lookup_parts, rec_record, depth + 1) + elif p.startswith('redirect='): + _, hostname = p.split('=') + rec_record = get_spf_record(hostname) + if rec_record: + _check_spf_record(not_found_lookup_parts, rec_record, depth + 1) def check_spf_record(lookup, spf_record): diff --git a/src/tests/control/test_events.py b/src/tests/control/test_events.py index d6d98a58d2..c76bcff29f 100644 --- a/src/tests/control/test_events.py +++ b/src/tests/control/test_events.py @@ -587,7 +587,8 @@ class EventsTest(SoupTest): @staticmethod def _fake_spf_record(hostname): return { - 'test.pretix.dev': 'v=spf1 a mx include:level2.pretix.dev ~all', + 'test.pretix.dev': 'v=spf1 redirect=_spf.pretix.dev', + '_spf.pretix.dev': 'v=spf1 a mx include:level2.pretix.dev ~all', 'level2.pretix.dev': 'v=spf1 a mx +include:level3.pretix.dev include:spftest.pretix.dev ' '-include:level4.pretix.dev ~all', 'level3.pretix.dev': 'v=spf1 a mx include:test2.pretix.dev ~all',