diff --git a/data/Dockerfiles/dovecot/imapsync_runner.pl b/data/Dockerfiles/dovecot/imapsync_runner.pl index 5b297abd9..d3aed97b3 100644 --- a/data/Dockerfiles/dovecot/imapsync_runner.pl +++ b/data/Dockerfiles/dovecot/imapsync_runner.pl @@ -51,8 +51,8 @@ sub sig_handler { die "sig_handler received signal, preparing to exit...\n"; }; -open my $file, '<', "/etc/sogo/sieve.creds"; -my $creds = <$file>; +open my $file, '<', "/etc/sogo/sieve.creds"; +my $creds = <$file>; close $file; my ($master_user, $master_pass) = split /:/, $creds; my $sth = $dbh->prepare("SELECT id, @@ -166,11 +166,17 @@ while ($row = $sth->fetchrow_arrayref()) { $success = 1; } - $update = $dbh->prepare("UPDATE imapsync SET returned_text = ?, success = ?, exit_status = ? WHERE id = ?"); + $keep_job_active = 1; + if (defined $exit_status && $exit_status eq "EXIT_AUTHENTICATION_FAILURE_USER1") { + $keep_job_active = 0; + } + + $update = $dbh->prepare("UPDATE imapsync SET returned_text = ?, success = ?, exit_status = ?, active = ? WHERE id = ?"); $update->bind_param( 1, ${stdout} ); $update->bind_param( 2, ${success} ); $update->bind_param( 3, ${exit_status} ); - $update->bind_param( 4, ${id} ); + $update->bind_param( 4, ${keep_job_active} ); + $update->bind_param( 5, ${id} ); $update->execute(); } catch { $update = $dbh->prepare("UPDATE imapsync SET returned_text = 'Could not start or finish imapsync', success = 0 WHERE id = ?"); diff --git a/docker-compose.yml b/docker-compose.yml index 5a32236ac..47583efc0 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -213,7 +213,7 @@ services: - sogo dovecot-mailcow: - image: mailcow/dovecot:1.161 + image: mailcow/dovecot:1.162 depends_on: - mysql-mailcow dns: