${stateDir}/mail
'';
*/
+ preStart = ''
+ ln -fns -t ${stateDir}/virtual/ \
+ ${dovecot-virtual-all}/All \
+ ${dovecot-virtual-recents}/Recents
+ '';
serviceConfig = {
#ExecStart = lib.mkForce "${pkgs.utillinux}/bin/setarch x86_64 --addr-no-randomize /bin/sh -c 'LD_PRELOAD=${pkgs.gcc-unwrapped.lib}/lib/libasan.so ${pkgs.dovecot}/sbin/dovecot -F'";
# Dovecot2 does not work with environment.memoryAllocator.provider="scudo"
# Scudo ERROR: CHECK failed at /build/compiler-rt-7.1.0.src/lib/scudo/../sanitizer_common/sanitizer_allocator_primary64.h:
# 644 ((beg)) == ((address_range.MapOrDie(beg, size))) (4398046511092, 4398046507008)
BindReadOnlyPaths = [ "/dev/null:/etc/ld-nix.so.preload" ];
+ StateDirectory = ["dovecot/virtual"];
};
};
#users.users."${dovecot2.mailUser}".isSystemUser = true; # Fix nixpkgs
#add rule inet filter net2fw tcp dport 995 counter accept comment "POP3S"
add rule inet filter net2fw tcp dport 4190 counter accept comment "Sieve"
'';
+fileSystems."/var/lib/dovecot" = {
+ device = "rpool/var/mail";
+ fsType = "zfs";
+};
+services.sanoid.datasets."rpool/var/mail" = {
+ use_template = [ "snap" ];
+ hourly = 12;
+ daily = 7;
+};
services.dovecot2 = {
enable = true;
modules = [
protocol lda {
hostname = ${networking.domain}
mail_plugins = $mail_plugins sieve
- postmaster_address = postmaster+dovecot+lda@${networking.domain}
+ postmaster_address = root+dovecot+lda@${networking.domain}
syslog_facility = mail
}
lda_mailbox_autocreate = yes
protocol lmtp {
mail_plugins = $mail_plugins sieve
- postmaster_address = postmaster+dovecot+lmtp@${networking.domain}
+ postmaster_address = root+dovecot+lmtp@${networking.domain}
}
service lmtp {
process_min_avail = ${toString host.CPUs}
USER=$2
cat << EOF | ${pkgs.dovecot}/libexec/dovecot/dovecot-lda -d $USER -o
"plugin/quota=maildir:User quota:noenforcing"
- From: postmaster@${networking.domain}
+ From: root+docevot@${networking.domain}
Subject: [WARNING] your mailbox is now $PERCENT% full.
Please remove some mails to make room for new ones.