From 4b4d91c6d32e075407424c254049e0d9390bbb4b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Lebleu?= Date: Thu, 31 Dec 2015 13:00:35 +0100 Subject: [PATCH] [fix] Use rmilter as a socket-activated service --- data/hooks/conf_regen/28-rmilter | 12 +++++++++--- data/templates/rmilter/rmilter.conf | 20 ++++++++++---------- data/templates/rmilter/rmilter.socket | 5 +++++ 3 files changed, 24 insertions(+), 13 deletions(-) create mode 100644 data/templates/rmilter/rmilter.socket diff --git a/data/hooks/conf_regen/28-rmilter b/data/hooks/conf_regen/28-rmilter index abdb7d670..286941f34 100644 --- a/data/hooks/conf_regen/28-rmilter +++ b/data/hooks/conf_regen/28-rmilter @@ -18,9 +18,12 @@ cd /usr/share/yunohost/templates/rmilter # Copy Rmilter configuration safe_copy rmilter.conf /etc/rmilter.conf +# Override socket configuration +safe_copy rmilter.socket /etc/systemd/system/rmilter.socket + # Create the PID directory -sudo mkdir -p /var/run/rmilter -sudo chown _rmilter: /var/run/rmilter +sudo mkdir -p /run/rmilter +sudo chown -hR _rmilter: /run/rmilter # Create DKIM key for each YunoHost domain sudo mkdir -p /etc/dkim @@ -38,4 +41,7 @@ for domain in $domain_list; do sudo chmod 400 /etc/dkim/$domain.mail.key done -sudo service rmilter restart +# Reload systemd daemon and stop rmilter service to take into account the +# new configuration. It will be started again by the socket as needed. +sudo systemctl daemon-reload +sudo systemctl stop rmilter.service 2>&1 || true diff --git a/data/templates/rmilter/rmilter.conf b/data/templates/rmilter/rmilter.conf index d74196df8..d585b9217 100644 --- a/data/templates/rmilter/rmilter.conf +++ b/data/templates/rmilter/rmilter.conf @@ -1,18 +1,18 @@ # systemd-specific settings for rmilter -.include /etc/rmilter.conf.common +.include /etc/rmilter.conf.common -pidfile = /var/run/rmilter/rmilter.pid; +# pidfile - path to pid file +pidfile = /run/rmilter/rmilter.pid; -# listen on TCP socket -bind_socket = inet:11000@localhost; +# rmilter is socket-activated under systemd +bind_socket = fd:3; # DKIM signing dkim { - domain { - key = /etc/dkim; - domain = "*"; - selector = "mail"; - }; + domain { + key = /etc/dkim; + domain = "*"; + selector = "mail"; + }; }; - diff --git a/data/templates/rmilter/rmilter.socket b/data/templates/rmilter/rmilter.socket new file mode 100644 index 000000000..dc3ae7a2a --- /dev/null +++ b/data/templates/rmilter/rmilter.socket @@ -0,0 +1,5 @@ +.include /lib/systemd/system/rmilter.socket + +[Socket] +ListenStream= +ListenStream=127.0.0.1:11000