summaryrefslogtreecommitdiffstats
path: root/modules/mail
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2020-04-25 16:30:38 -0400
committerJesse Luehrs <doy@tozt.net>2020-04-25 16:30:38 -0400
commitc24974dc397a1a5ac8cb7612aef596443e4d8542 (patch)
treed2bcb921caec1921d2ebb0ab86af299630e47b39 /modules/mail
parentb321a94b743f0002d1d1d839e935b9d8b6d014d9 (diff)
downloadpuppet-tozt-c24974dc397a1a5ac8cb7612aef596443e4d8542.tar.gz
puppet-tozt-c24974dc397a1a5ac8cb7612aef596443e4d8542.zip
add spam learning
Diffstat (limited to 'modules/mail')
-rw-r--r--modules/mail/files/learn_spam24
-rw-r--r--modules/mail/manifests/mailu.pp8
2 files changed, 32 insertions, 0 deletions
diff --git a/modules/mail/files/learn_spam b/modules/mail/files/learn_spam
new file mode 100644
index 0000000..5bdbd0d
--- /dev/null
+++ b/modules/mail/files/learn_spam
@@ -0,0 +1,24 @@
+#!/bin/bash
+set -eu
+set -o pipefail
+
+cd /media/persistent
+mkdir -p tmp
+dir=$(mktemp -d -p /media/persistent/tmp learnspam.XXXXXXXX)
+trap 'rm -rf $dir' EXIT
+
+ham="${dir}/ham"
+spam="${dir}/spam"
+mkdir "$ham" "$spam"
+
+find /media/persistent/mail -type f -mtime -90 | grep /cur/ | grep -v Sent | grep -v Junk | xargs -i ln {} "${dir}/ham"
+find /media/persistent/mail -type f -mtime -90 | grep /cur/ | grep -v Sent | grep Junk | xargs -i ln {} "${dir}/spam"
+
+docker-compose exec imap rspamc -h antispam:11334 -P mailu learn_ham "$ham"
+docker-compose exec imap rspamc -h antispam:11334 -P mailu learn_spam "$spam"
+
+docker-compose exec imap rspamc -h antispam:11334 -P mailu -f 13 fuzzy_add "$ham"
+docker-compose exec imap rspamc -h antispam:11334 -P mailu -f 11 fuzzy_del "$ham"
+
+docker-compose exec imap rspamc -h antispam:11334 -P mailu -f 11 fuzzy_add "$spam"
+docker-compose exec imap rspamc -h antispam:11334 -P mailu -f 13 fuzzy_del "$spam"
diff --git a/modules/mail/manifests/mailu.pp b/modules/mail/manifests/mailu.pp
index 4f7a348..82d596c 100644
--- a/modules/mail/manifests/mailu.pp
+++ b/modules/mail/manifests/mailu.pp
@@ -1,5 +1,6 @@
class mail::mailu {
include mail::persistent
+ include cron
include docker
include haveged
@@ -17,6 +18,13 @@ class mail::mailu {
"/media/persistent/.env.common":
source => "puppet:///modules/mail/mailu.env",
require => Class["mail::persistent"];
+ '/etc/cron.daily/learn_spam':
+ source => 'puppet:///modules/mail/learn_spam',
+ mode => '0755',
+ require => [
+ Service['mailu'],
+ Class['cron'],
+ ];
}
exec { "generate mailu secret key":