From 089f5093010d7002333987c0c545447201a4fa8d Mon Sep 17 00:00:00 2001 From: =?utf8?q?Isma=C3=ABl=20Bouya?= Date: Sun, 17 Nov 2019 14:47:58 +0100 Subject: [PATCH] Add automatic backup of received e-mails --- modules/private/mail/dovecot.nix | 15 ++++++++++++++- modules/private/mail/sieve_scripts/backup.sieve | 9 +++++++++ 2 files changed, 23 insertions(+), 1 deletion(-) create mode 100644 modules/private/mail/sieve_scripts/backup.sieve diff --git a/modules/private/mail/dovecot.nix b/modules/private/mail/dovecot.nix index 6c3b4b8..f52f263 100644 --- a/modules/private/mail/dovecot.nix +++ b/modules/private/mail/dovecot.nix @@ -92,6 +92,17 @@ in } '' + # ACL + '' + mail_plugins = $mail_plugins acl + plugin { + acl = vfile:${pkgs.writeText "dovecot-acl" '' + Backup/* owner lrp + ''} + acl_globals_only = yes + } + '' + # Full text search '' # needs to be bigger than any mailbox size @@ -117,6 +128,8 @@ in sieve_plugins = sieve_imapsieve sieve_extprograms imapsieve_url = sieve://127.0.0.1:4190 + sieve_before = file:${./sieve_scripts}/backup.sieve + # From elsewhere to Junk folder imapsieve_mailbox1_name = Junk imapsieve_mailbox1_causes = COPY APPEND @@ -225,7 +238,7 @@ in # Needs to come last if there are mail_plugins entries '' protocol imap { - mail_plugins = $mail_plugins imap_sieve + mail_plugins = $mail_plugins imap_sieve imap_acl } protocol lda { mail_plugins = $mail_plugins sieve diff --git a/modules/private/mail/sieve_scripts/backup.sieve b/modules/private/mail/sieve_scripts/backup.sieve new file mode 100644 index 0000000..c922999 --- /dev/null +++ b/modules/private/mail/sieve_scripts/backup.sieve @@ -0,0 +1,9 @@ +# vim: filetype=sieve +require ["copy","mailbox","fileinto","regex"]; +if not header :regex "subject" "^TestMailImmae ?$" { + if header :is "X-Spam" "Yes" { + fileinto :create :copy "Backup/Spam"; + } else { + fileinto :create :copy "Backup/Ham"; + } +} -- 2.41.0