Import Blocklist Regex Rules

Summary: Creates blocklist rules from a file containing regular expressions.
Requires: SpamSieve
Last Modified: 2019-10-02

Description

Given a file containing one regular expression per line (e.g. exported from another spam filter), this script creates blocklist rules for SpamSieve that match those regexes against the message body and subject. SpamSieve uses PCRE regular expressions.

Installation Instructions · Download in Compiled Format · Download in Text Format

Script

set _file to my promptForFile()
set _regexes to my linesFromFile(_file)
repeat with _regex in _regexes
    
my makeBlocklistRulesForRegex(_regex)
end repeat

on promptForFile()
    
set _types to {"public.plain-text"}
    
set _prompt to "Choose a text file with one blocklist regex per line."
    
return choose file of type _types with prompt _prompt
end promptForFile

on linesFromFile(_file)
    
set _fd to open for access _file
    
set _result to read _fd using delimiter {return, ASCII character 13}
    
close access _fd
    
return _result
end linesFromFile

on makeBlocklistRulesForRegex(_regex)
    
tell application "SpamSieve"
        
set _regex to "(?-i)" & _regex -- Make case-sensitive
        
tell blocklist
            
repeat with _field in {body, subject}
                
set _properties to {match field:_field, match style:regex style, text to match:_regex}
                
make new rule with properties _properties
            
end repeat
        
end tell
    
end tell
end makeBlocklistRulesForRegex