Import/Export Rules
Summary: Demonstrates how to import and export SpamSieve’s rules via AppleScript.
Requires: SpamSieve
Install Location: wherever
Last Modified: 2019-10-02
Description
You can copy all your blocklist and whitelist rules to another Mac by following the instructions here.
Running this script will export certain blocklist rules (from address rules with “ends with,” “starts with,” and “regex” styles) to the clipboard. Paste the clipboard into a new script in AppleScript Editor. When you run that script, it will re-create the rules in SpamSieve (without overwriting the existing rules).
Installation Instructions · Download in Compiled Format · Download in Text Format
Script
on
run
tell
application
"SpamSieve"
set
importScript
to
"tell application \"SpamSieve\"" &
return
set
importScript
to
importScript & "tell blocklist" &
return
set
importScript
to
importScript &
my
makeRules(
blocklist,
ends with style
, "ends with style",
from field
, "from field")
set
importScript
to
importScript &
my
makeRules(
blocklist,
starts with style
, "starts with style",
from field
, "from field")
set
importScript
to
importScript &
my
makeRules(
blocklist,
regex style
, "regex style",
from field
, "from field")
set
importScript
to
importScript & "end tell" &
return
set
importScript
to
importScript & "end tell"
set the clipboard to
importScript
end
tell
end
run
on
makeRules(
theList,
theStyle,
theStyleText,
theField,
theFieldText)
tell
application
"SpamSieve"
tell
theList
set
theResult
to
""
set
theRules
to
get
every
rule
whose
match style
is
theStyle
and
match field
is
theField
repeat
with
r
in
theRules
set
theResult
to
theResult &
my
makeRule(
r's
text to match,
theStyleText,
theFieldText)
end
repeat
end
tell
end
tell
return
theResult
end
makeRules
on
makeRule(
theText,
theStyle,
theField)
return
"make rule with properties {text to match: " &
my
escape(
theText) & ", match field: " &
theField & ", match style: " &
theStyle & "}" &
return
end
makeRule
on
escape(
theText)
set
bs
to
"\\"
set
q
to
"\""
set
theText
to
my
replace(
theText,
bs,
bs &
bs)
set
theText
to
my
replace(
theText,
q,
bs &
q)
return
q &
theText &
q
end
escape
on
replace(
theText,
searchText,
replaceText)
set
AppleScript's
text item delimiters
to
searchText
set
i
to
text items
of
theText
set
AppleScript's
text item delimiters
to
replaceText
return
i
as
string
end
replace