Skip to content

Commit 2d0ccdb

Browse files
j4nmissytake
authored andcommitted
cmdeploy/{postfix,dovecot}/deployer.py: check config before restarting
postfix: also fail on warnings
1 parent 3abba6f commit 2d0ccdb

File tree

2 files changed

+17
-4
lines changed

2 files changed

+17
-4
lines changed

cmdeploy/src/cmdeploy/dovecot/deployer.py

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,9 +37,7 @@ def activate(self):
3737
restart = False if self.disable_mail else self.need_restart
3838

3939
systemd.service(
40-
name="disable dovecot for now"
41-
if self.disable_mail
42-
else "Start and enable Dovecot",
40+
name="Disable dovecot for now" if self.disable_mail else "Start and enable Dovecot",
4341
service="dovecot.service",
4442
running=False if self.disable_mail else True,
4543
enabled=False if self.disable_mail else True,
@@ -145,4 +143,11 @@ def _configure_dovecot(config: Config, debug: bool = False) -> (bool, bool):
145143
)
146144
daemon_reload |= restart_conf.changed
147145

146+
# Validate dovecot configuration before restart
147+
if need_restart:
148+
server.shell(
149+
name="Validate dovecot configuration",
150+
commands=["doveconf -n >/dev/null"],
151+
)
152+
148153
return need_restart, daemon_reload

cmdeploy/src/cmdeploy/postfix/deployer.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from pyinfra.operations import apt, files, systemd
1+
from pyinfra.operations import apt, files, server, systemd
22

33
from cmdeploy.basedeploy import Deployer, get_resource
44

@@ -77,6 +77,14 @@ def configure(self):
7777
dest="/etc/systemd/system/[email protected]/10_restart.conf",
7878
)
7979
self.daemon_reload = restart_conf.changed
80+
81+
# Validate postfix configuration before restart
82+
if need_restart:
83+
server.shell(
84+
name="Validate postfix configuration",
85+
# Extract stderr and quit with error if non-zero
86+
commands=["""bash -c 'w=$(postconf 2>&1 >/dev/null); [[ -z "$w" ]] || { echo "$w"; false; }'"""],
87+
)
8088
self.need_restart = need_restart
8189

8290
def activate(self):

0 commit comments

Comments
 (0)