]> git.immae.eu Git - perso/Immae/Config/Nix.git/blobdiff - modules/private/mail/postfix.nix
Retry dovecot submission on failure
[perso/Immae/Config/Nix.git] / modules / private / mail / postfix.nix
index 3febe62ef623b9a0a33f84b0a12dcd2e89077bb1..21f12ffabe99d6a31ee1643f4d7b3e9ba7e0a991 100644 (file)
             # here.
             rspamc_dovecot = pkgs.writeScriptBin "rspamc_dovecot" ''
               #! ${pkgs.stdenv.shell}
+              set -o pipefail
               sender="$1"
               original_recipient="$2"
               user="$3"
 
               ${pkgs.coreutils}/bin/cat - | \
-                (${pkgs.rspamd}/bin/rspamc -h ${config.myServices.mail.rspamd.sockets.worker-controller} -c bayes -d "$user" --mime || true) | \
+                ${pkgs.rspamd}/bin/rspamc -h ${config.myServices.mail.rspamd.sockets.worker-controller} -c bayes -d "$user" --mime | \
                 ${pkgs.dovecot}/libexec/dovecot/dovecot-lda -f "$sender" -a "$original_recipient" -d "$user"
+              if echo ''${PIPESTATUS[@]} | ${pkgs.gnugrep}/bin/grep -qE '^[0 ]+$'; then
+                exit 0
+              else
+                # src/global/sys_exits.h to retry
+                exit 75
+              fi
               '';
           in [
             "flags=ODRhu" "user=vhost:vhost"