mirror of
https://github.com/YunoHost/yunohost.git
synced 2024-09-03 20:06:10 +02:00
90 lines
3 KiB
Bash
Executable file
90 lines
3 KiB
Bash
Executable file
#!/bin/bash
|
|
|
|
set -e
|
|
|
|
. /usr/share/yunohost/helpers
|
|
|
|
do_pre_regen() {
|
|
pending_dir=$1
|
|
|
|
cd /usr/share/yunohost/conf/postfix
|
|
|
|
postfix_dir="${pending_dir}/etc/postfix"
|
|
mkdir -p "$postfix_dir"
|
|
|
|
default_dir="${pending_dir}/etc/default/"
|
|
mkdir -p "$default_dir"
|
|
|
|
# install plain conf files
|
|
cp plain/* "$postfix_dir"
|
|
|
|
# prepare main.cf conf file
|
|
main_domain=$(cat /etc/yunohost/current_host)
|
|
|
|
# Support different strategy for security configurations
|
|
export compatibility="$(jq -r '.postfix_compatibility' <<< "$YNH_SETTINGS")"
|
|
|
|
# Add possibility to specify a relay
|
|
# Could be useful with some isp with no 25 port open or more complex setup
|
|
export relay_port=""
|
|
export relay_user=""
|
|
export relay_host=""
|
|
export relay_enabled="$(jq -r '.smtp_relay_enabled' <<< "$YNH_SETTINGS" | int_to_bool)"
|
|
if [ "${relay_enabled}" == "True" ]; then
|
|
relay_host="$(jq -r '.smtp_relay_host' <<< "$YNH_SETTINGS")"
|
|
relay_port="$(jq -r '.smtp_relay_port' <<< "$YNH_SETTINGS")"
|
|
relay_user="$(jq -r '.smtp_relay_user' <<< "$YNH_SETTINGS")"
|
|
relay_password="$(jq -r '.smtp_relay_password' <<< "$YNH_SETTINGS")"
|
|
|
|
# Avoid to display "Relay account paswword" to other users
|
|
touch ${postfix_dir}/sasl_passwd
|
|
chmod 750 ${postfix_dir}/sasl_passwd
|
|
# Avoid "postmap: warning: removing zero-length database file"
|
|
chown postfix ${pending_dir}/etc/postfix
|
|
chown postfix ${pending_dir}/etc/postfix/sasl_passwd
|
|
|
|
cat <<<"[${relay_host}]:${relay_port} ${relay_user}:${relay_password}" >${postfix_dir}/sasl_passwd
|
|
fi
|
|
export main_domain
|
|
export domain_list="$(yunohost domain list --features mail_in mail_out --output-as json | jq -r ".domains[]" | tr '\n' ' ')"
|
|
ynh_render_template "main.cf" "${postfix_dir}/main.cf"
|
|
ynh_render_template "sni" "${postfix_dir}/sni"
|
|
|
|
cat postsrsd \
|
|
| sed "s/{{ main_domain }}/${main_domain}/g" \
|
|
| sed "s/{{ domain_list }}/${domain_list}/g" \
|
|
>"${default_dir}/postsrsd"
|
|
|
|
# adapt it for IPv4-only hosts
|
|
ipv6="$(jq -r '.smtp_allow_ipv6' <<< "$YNH_SETTINGS" | int_to_bool)"
|
|
if [ "$ipv6" == "False" ] || [ ! -f /proc/net/if_inet6 ]; then
|
|
sed -i \
|
|
's/ \[::ffff:127.0.0.0\]\/104 \[::1\]\/128//g' \
|
|
"${postfix_dir}/main.cf"
|
|
sed -i \
|
|
's/inet_interfaces = all/&\ninet_protocols = ipv4/' \
|
|
"${postfix_dir}/main.cf"
|
|
fi
|
|
}
|
|
|
|
do_post_regen() {
|
|
regen_conf_files=$1
|
|
|
|
chown postfix /etc/postfix
|
|
|
|
if [ -e /etc/postfix/sasl_passwd ]; then
|
|
chmod 750 /etc/postfix/sasl_passwd*
|
|
chown postfix:root /etc/postfix/sasl_passwd*
|
|
postmap /etc/postfix/sasl_passwd
|
|
fi
|
|
|
|
postmap -F hash:/etc/postfix/sni
|
|
|
|
python3 -c 'from yunohost.app import regen_mail_app_user_config_for_dovecot_and_postfix as r; r(only="postfix")'
|
|
|
|
[[ -z "$regen_conf_files" ]] \
|
|
|| { systemctl restart postfix && systemctl restart postsrsd; }
|
|
|
|
}
|
|
|
|
do_$1_regen ${@:2}
|