[enh] Update rmilter and rspamd conf_regen hooks

This commit is contained in:
Jérôme Lebleu 2016-04-16 14:37:20 +02:00
parent df9094b896
commit 047015ef61
5 changed files with 101 additions and 76 deletions

View file

@ -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

View file

@ -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

View file

@ -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

45
data/hooks/conf_regen/31-rspamd Executable file
View file

@ -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