#!/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="$(yunohost settings get 'security.postfix.compatibility')" # 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="$(yunohost settings get 'smtp.relay.host')" if [ -n "${relay_host}" ]; then relay_port="$(yunohost settings get 'smtp.relay.port')" relay_user="$(yunohost settings get 'smtp.relay.user')" relay_password="$(yunohost settings get 'smtp.relay.password')" # 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="$YNH_DOMAINS" 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 }}/${YNH_DOMAINS}/g" \ >"${default_dir}/postsrsd" # adapt it for IPv4-only hosts ipv6="$(yunohost settings get 'smtp.allow_ipv6')" 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 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 [[ -z "$regen_conf_files" ]] \ || { systemctl restart postfix && systemctl restart postsrsd; } } do_$1_regen ${@:2}