From 54e73273fb20b353d512fd845b6d2c8ade0efbfc Mon Sep 17 00:00:00 2001 From: Thomas Oettli Date: Tue, 21 Sep 2021 11:10:57 +0200 Subject: [PATCH] handle BATV (Bounce Address Tag Validation) in whitelist --- pymodmilter/whitelist.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/pymodmilter/whitelist.py b/pymodmilter/whitelist.py index 5595857..c744eb5 100644 --- a/pymodmilter/whitelist.py +++ b/pymodmilter/whitelist.py @@ -31,6 +31,8 @@ class WhitelistBase: self.logger = logging.getLogger(__name__) self.valid_entry_regex = re.compile( r"^[a-zA-Z0-9_.=+-]*?(@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+)?$") + self.batv_regex = re.compile( + r"^prvs=[0-9]{4}[0-9A-Fa-f]{6}=") def check(self, mailfrom, recipient): "Check if mailfrom/recipient combination is whitelisted." @@ -144,6 +146,8 @@ class DatabaseWhitelist(WhitelistBase): def check(self, mailfrom, recipient): # check if mailfrom/recipient combination is whitelisted super().check(mailfrom, recipient) + mailfrom = self.batv_regex.sub("", mailfrom, count=1) + recipient = self.batv_regex.sub("", recipient, count=1) # generate list of possible mailfroms self.logger.debug( @@ -227,6 +231,9 @@ class DatabaseWhitelist(WhitelistBase): comment, permanent) + mailfrom = self.batv_regex.sub("", mailfrom, count=1) + recipient = self.batv_regex.sub("", recipient, count=1) + try: self.model.create( mailfrom=mailfrom,