mirror of
https://github.com/chatmail/relay.git
synced 2026-05-17 14:48:58 +00:00
refactor: Add OpendkimDeployer
- Note that this moves the installation of the opendkim package earlier in the deployment sequence. Previously, it was installed during the _configure_opendkim() routine.
This commit is contained in:
@@ -241,11 +241,6 @@ def _configure_opendkim(domain: str, dkim_selector: str = "dkim") -> bool:
|
|||||||
present=True,
|
present=True,
|
||||||
)
|
)
|
||||||
|
|
||||||
apt.packages(
|
|
||||||
name="apt install opendkim opendkim-tools",
|
|
||||||
packages=["opendkim", "opendkim-tools"],
|
|
||||||
)
|
|
||||||
|
|
||||||
if not host.get_fact(File, f"/etc/dkimkeys/{dkim_selector}.private"):
|
if not host.get_fact(File, f"/etc/dkimkeys/{dkim_selector}.private"):
|
||||||
server.shell(
|
server.shell(
|
||||||
name="Generate OpenDKIM domain keys",
|
name="Generate OpenDKIM domain keys",
|
||||||
@@ -266,6 +261,39 @@ def _configure_opendkim(domain: str, dkim_selector: str = "dkim") -> bool:
|
|||||||
return need_restart
|
return need_restart
|
||||||
|
|
||||||
|
|
||||||
|
class OpendkimDeployer(Deployer):
|
||||||
|
def __init__(self, *, mail_domain, **kwargs):
|
||||||
|
super().__init__(**kwargs)
|
||||||
|
self.mail_domain = mail_domain
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def required_users():
|
||||||
|
return [
|
||||||
|
("opendkim", None, ["opendkim"]),
|
||||||
|
]
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def install_impl():
|
||||||
|
apt.packages(
|
||||||
|
name="apt install opendkim opendkim-tools",
|
||||||
|
packages=["opendkim", "opendkim-tools"],
|
||||||
|
)
|
||||||
|
|
||||||
|
def configure_impl(self):
|
||||||
|
self.need_restart = _configure_opendkim(self.mail_domain, "opendkim")
|
||||||
|
|
||||||
|
def activate_impl(self):
|
||||||
|
systemd.service(
|
||||||
|
name="Start and enable OpenDKIM",
|
||||||
|
service="opendkim.service",
|
||||||
|
running=True,
|
||||||
|
enabled=True,
|
||||||
|
daemon_reload=self.need_restart,
|
||||||
|
restarted=self.need_restart,
|
||||||
|
)
|
||||||
|
self.need_restart = False
|
||||||
|
|
||||||
|
|
||||||
def _uninstall_mta_sts_daemon() -> None:
|
def _uninstall_mta_sts_daemon() -> None:
|
||||||
# Remove configuration.
|
# Remove configuration.
|
||||||
files.file("/etc/mta-sts-daemon.yml", present=False)
|
files.file("/etc/mta-sts-daemon.yml", present=False)
|
||||||
@@ -815,6 +843,8 @@ def deploy_chatmail(config_path: Path, disable_mail: bool) -> None:
|
|||||||
line="nameserver 9.9.9.9",
|
line="nameserver 9.9.9.9",
|
||||||
)
|
)
|
||||||
|
|
||||||
|
opendkim_deployer = OpendkimDeployer(mail_domain=mail_domain)
|
||||||
|
|
||||||
# Dovecot should be started before Postfix
|
# Dovecot should be started before Postfix
|
||||||
# because it creates authentication socket
|
# because it creates authentication socket
|
||||||
# required by Postfix.
|
# required by Postfix.
|
||||||
@@ -824,6 +854,7 @@ def deploy_chatmail(config_path: Path, disable_mail: bool) -> None:
|
|||||||
nginx_deployer = NginxDeployer(config=config)
|
nginx_deployer = NginxDeployer(config=config)
|
||||||
|
|
||||||
all_deployers = [
|
all_deployers = [
|
||||||
|
opendkim_deployer,
|
||||||
dovecot_deployer,
|
dovecot_deployer,
|
||||||
postfix_deployer,
|
postfix_deployer,
|
||||||
nginx_deployer,
|
nginx_deployer,
|
||||||
@@ -841,13 +872,6 @@ def deploy_chatmail(config_path: Path, disable_mail: bool) -> None:
|
|||||||
|
|
||||||
server.group(name="Create vmail group", group="vmail", system=True)
|
server.group(name="Create vmail group", group="vmail", system=True)
|
||||||
server.user(name="Create vmail user", user="vmail", group="vmail", system=True)
|
server.user(name="Create vmail user", user="vmail", group="vmail", system=True)
|
||||||
server.group(name="Create opendkim group", group="opendkim", system=True)
|
|
||||||
server.user(
|
|
||||||
name="Create opendkim user",
|
|
||||||
user="opendkim",
|
|
||||||
groups=["opendkim"],
|
|
||||||
system=True,
|
|
||||||
)
|
|
||||||
server.user(name="Create echobot user", user="echobot", system=True)
|
server.user(name="Create echobot user", user="echobot", system=True)
|
||||||
server.user(name="Create iroh user", user="iroh", system=True)
|
server.user(name="Create iroh user", user="iroh", system=True)
|
||||||
|
|
||||||
@@ -942,6 +966,7 @@ def deploy_chatmail(config_path: Path, disable_mail: bool) -> None:
|
|||||||
packages="acl",
|
packages="acl",
|
||||||
)
|
)
|
||||||
|
|
||||||
|
opendkim_deployer.install()
|
||||||
postfix_deployer.install()
|
postfix_deployer.install()
|
||||||
dovecot_deployer.install()
|
dovecot_deployer.install()
|
||||||
nginx_deployer.install()
|
nginx_deployer.install()
|
||||||
@@ -971,16 +996,8 @@ def deploy_chatmail(config_path: Path, disable_mail: bool) -> None:
|
|||||||
_uninstall_mta_sts_daemon()
|
_uninstall_mta_sts_daemon()
|
||||||
|
|
||||||
_remove_rspamd()
|
_remove_rspamd()
|
||||||
opendkim_need_restart = _configure_opendkim(mail_domain, "opendkim")
|
opendkim_deployer.configure()
|
||||||
|
opendkim_deployer.activate()
|
||||||
systemd.service(
|
|
||||||
name="Start and enable OpenDKIM",
|
|
||||||
service="opendkim.service",
|
|
||||||
running=True,
|
|
||||||
enabled=True,
|
|
||||||
daemon_reload=opendkim_need_restart,
|
|
||||||
restarted=opendkim_need_restart,
|
|
||||||
)
|
|
||||||
|
|
||||||
dovecot_deployer.activate()
|
dovecot_deployer.activate()
|
||||||
postfix_deployer.activate()
|
postfix_deployer.activate()
|
||||||
|
|||||||
Reference in New Issue
Block a user