Add a systemd timer to learn spam

This commit is contained in:
Andreas Zweili 2022-12-30 16:00:06 +01:00
parent 3fc925f27d
commit 2a6cef6a29
2 changed files with 29 additions and 16 deletions

View File

@ -10,6 +10,9 @@ let
});
in
{
imports = [
(import "${custom.inputs.self}/modules/telegram-notifications" { inherit custom; })
];
environment.systemPackages = [
mailserver-setup
];
@ -31,7 +34,6 @@ in
volumes = [
"/etc/localtime:/etc/localtime:ro"
"/var/lib/acme/mail.zweili.org:/etc/letsencrypt/live/mail.zweili.org:ro"
"${custom.inputs.self}/modules/docker-mailserver/sa-learn:/etc/cron.d/sa-learn"
];
extraOptions = [
''--mount=type=volume,source=maildata,target=/var/mail,volume-driver=local,volume-opt=type=nfs,volume-opt=device=:/server_data/docker-mailserver/maildata,"volume-opt=o=addr=10.7.89.108,rw,nfsvers=4.0,nolock,hard,noatime"''
@ -44,4 +46,30 @@ in
];
};
};
systemd.timers."mailserver-sa-learn" = {
wantedBy = [ "timers.target" ];
partOf = [ "mailserver-sa-learn.service" ];
timerConfig = {
OnCalendar = "daily";
};
};
systemd.services."mailserver-sa-learn" = {
serviceConfig = {
User = "root";
Type = "oneshot";
};
onFailure = [ "unit-status-telegram@%n.service" ];
script = ''
# learn spam
${pkgs.docker}/bin/docker exec mailserver sa-learn --spam /var/mail/2li.ch/*/.Junk --dbpath /var/mail-state/lib-amavis/.spamassassin
${pkgs.docker}/bin/docker exec mailserver sa-learn --spam /var/mail/zweili.ch/*/.Junk --dbpath /var/mail-state/lib-amavis/.spamassassin
# ham: archive directories
${pkgs.docker}/bin/docker exec mailserver sa-learn --ham /var/mail/2li.ch/*/.Archive* --dbpath /var/mail-state/lib-amavis/.spamassassin
${pkgs.docker}/bin/docker exec mailserver sa-learn --ham /var/mail/zweili.ch/*/.Archive* --dbpath /var/mail-state/lib-amavis/.spamassassin
# ham: inbox subdirectories
${pkgs.docker}/bin/docker exec mailserver sa-learn --ham /var/mail/2li.ch/*/cur* --dbpath /var/mail-state/lib-amavis/.spamassassin
${pkgs.docker}/bin/docker exec mailserver sa-learn --ham /var/mail/zweili.ch/*/cur* --dbpath /var/mail-state/lib-amavis/.spamassassin
'';
};
}

View File

@ -1,15 +0,0 @@
# This assumes you're having `environment: ONE_DIR=1` in the env-mailserver,
# with a consolidated config in `/var/mail-state`
#
# m h dom mon dow user command
#
# Everyday 3:00AM, learn spam from all users of a domain
# spam: junk directory
0 8 * * * root sa-learn --spam /var/mail/2li.ch/*/.Junk --dbpath /var/mail-state/lib-amavis/.spamassassin
15 8 * * * root sa-learn --spam /var/mail/zweili.ch/*/.Junk --dbpath /var/mail-state/lib-amavis/.spamassassin
# ham: archive directories
30 8 * * * root sa-learn --ham /var/mail/2li.ch/*/.Archive* --dbpath /var/mail-state/lib-amavis/.spamassassin
45 8 * * * root sa-learn --ham /var/mail/zweili.ch/*/.Archive* --dbpath /var/mail-state/lib-amavis/.spamassassin
# ham: inbox subdirectories
00 9 * * * root sa-learn --ham /var/mail/2li.ch/*/cur* --dbpath /var/mail-state/lib-amavis/.spamassassin
15 9 * * * root sa-learn --ham /var/mail/zweili.ch/*/cur* --dbpath /var/mail-state/lib-amavis/.spamassassin