From 41c343c336dff263b4bfb37086f772409a7afafe Mon Sep 17 00:00:00 2001 From: Dominik Polakovics Date: Mon, 27 Nov 2023 00:39:54 +0100 Subject: [PATCH] add sieve-spam-filter fix nb hardware --- .../pkgs/sieve-spam-filter/default.nix | 28 +++++++++++++++++++ .../sieve-spam-filter/src/move-to-spam.sieve | 5 ++++ .../sieve-spam-filter/src/report-ham.sieve | 15 ++++++++++ .../sieve-spam-filter/src/report-spam.sieve | 7 +++++ .../hardware-configuration.nix | 1 - 5 files changed, 55 insertions(+), 1 deletion(-) create mode 100644 hosts/mail.cloonar.com/pkgs/sieve-spam-filter/default.nix create mode 100644 hosts/mail.cloonar.com/pkgs/sieve-spam-filter/src/move-to-spam.sieve create mode 100644 hosts/mail.cloonar.com/pkgs/sieve-spam-filter/src/report-ham.sieve create mode 100644 hosts/mail.cloonar.com/pkgs/sieve-spam-filter/src/report-spam.sieve diff --git a/hosts/mail.cloonar.com/pkgs/sieve-spam-filter/default.nix b/hosts/mail.cloonar.com/pkgs/sieve-spam-filter/default.nix new file mode 100644 index 0000000..651fc63 --- /dev/null +++ b/hosts/mail.cloonar.com/pkgs/sieve-spam-filter/default.nix @@ -0,0 +1,28 @@ +{ stdenv +, makeWrapper +, rspamd +, +}: +stdenv.mkDerivation { + name = "sieve-rspamd-filter"; + nativeBuildInputs = [ makeWrapper ]; + src = ./src; + + installPhase = '' + for sieve in $src/*.sieve; do + install -D "$sieve" "$out/share/sieve-rspamd-filter/$(basename $sieve)" + done + + mkdir $out/bin + cat > $out/bin/learn-spam.sh <<'EOF' + #!/bin/sh + exec ${rspamd}/bin/rspamc -h /run/rspamd.sock learn_spam + EOF + cat > $out/bin/learn-ham.sh <<'EOF' + #!/bin/sh + exec ${rspamd}/bin/rspamc -h /run/rspamd.sock learn_ham + EOF + chmod +x $out/bin/*.sh + ''; +} + diff --git a/hosts/mail.cloonar.com/pkgs/sieve-spam-filter/src/move-to-spam.sieve b/hosts/mail.cloonar.com/pkgs/sieve-spam-filter/src/move-to-spam.sieve new file mode 100644 index 0000000..4643ffc --- /dev/null +++ b/hosts/mail.cloonar.com/pkgs/sieve-spam-filter/src/move-to-spam.sieve @@ -0,0 +1,5 @@ +require ["fileinto"]; + +if header :is "X-Spam" "Yes" { + fileinto "Spam"; +} diff --git a/hosts/mail.cloonar.com/pkgs/sieve-spam-filter/src/report-ham.sieve b/hosts/mail.cloonar.com/pkgs/sieve-spam-filter/src/report-ham.sieve new file mode 100644 index 0000000..6217a90 --- /dev/null +++ b/hosts/mail.cloonar.com/pkgs/sieve-spam-filter/src/report-ham.sieve @@ -0,0 +1,15 @@ +require ["vnd.dovecot.pipe", "copy", "imapsieve", "environment", "variables"]; + +if environment :matches "imap.mailbox" "*" { + set "mailbox" "${1}"; +} + +if string "${mailbox}" "Trash" { + stop; +} + +if environment :matches "imap.user" "*" { + set "username" "${1}"; +} + +pipe :copy "learn-ham.sh" [ "${username}" ]; diff --git a/hosts/mail.cloonar.com/pkgs/sieve-spam-filter/src/report-spam.sieve b/hosts/mail.cloonar.com/pkgs/sieve-spam-filter/src/report-spam.sieve new file mode 100644 index 0000000..9d4c74b --- /dev/null +++ b/hosts/mail.cloonar.com/pkgs/sieve-spam-filter/src/report-spam.sieve @@ -0,0 +1,7 @@ +require ["vnd.dovecot.pipe", "copy", "imapsieve", "environment", "variables"]; + +if environment :matches "imap.user" "*" { + set "username" "${1}"; +} + +pipe :copy "learn-spam.sh" [ "${username}" ]; diff --git a/hosts/nb-01.cloonar.com/hardware-configuration.nix b/hosts/nb-01.cloonar.com/hardware-configuration.nix index e90a71c..0f9cca6 100644 --- a/hosts/nb-01.cloonar.com/hardware-configuration.nix +++ b/hosts/nb-01.cloonar.com/hardware-configuration.nix @@ -26,7 +26,6 @@ luks.devices."nixos-enc" = { crypttabExtraOpts = [ "fido2-device=auto" ]; device = "/dev/disk/by-uuid/7435d48f-f942-485b-9817-328ad3fc0b93"; - }; }; systemd.enable = true; };