From 047015ef61887e466cd33d297fcc82bcb2f03fbb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Lebleu?= Date: Sat, 16 Apr 2016 14:37:20 +0200 Subject: [PATCH] [enh] Update rmilter and rspamd conf_regen hooks --- data/hooks/conf_regen-old/28-rmilter | 43 -------------- data/hooks/conf_regen-old/31-rspamd | 33 ----------- data/hooks/conf_regen/28-rmilter | 56 +++++++++++++++++++ data/hooks/conf_regen/31-rspamd | 45 +++++++++++++++ ...{metrics.conf.local => metrics.local.conf} | 0 5 files changed, 101 insertions(+), 76 deletions(-) delete mode 100644 data/hooks/conf_regen-old/28-rmilter delete mode 100644 data/hooks/conf_regen-old/31-rspamd create mode 100755 data/hooks/conf_regen/28-rmilter create mode 100755 data/hooks/conf_regen/31-rspamd rename data/templates/rspamd/{metrics.conf.local => metrics.local.conf} (100%) diff --git a/data/hooks/conf_regen-old/28-rmilter b/data/hooks/conf_regen-old/28-rmilter deleted file mode 100644 index f57427a2c..000000000 --- a/data/hooks/conf_regen-old/28-rmilter +++ /dev/null @@ -1,43 +0,0 @@ -set -e - -force=$1 - -function safe_copy () { - if [[ "$force" == "True" ]]; then - sudo yunohost service safecopy \ - -s rmilter $1 $2 --force - else - sudo yunohost service safecopy \ - -s rmilter $1 $2 - fi -} - -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 DKIM key for each YunoHost domain -sudo mkdir -p /etc/dkim -domain_list=$(sudo yunohost domain list --output-as plain) - -for domain in $domain_list; do - [ -f /etc/dkim/$domain.mail.key ] \ - || (sudo opendkim-genkey --domain=$domain \ - --selector=mail\ - --directory=/etc/dkim \ - && sudo mv /etc/dkim/mail.private /etc/dkim/$domain.mail.key \ - && sudo mv /etc/dkim/mail.txt /etc/dkim/$domain.mail.txt) - - sudo chown _rmilter /etc/dkim/$domain.mail.key - sudo chmod 400 /etc/dkim/$domain.mail.key -done - -# Reload systemd daemon, ensure that the socket is listening and stop -# the service. It will be started again by the socket as needed. -sudo systemctl daemon-reload -sudo systemctl start rmilter.socket -sudo systemctl stop rmilter.service 2>&1 || true diff --git a/data/hooks/conf_regen-old/31-rspamd b/data/hooks/conf_regen-old/31-rspamd deleted file mode 100644 index da62e20ea..000000000 --- a/data/hooks/conf_regen-old/31-rspamd +++ /dev/null @@ -1,33 +0,0 @@ -set -e - -force=$1 - -function safe_copy () { - if [[ "$force" == "True" ]]; then - sudo yunohost service safecopy \ - -s rspamd $1 $2 --force - else - sudo yunohost service safecopy \ - -s rspamd $1 $2 - fi -} - -cd /usr/share/yunohost/templates/rspamd - -# Create configuration directories -sudo mkdir -p /etc/rspamd/local.d /etc/rspamd/override.d - -# Copy specific configuration to rewrite the defaults -safe_copy metrics.conf.local /etc/rspamd/local.d/metrics.conf - -# Install Rspamd sieve script -safe_copy rspamd.sieve /etc/dovecot/global_script/rspamd.sieve -sudo sievec /etc/dovecot/global_script/rspamd.sieve -sudo chmod 660 /etc/dovecot/global_script/rspamd.svbin -sudo chown -R vmail:mail /etc/dovecot/global_script - -# Ensure that the socket is listening and stop the service. -sudo systemctl stop rspamd.service 2>&1 || true -sudo systemctl start rspamd.socket - -sudo systemctl restart dovecot diff --git a/data/hooks/conf_regen/28-rmilter b/data/hooks/conf_regen/28-rmilter new file mode 100755 index 000000000..75f3d327a --- /dev/null +++ b/data/hooks/conf_regen/28-rmilter @@ -0,0 +1,56 @@ +#!/bin/bash + +set -e + +do_pre_regen() { + pending_dir=$1 + + cd /usr/share/yunohost/templates/rmilter + + install -D rmilter.conf "${pending_dir}/etc/rmilter.conf" + install -D rmilter.socket "${pending_dir}/etc/rmilter.socket" +} + +do_post_regen() { + # retrieve variables + # TODO: retrieve only new domains + domain_list=$(sudo yunohost domain list --output-as plain --quiet) + + # create DKIM key for domains + for domain in $domain_list; do + [ ! -f /etc/dkim/$domain.mail.key ] && { + sudo opendkim-genkey --domain="$domain" \ + --selector=mail --directory=/etc/dkim + sudo mv /etc/dkim/mail.private "/etc/dkim/${domain}.mail.key" + sudo mv /etc/dkim/mail.txt "/etc/dkim/${domain}.mail.txt" + } + done + + # fix DKIM keys permissions + sudo chown _rmilter /etc/dkim/*.mail.key + sudo chmod 400 /etc/dkim/*.mail.key + + # Reload systemd daemon, ensure that the socket is listening and stop + # the service. It will be started again by the socket as needed. + # TODO: only restart if conf changed + sudo systemctl -q daemon-reload + sudo systemctl -q start rmilter.socket + sudo systemctl -q stop rmilter.service 2>&1 || true +} + +FORCE=$2 + +case "$1" in + pre) + do_pre_regen $3 + ;; + post) + do_post_regen + ;; + *) + echo "hook called with unknown argument \`$status'" >&2 + exit 1 + ;; +esac + +exit 0 diff --git a/data/hooks/conf_regen/31-rspamd b/data/hooks/conf_regen/31-rspamd new file mode 100755 index 000000000..513326f0b --- /dev/null +++ b/data/hooks/conf_regen/31-rspamd @@ -0,0 +1,45 @@ +#!/bin/bash + +set -e + +do_pre_regen() { + pending_dir=$1 + + cd /usr/share/yunohost/templates/rspamd + + install -D metrics.local.conf \ + "${pending_dir}/etc/rspamd/local.d/metrics.conf" + install -D rspamd.sieve \ + "${pending_dir}/etc/dovecot/global_script/rspamd.sieve" +} + +do_post_regen() { + # compile sieve script + # TODO: only compile and restart dovecot if script changed + sudo sievec /etc/dovecot/global_script/dovecot.sieve + # fix permissions and restart dovecot + sudo chown -R vmail:mail /etc/dovecot/global_script + sudo chmod 660 /etc/dovecot/global_script/rspamd.{sieve,svbin} + sudo systemctl restart dovecot + + # TODO: only restart if conf changed + sudo systemctl -q start rspamd.socket + sudo systemctl -q stop rspamd.service 2>&1 || true +} + +FORCE=$2 + +case "$1" in + pre) + do_pre_regen $3 + ;; + post) + do_post_regen + ;; + *) + echo "hook called with unknown argument \`$status'" >&2 + exit 1 + ;; +esac + +exit 0 diff --git a/data/templates/rspamd/metrics.conf.local b/data/templates/rspamd/metrics.local.conf similarity index 100% rename from data/templates/rspamd/metrics.conf.local rename to data/templates/rspamd/metrics.local.conf