mirror of
https://github.com/YunoHost/yunohost.git
synced 2024-09-03 20:06:10 +02:00
[enh] Update dovecot conf_regen hook
This commit is contained in:
parent
3eacbef144
commit
df9094b896
3 changed files with 64 additions and 51 deletions
|
@ -1,51 +0,0 @@
|
|||
set -e
|
||||
|
||||
force=$1
|
||||
|
||||
function safe_copy () {
|
||||
if [[ "$force" == "True" ]]; then
|
||||
sudo yunohost service safecopy \
|
||||
-s dovecot $1 $2 --force
|
||||
else
|
||||
sudo yunohost service safecopy \
|
||||
-s dovecot $1 $2
|
||||
fi
|
||||
}
|
||||
|
||||
cd /usr/share/yunohost/templates/dovecot
|
||||
|
||||
# Create vmail user
|
||||
sudo id vmail > /dev/null 2>&1 \
|
||||
|| sudo adduser --system --ingroup mail --uid 500 vmail
|
||||
|
||||
|
||||
# Replace main domain in the main configuration file
|
||||
main_domain=$(cat /etc/yunohost/current_host)
|
||||
cat dovecot.conf.sed \
|
||||
| sed "s/{{ main_domain }}/$main_domain/g" \
|
||||
| sudo tee dovecot.conf
|
||||
|
||||
|
||||
# Handle IPv4 only systems
|
||||
if [ ! -f /proc/net/if_inet6 ];
|
||||
then
|
||||
sudo sed -i 's/^listen.*/listen = \*/' dovecot.conf
|
||||
fi
|
||||
|
||||
|
||||
safe_copy dovecot.conf /etc/dovecot/dovecot.conf
|
||||
safe_copy dovecot-ldap.conf /etc/dovecot/dovecot-ldap.conf
|
||||
|
||||
|
||||
# Setup Sieve
|
||||
sudo mkdir -p /etc/dovecot/global_script
|
||||
sudo chmod -R 770 /etc/dovecot/global_script
|
||||
|
||||
safe_copy dovecot.sieve /etc/dovecot/global_script/dovecot.sieve
|
||||
sudo chmod 660 /etc/dovecot/global_script/dovecot.sieve > /dev/null 2>&1 \
|
||||
|| safe_copy dovecot.sieve /etc/dovecot/global_script/dovecot.sieve
|
||||
sudo sievec /etc/dovecot/global_script/dovecot.sieve
|
||||
sudo chmod 660 /etc/dovecot/global_script/dovecot.svbin
|
||||
sudo chown -R vmail:mail /etc/dovecot/global_script
|
||||
|
||||
sudo service dovecot restart
|
64
data/hooks/conf_regen/25-dovecot
Executable file
64
data/hooks/conf_regen/25-dovecot
Executable file
|
@ -0,0 +1,64 @@
|
|||
#!/bin/bash
|
||||
|
||||
set -e
|
||||
|
||||
do_pre_regen() {
|
||||
pending_dir=$1
|
||||
|
||||
cd /usr/share/yunohost/templates/dovecot
|
||||
|
||||
dovecot_dir="${pending_dir}/etc/dovecot"
|
||||
mkdir -p "${dovecot_dir}/global_script"
|
||||
|
||||
# copy simple conf files
|
||||
cp dovecot-ldap.conf "${dovecot_dir}/dovecot-ldap.conf"
|
||||
cp dovecot.sieve "${dovecot_dir}/global_script/dovecot.sieve"
|
||||
|
||||
# prepare dovecot.conf conf file
|
||||
main_domain=$(cat /etc/yunohost/current_host)
|
||||
cat dovecot.conf \
|
||||
| sed "s/{{ main_domain }}/${main_domain}/g" \
|
||||
> "${dovecot_dir}/dovecot.conf"
|
||||
|
||||
# adapt it for IPv4-only hosts
|
||||
if [ ! -f /proc/net/if_inet6 ]; then
|
||||
sed -i \
|
||||
's/^\(listen =\).*/\1 */' \
|
||||
"${dovecot_dir}/dovecot.conf"
|
||||
fi
|
||||
}
|
||||
|
||||
do_post_regen() {
|
||||
# create vmail user
|
||||
id vmail > /dev/null 2>&1 \
|
||||
|| sudo adduser --system --ingroup mail --uid 500 vmail
|
||||
|
||||
# compile sieve script
|
||||
# TODO: only compile if script changed
|
||||
sudo sievec /etc/dovecot/global_script/dovecot.sieve
|
||||
|
||||
# fix permissions
|
||||
sudo chown -R vmail:mail /etc/dovecot/global_script
|
||||
sudo chmod -R 770 /etc/dovecot/global_script
|
||||
sudo chmod 660 /etc/dovecot/global_script/dovecot.{sieve,svbin}
|
||||
|
||||
# TODO: only restart if conf changed
|
||||
sudo service dovecot restart
|
||||
}
|
||||
|
||||
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