diff --git a/data/hooks/conf_regen-old/25-dovecot b/data/hooks/conf_regen-old/25-dovecot deleted file mode 100644 index c54300e08..000000000 --- a/data/hooks/conf_regen-old/25-dovecot +++ /dev/null @@ -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 diff --git a/data/hooks/conf_regen/25-dovecot b/data/hooks/conf_regen/25-dovecot new file mode 100755 index 000000000..190e50ef2 --- /dev/null +++ b/data/hooks/conf_regen/25-dovecot @@ -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 diff --git a/data/templates/dovecot/dovecot.conf.sed b/data/templates/dovecot/dovecot.conf similarity index 100% rename from data/templates/dovecot/dovecot.conf.sed rename to data/templates/dovecot/dovecot.conf