X-Git-Url: https://git.immae.eu/?p=perso%2FImmae%2FConfig%2FNix.git;a=blobdiff_plain;f=modules%2Fprivate%2Fmail%2Fdovecot.nix;fp=modules%2Fprivate%2Fmail%2Fdovecot.nix;h=0000000000000000000000000000000000000000;hp=b6fdc026efcd8a66d2e22f27c92de69d52ce78ed;hb=1a64deeb894dc95e2645a75771732c6cc53a79ad;hpb=fa25ffd4583cc362075cd5e1b4130f33306103f0 diff --git a/modules/private/mail/dovecot.nix b/modules/private/mail/dovecot.nix deleted file mode 100644 index b6fdc02..0000000 --- a/modules/private/mail/dovecot.nix +++ /dev/null @@ -1,292 +0,0 @@ -{ lib, pkgs, config, ... }: -let - sieve_bin = pkgs.runCommand "sieve_bin" { - buildInputs = [ pkgs.makeWrapper ]; - } '' - cp -a ${./sieve_bin} $out - chmod -R u+w $out - patchShebangs $out - for i in $out/*; do - wrapProgram "$i" --prefix PATH : ${lib.makeBinPath [ pkgs.coreutils ]} - done - ''; -in -{ - config = lib.mkIf config.myServices.mail.enable { - systemd.services.dovecot2.serviceConfig.Slice = "mail.slice"; - secrets.keys."dovecot/ldap" = { - user = config.services.dovecot2.user; - group = config.services.dovecot2.group; - permissions = "0400"; - text = '' - hosts = ${config.myEnv.mail.dovecot.ldap.host} - tls = yes - - dn = ${config.myEnv.mail.dovecot.ldap.dn} - dnpass = ${config.myEnv.mail.dovecot.ldap.password} - - auth_bind = yes - - ldap_version = 3 - - base = ${config.myEnv.mail.dovecot.ldap.base} - scope = subtree - - pass_filter = ${config.myEnv.mail.dovecot.ldap.filter} - pass_attrs = ${config.myEnv.mail.dovecot.ldap.pass_attrs} - - 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} - ''; - }; - - users.users.vhost = { - group = "vhost"; - uid = config.ids.uids.vhost; - }; - users.groups.vhost.gid = config.ids.gids.vhost; - - # https://blog.zeninc.net/index.php?post/2018/04/01/Un-annuaire-pour-les-gouverner-tous....... - services.dovecot2 = { - enable = true; - enablePAM = false; - enablePop3 = true; - enableImap = true; - enableLmtp = true; - protocols = [ "sieve" ]; - modules = [ - pkgs.dovecot_pigeonhole - pkgs.dovecot_fts-xapian - ]; - mailUser = "vhost"; - mailGroup = "vhost"; - createMailUser = false; - mailboxes = { - Trash = { auto = "subscribe"; specialUse = "Trash"; }; - Junk = { auto = "subscribe"; specialUse = "Junk"; }; - Sent = { auto = "subscribe"; specialUse = "Sent"; }; - Drafts = { auto = "subscribe"; specialUse = "Drafts"; }; - }; - mailLocation = "mbox:~/Mail:INBOX=~/Mail/Inbox:INDEX=~/.imap"; - sslServerCert = "/var/lib/acme/mail/fullchain.pem"; - sslServerKey = "/var/lib/acme/mail/key.pem"; - sslCACert = "/var/lib/acme/mail/fullchain.pem"; - extraConfig = builtins.concatStringsSep "\n" [ - # For printer which doesn’t support elliptic curve - '' - ssl_alt_cert = &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 - [ - "0 2 * * * root ${cron_script}/bin/cleanup-imap-folders" - ]; - security.acme.certs."mail-rsa" = { - postRun = '' - systemctl restart dovecot2.service - ''; - extraDomains = { - "imap.immae.eu" = null; - "pop3.immae.eu" = null; - }; - }; - security.acme.certs."mail" = { - postRun = '' - systemctl restart dovecot2.service - ''; - extraDomains = { - "imap.immae.eu" = null; - "pop3.immae.eu" = null; - }; - }; - }; -} -