Parse and Filter emails - Procmail enchancement
BSD-3-CLAUSE License
Managing rules with procmail is too cumbersome for me (especially if genericity is required).
So instead, this program will parse email's headers, use the associated rules, and print the destination folder for procmail to use it.
You can see rule and filter examples in app/classifier.hs.
Filter examples
tabulaRasa :: Match Any
tabulaRasa = for $ anyOf ["[email protected]", "[email protected]"]
haskellCafe :: Match Any
haskellCafe = mailingList $ anyOf ["haskell-cafe"]
-- Match if ANY of those 3 matches is a hit !
blacklist :: Match Any
blacklist = from (anyOf [".Meds="])
<> for (anyOf ["mediapart@"])
<> subject (anyOf ["pussy", "naked", "fuck"])
-- Match if ALL of those 2 matches is a hit !
fromGod :: Match All
fromGod = from (anyOf ["God"])
<> subject (anyOf ["It's God talking"])
Rule examples
let rules = [ --If all Filters Match then move email to this Dir
, [pourMoi] ->> const "./"
, [devNull] ->> const "/dev/null"
, [tabulaRasa] ->> const ".Compte.TabulaRasa/"
, [pourDomaine] ->> \hs -> ".Compte." <> virtualUser hs <> "/"
]
and procmailrc example in procmailrc file
DEST=`hmailfilter`
:0:
* .
$DEST