X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=modules%2Fprivate%2Fmail%2Fdovecot.nix;h=77f9bd71aca64c993494375139368a8d363b6dbc;hb=5400b9b6f65451d41a9106fae6fc00f97d83f4ef;hp=6c3b4b8e14660e5087718277d4810f08592128ed;hpb=98f8f4de86129f52b5c983d8f16ee310bd3b5b24;p=perso%2FImmae%2FConfig%2FNix.git diff --git a/modules/private/mail/dovecot.nix b/modules/private/mail/dovecot.nix index 6c3b4b8..77f9bd7 100644 --- a/modules/private/mail/dovecot.nix +++ b/modules/private/mail/dovecot.nix @@ -1,4 +1,4 @@ -{ lib, pkgs, config, myconfig, ... }: +{ lib, pkgs, config, ... }: let sieve_bin = pkgs.runCommand "sieve_bin" { buildInputs = [ pkgs.makeWrapper ]; @@ -24,26 +24,26 @@ in group = config.services.dovecot2.group; permissions = "0400"; text = '' - hosts = ${myconfig.env.mail.dovecot.ldap.host} + hosts = ${config.myEnv.mail.dovecot.ldap.host} tls = yes - dn = ${myconfig.env.mail.dovecot.ldap.dn} - dnpass = ${myconfig.env.mail.dovecot.ldap.password} + dn = ${config.myEnv.mail.dovecot.ldap.dn} + dnpass = ${config.myEnv.mail.dovecot.ldap.password} auth_bind = yes ldap_version = 3 - base = ${myconfig.env.mail.dovecot.ldap.base} + base = ${config.myEnv.mail.dovecot.ldap.base} scope = subtree - pass_filter = ${myconfig.env.mail.dovecot.ldap.filter} - pass_attrs = ${myconfig.env.mail.dovecot.ldap.pass_attrs} + pass_filter = ${config.myEnv.mail.dovecot.ldap.filter} + pass_attrs = ${config.myEnv.mail.dovecot.ldap.pass_attrs} - user_attrs = ${myconfig.env.mail.dovecot.ldap.user_attrs} - user_filter = ${myconfig.env.mail.dovecot.ldap.filter} - iterate_attrs = ${myconfig.env.mail.dovecot.ldap.iterate_attrs} - iterate_filter = ${myconfig.env.mail.dovecot.ldap.iterate_filter} + user_attrs = ${config.myEnv.mail.dovecot.ldap.user_attrs} + user_filter = ${config.myEnv.mail.dovecot.ldap.filter} + iterate_attrs = ${config.myEnv.mail.dovecot.ldap.iterate_attrs} + iterate_filter = ${config.myEnv.mail.dovecot.ldap.iterate_filter} ''; } ]; @@ -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;bindir=/var/lib/vhost/.sieve_bin + # From elsewhere to Junk folder imapsieve_mailbox1_name = Junk imapsieve_mailbox1_causes = COPY APPEND @@ -128,6 +141,11 @@ in imapsieve_mailbox2_causes = COPY imapsieve_mailbox2_before = file:${./sieve_scripts}/report_ham.sieve;bindir=/var/lib/vhost/.imapsieve_bin + # From anywhere to NoJunk folder + imapsieve_mailbox3_name = NoJunk + imapsieve_mailbox3_causes = COPY APPEND + imapsieve_mailbox3_before = file:${./sieve_scripts}/report_ham.sieve;bindir=/var/lib/vhost/.imapsieve_bin + sieve_pipe_bin_dir = ${sieve_bin} sieve_global_extensions = +vnd.dovecot.pipe +vnd.dovecot.environment @@ -225,7 +243,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 @@ -243,9 +261,9 @@ in services.cron.systemCronJobs = let cron_script = pkgs.writeScriptBin "cleanup-imap-folders" '' - ${pkgs.dovecot}/bin/doveadm expunge -A MAILBOX "Backup/*" NOT UID 1:256 - ${pkgs.dovecot}/bin/doveadm expunge -A MAILBOX Junk SEEN NOT FLAGGED BEFORE 4w - ${pkgs.dovecot}/bin/doveadm search -A MAILBOX Trash NOT FLAGGED BEFORE 4w + ${pkgs.dovecot}/bin/doveadm expunge -A MAILBOX "Backup/*" NOT FLAGGED BEFORE 8w 2>&1 > /dev/null | grep -v "Mailbox doesn't exist:" | grep -v "Info: Opening DB" + ${pkgs.dovecot}/bin/doveadm expunge -A MAILBOX Junk SEEN NOT FLAGGED BEFORE 4w 2>&1 > /dev/null | grep -v "Mailbox doesn't exist:" | grep -v "Info: Opening DB" + ${pkgs.dovecot}/bin/doveadm expunge -A MAILBOX Trash NOT FLAGGED BEFORE 4w 2>&1 > /dev/null | grep -v "Mailbox doesn't exist:" | grep -v "Info: Opening DB" ''; in [