From deaf66ab8b6b75e369f8bb90fbfca58bd0c66714 Mon Sep 17 00:00:00 2001 From: Lyes Saadi Date: Mon, 22 Dec 2025 13:50:02 +0100 Subject: [PATCH] Adding Crans filters --- hosts/zora/users.nix | 3 +- modules/server/taf/default.nix | 108 ++++++++++++++++++++++++++++++++- 2 files changed, 108 insertions(+), 3 deletions(-) diff --git a/hosts/zora/users.nix b/hosts/zora/users.nix index 6fb39ce..6ca80a8 100644 --- a/hosts/zora/users.nix +++ b/hosts/zora/users.nix @@ -1,9 +1,10 @@ -{ ... }: +{ pkgs, ... }: { users.users.deploy = { group = "deploy"; isSystemUser = true; + shell = pkgs.bashInteractive; openssh.authorizedKeys.keys = [ "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGdkiKdd3vTMd42AejLMoAjqQYd6jYDXojCbOAwV0g9+ deploy@zora" ]; diff --git a/modules/server/taf/default.nix b/modules/server/taf/default.nix index cbf6d1b..63a6fa1 100644 --- a/modules/server/taf/default.nix +++ b/modules/server/taf/default.nix @@ -48,23 +48,125 @@ ]; quota = "1T"; sieveScript = '' - require ["include", "fileinto", "mailbox", "copy", "regex", "variables"]; + require ["include", "fileinto", "mailbox", "copy", "regex", "variables", "imap4flags"]; include :personal "hiddensieve"; + # lyes.eu filters if address :is :domain "X-Original-To" "lyes.eu" { - if address :localpart :regex "X-Original-To" "^(([a-zA-Z]+\\.)*([a-zA-Z]+))(-([a-zA-Z0-9_.\\-]*))?''$" { + # If the mail comes from my crans mailbox + if address :is :localpart "X-Original-To" "crans" { + # Aurore Support + if header :contains "List-Id" "" { + fileinto :create "Crans.aurore.support"; + } + # Mailman moderation request + elsif address :matches :all "To" "*-owner@lists.crans.org" { + fileinto :create "Crans.moderation"; + } + # Crans Bureau + elsif anyof ( + header :contains "List-Id" "", + header :contains "List-Id" "", + header :contains "List-Id" "" + ) { + fileinto :create "Crans.crans.bureau"; + } + # Crans CA + elsif header :contains "List-Id" "" { + fileinto :create "Crans.crans.ca"; + } + # Crans Nounou + elsif anyof ( + header :contains "List-Id" "", + header :contains "List-Id" "" + ) { + fileinto :create "Crans.crans.nounou"; + } + # Crans Root + elsif anyof ( + address :is :all "From" "root@crans.org", + address :is :all "From" "www-data@crans.org" + ) { + fileinto :create "Crans.crans.root"; + } + # Crans Root Postmaster + elsif address :is :all "To" "postmaster@crans.org" { + addflag "\\Seen"; + fileinto :create "Crans.crans.root.postmaster"; + } + # Crans Root Mailer + elsif address :is :all "From" "MAILER-DAEMON@crans.org" { + fileinto :create "Crans.crans.root.mailer"; + } + # Crans Gitlab + elsif address :is :all "From" "gitlab@crans.org" { + fileinto :create "Crans.crans.gitlab"; + } + # Crans Wiki + elsif address :is :all "From" "wiki@crans.org" { + fileinto :create "Crans.crans.wiki"; + } + # Aurore CA + elsif header :contains "List-Id" "" { + fileinto :create "Crans.aurore.ca"; + } + # BDL + elsif anyof ( + header :contains "List-Id" "", + header :contains "List-Id" "" + ) { + fileinto :create "Crans.asso.bdl"; + } + # Med + elsif anyof ( + header :contains "List-Id" "", + header :contains "List-Id" "" + ) { + fileinto :create "Crans.asso.med"; + } + # NL BDE + elsif header :contains "List-Id" "" { + fileinto :create "Crans.asso.nl.bde"; + } + # NL BDA + elsif header :contains "List-Id" "" { + fileinto :create "Crans.asso.nl.bda"; + } + # Any other associative mail + elsif anyof ( + header :contains "List-Id" "", + header :contains "List-Id" "", + header :matches "List-Id" "<*.lists.crans.org>" + ) { + fileinto :create "Crans.asso"; + } + # Otherwise it's for the generic mailbox + else { + fileinto :create "Crans"; + } + } + + # Otherwise it's for my different accounts + # It's automatically sorted using the localpart + elsif address :localpart :regex "X-Original-To" "^(([a-zA-Z]+\\.)*([a-zA-Z]+))(-([a-zA-Z0-9_.\\-]*))?''$" { set :lower "sub_folder" "''${1}"; set "mbox_candidate" "INBOX.''${sub_folder}"; fileinto :create "''${mbox_candidate}"; } + + # Other unknown origin else { fileinto :create "INBOX.other"; } } + + # It's destined to my main inbox elsif address :is "X-Original-To" "lyes@mail.lyes.eu" { fileinto :create "INBOX"; } + + # Other unknown origin else { fileinto :create "INBOX.other"; } @@ -95,6 +197,8 @@ # } # ''; + services.dovecot2.sieve.extensions = [ "imap4flags" ]; + services.roundcube = { enable = true;