mirror of
https://github.com/YunoHost/yunohost.git
synced 2024-09-03 20:06:10 +02:00
[enh] Update rmilter and rspamd conf_regen hooks
This commit is contained in:
parent
df9094b896
commit
047015ef61
5 changed files with 101 additions and 76 deletions
|
@ -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
|
|
|
@ -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
|
|
56
data/hooks/conf_regen/28-rmilter
Executable file
56
data/hooks/conf_regen/28-rmilter
Executable 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
45
data/hooks/conf_regen/31-rspamd
Executable 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
|
Loading…
Add table
Reference in a new issue