sympa/create_sympa_listdomain.sh

1483 lines
46 KiB
Bash
Executable File

#!/usr/bin/env bash
script_name="$(basename $(realpath $0))"
working_dir="$(dirname $(realpath $0))"
backup_date="$(date +%Y-%m-%d-%H%M)"
## ---
## --- Sympa Multidomain Setup
## ---
## ---
## --- Variable settings
## ---
if [ -n "$1" ]; then
SYMPA_LIST_DOMAIN=$1
else
SYMPA_LIST_DOMAIN=
fi
conf_file_installation="${working_dir}/conf/install_sympa.conf"
_VSERVER_GUEST=no
## --- some functions
## ---
echononl(){
echo X\\c > /tmp/shprompt$$
if [ `wc -c /tmp/shprompt$$ | awk '{print $1}'` -eq 1 ]; then
echo -e -n "$*\\c" 1>&2
else
echo -e -n "$*" 1>&2
fi
rm /tmp/shprompt$$
}
fatal(){
echo ""
echo -e "[ \033[31m\033[1mError\033[m ]: $*"
echo ""
echo -e "\t\033[31m\033[1mInstalllation is canceled\033[m\033[m"
echo ""
exit 1
}
warn (){
echo ""
echo -e "\t[ \033[33m\033[1mWarning\033[m ]: $*"
echo ""
}
info (){
echo ""
echo -e "\t[ \033[33m\033[1mInfo\033[m ]: $*"
echo ""
}
error(){
echo ""
echo -e "\t[ \033[31m\033[1mFehler\033[m ]: $*"
echo ""
}
echo_ok() {
echo -e "\033[75G[ \033[32mok\033[m ]"
}
echo_failed(){
echo -e "\033[75G[ \033[1;31mfailed\033[m ]"
}
echo_skipped() {
echo -e "\033[75G[ \033[33m\033[1mskipped\033[m ]"
}
## ---
## --- END: functions
## - Determin Sympa Home Directory
## -
SYMPA_HOME="$(realpath "$(echo ~sympa)")"
if [ ! -d "$SYMPA_HOME" ]; then
fatal "Cannot find Sympas Home (Installation) Directory"
fi
SYMPA_USER=`stat -c '%U' $SYMPA_HOME`
SYMPA_GROUP=`stat -c '%G' $SYMPA_HOME`
## - Determin Sympa's PID directory
## -
if [[ -f "/etc/systemd/system/sympa.service" ]]; then
SYMPA_PID_DIR="$(dirname "$(grep -E "^\s*PIDFile" /etc/systemd/system/sympa.service | cut -d'=' -f2)")"
elif [[ -f "/lib/systemd/system/sympa.service" ]]; then
SYMPA_PID_DIR="$(dirname "$(grep -E "^\s*PIDFile" /lib/systemd/system/sympa.service | cut -d'=' -f2)")"
elif [[ -f "/etc/init.d/sympa" ]] ; then
if $(grep -E -q "\s*^sympapiddir=\"" /etc/init.d/sympa | cut -d'"' -f2) ; then
SYMPA_PID_DIR="$(grep -E "\s*^sympapiddir=" /etc/init.d/sympa | cut -d'"' -f2)"
else
SYMPA_PID_DIR="$(grep -E "\s*^sympapiddir=" /etc/init.d/sympa | cut -d'=' -f2)"
fi
fi
if [[ -z "$SYMPA_PID_DIR" ]]; then
fatal "Cannot determin variable 'SYMPA_PID_DIR'..!"
fi
## - Determin Sympa's static directory
## -
if [[ -d "/usr/local/sympa/static_content" ]]; then
SYMPA_STATIC_DIR="/usr/local/sympa/static_content"
elif [[ -d "/var/lib/sympa/static_content" ]]; then
SYMPA_STATIC_DIR="/var/lib/sympa/static_content"
elif [[ -d "/usr/local/sympa/var/lib/sympa/static_content" ]]; then
SYMPA_STATIC_DIR="/usr/local/sympa/var/lib/sympa/static_content"
fi
if [[ -z "$SYMPA_STATIC_DIR" ]]; then
fatal "Cannot determin variable 'SYMPA_STATIC_DIR'..!"
fi
## - Determin Sympa's cgi (script) directory
## -
if [[ -f "/usr/local/sympa/bin/wwsympa-wrapper.fcgi" ]]; then
SYMPA_CGI_DIR="/usr/local/sympa/bin"
elif [[ -f "/usr/local/sympa/lib/sympa/cgi/wwsympa-wrapper.fcgi" ]]; then
SYMPA_CGI_DIR="/usr/local/sympa/lib/sympa/cgi"
fi
if [[ -z "$SYMPA_STATIC_DIR" ]]; then
fatal "Cannot determin variable 'SYMPA_STATIC_DIR'..!"
fi
## - Determin Sympa's systemd directory
## -
if [[ -f "/etc/systemd/system/sympa.service" ]]; then
SYMPA_SYSTEMD_DIR="/etc/systemd/system"
elif [[ -f "/lib/systemd/system/sympa.service" ]]; then
SYMPA_SYSTEMD_DIR="/lib/systemd/system"
fi
## - Determin the IP-Addresses
## -
#__ipv4="`ifconfig | grep -e \"^\s*inet \" | grep -v \"127.0.0.1\" | awk '{print$2}' | cut -d\":\" -f2 | sort | head -1`"
#__ipv6="`ifconfig | grep -e \"^\s*inet6 \" | awk '{print$2}' | grep -v -e \"^::1/\" | grep -v -e \"^fe80\" | cut -d\"/\" -f1 | sort | head -1`"
_hostname="$(hostname -f)"
if [[ -n "$_hostname" ]] ; then
__ipv4="$(dig +short "$_hostname")"
__ipv6="$(dig +short "$_hostname" AAAA)"
fi
_debian_apache_installation=false
_base_webserver_info_needed=false
_apache_vhost_dir=""
apache_log_dir=""
apache_conf_dir=""
apache_vhost_dir=""
## - Determin VHost Configuration Directory
## -
if dpkg -l apache2 2> /dev/null | grep -e "^ii" > /dev/null 2>&1 ; then
_debian_apache_installation=true
if [ -d "/etc/apache2" -a -d "/etc/apache2/sites-available" ]; then
apache_vhost_dir=/etc/apache2/sites-available
apache_conf_dir=/etc/apache2
if [ -d "/var/log/apache2" ]; then
apache_log_dir=/var/log/apache2
else
error "Found Debian Apache Installation, but no Log Directory found!"
fatal "Something went wron with your Apache Installation"
fi
else
error "Found Debian Apache Installation, but no Configuration Directory for vhosts!"
fatal "Something went wron with your Apache Installation"
fi
else
## - Determin httpd binary
## -
_httpd_binary="`which httpd`"
if [ -z "$_httpd_binary" ]; then
_httpd_binary="$(ps -axu | grep httpd | grep -e "^root" | grep -v grep | awk '{print$11}')"
if [ -z "$_httpd_binary" ]; then
if [ -x "/usr/local/apache2/bin/httpd" ]; then
_httpd_binary="/usr/local/apache2/bin/httpd"
fi
fi
fi
## - Determin ServerRoot Directory
## -
apache_base_dir_found=false
_pass_apache_base_dir=false
apache_base_dir=`$_httpd_binary -t -D DUMP_RUN_CFG | grep ServerRoot | awk '{print$2}' | tr -d '"'`
if [ "`realpath /usr/local/apache2`" = "$apache_base_dir" ]; then
apache_base_dir="/usr/local/apache2"
_apache_base_dir_realpath="`realpath $apache_base_dir`"
elif [ -z "$apache_base_dir" ]; then
if [ -d "`realpath /usr/local/apache2`" ];then
apache_base_dir="/usr/local/apache2"
_apache_base_dir_realpath="`realpath $apache_base_dir`"
fi
else
_apache_base_dir_realpath=$apache_base_dir
fi
if [ -z "$apache_base_dir" ];then
_base_webserver_info_needed=true
apache_base_dir_found=true
else
_pass_apache_base_dir=true
fi
## - Determin Apache Configuration Directory
## -
apache_conf_dir_found=false
if [ -n "$apache_base_dir" ];then
if [ -d "${apache_base_dir}/conf" ]; then
apache_conf_dir=${apache_base_dir}/conf
apache_conf_dir_found=true
else
_base_webserver_info_needed=true
fi
else
_base_webserver_info_needed=true
fi
## - Determin Apache Log Directory
## -
_apache_errorlog_dir=`$_httpd_binary -t -D DUMP_RUN_CFG | grep "Main ErrorLog:" | awk '{print$3}' | tr -d '"'`
if [ -d "`dirname $_apache_errorlog_dir`" ]; then
apache_log_dir=`dirname $_apache_errorlog_dir`
fi
## - Determin VHost Configuration Directory
## -
if [ -d "${apache_conf_dir}/vhosts" ]; then
_apache_vhost_dir=${apache_conf_dir}/vhosts
fi
fi
if $_base_webserver_info_needed ; then
fatal "Apache Webserver not found!"
fi
_postfix_info_needed=false
if [ -f "/etc/postfix/sympa_domains" ]; then
POSTFIX_RELAY_DOMAIN_FILE=/etc/postfix/sympa_domains
else
_postfix_info_needed=true
fi
if [ -f "/etc/postfix/sympa_transport" ];then
POSTFIX_TRANSPORT_FILE=/etc/postfix/sympa_transport
else
_postfix_info_needed=true
fi
#if [ -f "/etc/postfix/sympa_recipient_canonical_maps" ];then
# POSTFIX_CANONICAL_MAPS=/etc/postfix/sympa_recipient_canonical_maps
#else
# _postfix_info_needed=true
#fi
if [ -f "/etc/postfix/sympa_virtual_aliases" ];then
POSTFIX_VIRTUAL_ALIAS_MAPS=/etc/postfix/sympa_virtual_aliases
else
_postfix_info_needed=true
fi
clear
echo
echo
echo -e "\033[21G\033[32mCreate new domain for Sympa mailing list manager \"`hostname -f`\"..\033[m"
echo ""
echo ""
echo -e "\033[32m--\033[m"
echo ""
if [ -z "$SYMPA_LIST_DOMAIN" ]; then
echo "Insert the Name for new domain (i.e. lists.oopen.de)."
echo ""
echo ""
SYMPA_LIST_DOMAIN=
echononl "Name of the new domain: "
read SYMPA_LIST_DOMAIN
while [ "X$SYMPA_LIST_DOMAIN" = "X" ] ; do
echo -e "\n\t\033[33m\033[1mDomain name is madatory. retry..\033[m\n"
echononl "Name of the new domain: "
read SYMPA_LIST_DOMAIN
done
else
echo "Create Configuration for domain \"$SYMPA_LIST_DOMAIN\".."
fi
## - Try to find Sympa's main configuration file
## -
if [ -f "/etc/sympa/sympa.conf" ];then
_SYMPA_MAIN_CONF_FILE=/etc/sympa/sympa.conf
elif [ -f "${SYMPA_HOME}/etc/sympa.conf" ];then
_SYMPA_MAIN_CONF_FILE=${SYMPA_HOME}/etc/sympa.conf
else
_SYMPA_MAIN_CONF_FILE=
fi
echo ""
echo -e "\033[32m--\033[m"
echo ""
echo "Insert Main Configuration File for Sympa Installation. "
echo ""
SYMPA_MAIN_CONF_FILE=
if [ -n "$_SYMPA_MAIN_CONF_FILE" ]; then
echononl "Sympa's main configuration file [${_SYMPA_MAIN_CONF_FILE}]: "
read SYMPA_MAIN_CONF_FILE
if [ "X$SYMPA_MAIN_CONF_FILE" = "X" ]; then
SYMPA_MAIN_CONF_FILE=$_SYMPA_MAIN_CONF_FILE
fi
else
while [ "X$SYMPA_MAIN_CONF_FILE" = "X" ]; do
echononl "Sympa's main configuration file: "
read SYMPA_MAIN_CONF_FILE
if [ -z "$SYMPA_MAIN_CONF_FILE" ]; then
echo -e "\n\t\033[1;33mDeclaration is mandatory!\033[m Try again..\n"
fi
done
fi
if [ ! -f "$SYMPA_MAIN_CONF_FILE" ]; then
fatal "Sympa's main configuration file (${SYMPA_MAIN_CONF_FILE}) not found"
fi
## - Base List Data Directory
## -
if grep -e "^\s*home" $SYMPA_MAIN_CONF_FILE > /dev/null 2>&1 ; then
_SYMPA_LIST_DATA_DIR=`grep -e "^\s*home" $SYMPA_MAIN_CONF_FILE 2> /dev/null | awk '{print$2}'`
elif grep -e "^\s*#\s*home" $SYMPA_MAIN_CONF_FILE > /dev/null 2>&1 ; then
_SYMPA_LIST_DATA_DIR=`grep -e "^\s*#\s*home" $SYMPA_MAIN_CONF_FILE 2> /dev/null | awk '{print$2}'`
fi
echo ""
echo -e "\033[32m--\033[m"
echo ""
echo "Insert Base Directory containing Lists Data Directories. "
echo ""
SYMPA_LIST_DATA_DIR=
if [ -n "$_SYMPA_LIST_DATA_DIR" ]; then
echononl "Sympa's base lists data directory [${_SYMPA_LIST_DATA_DIR}]: "
read SYMPA_LIST_DATA_DIR
if [ "X$SYMPA_LIST_DATA_DIR" = "X" ]; then
SYMPA_LIST_DATA_DIR=$_SYMPA_LIST_DATA_DIR
fi
else
while [ "X$SYMPA_LIST_DATA_DIR" = "X" ]; do
echononl "Sympa's base lists data directory: "
read SYMPA_LIST_DATA_DIR
if [ -z "$SYMPA_LIST_DATA_DIR" ]; then
echo -e "\n\t\033[1;33mDeclaration is mandatory!\033[m Try again..\n"
fi
done
fi
if [ ! -d "$SYMPA_LIST_DATA_DIR" ]; then
fatal "Base Directory for List Data (${SYMPA_LIST_DATA_DIR}) not found"
fi
#_main_domain=`echo $SYMPA_LIST_DOMAIN | grep -o '[^.]*\.[^.]*$'`
_SYMPA_LISTMASTER="postmaster@`echo $SYMPA_LIST_DOMAIN | grep -o '[^.]*\.[^.]*$'`"
_SYMPA_WEBINTERFACE_TITLE="Mailing Lists `echo $SYMPA_LIST_DOMAIN | grep -o '[^.]*\.[^.]*$'`"
echo ""
echo -e "\033[32m--\033[m"
echo ""
echo "Insert E-Mail Address of Listmaster(s) for \"$SYMPA_LIST_DOMAIN\". "
echo ""
echo " - COMMA seperated list of email addresses"
echo ""
SYMPA_LISTMASTER=
if [ -n "$_SYMPA_LISTMASTER" ]; then
echononl "listmaster [${_SYMPA_LISTMASTER}]: "
read SYMPA_LISTMASTER
if [ "X$SYMPA_LISTMASTER" = "X" ]; then
SYMPA_LISTMASTER=$_SYMPA_LISTMASTER
fi
else
while [ "X$SYMPA_LISTMASTER" = "X" ]; do
echononl "listmaster: "
read SYMPA_LISTMASTER
if [ -z "$SYMPA_LISTMASTER" ]; then
echo -e "\n\t\033[1;33mDeclaration is mandatory!\033[m Try again..\n"
fi
done
fi
# - if multiple listmasers where given in a blank separated list, we correct it here
# -
declare -a listmaster_arr=()
for _listmaster in $SYMPA_LISTMASTER ; do
listmaster_arr+=("$_listmaster")
done
SYMPA_LISTMASTER=""
_first=true
for _listmaster in "${listmaster_arr[@]}" ; do
if $_first ; then
SYMPA_LISTMASTER="$_listmaster"
_first=false
else
SYMPA_LISTMASTER="${SYMPA_LISTMASTER},$_listmaster"
fi
done
SYMPA_LISTMASTER="$(echo $SYMPA_LISTMASTER | sed 's/\(.\)\1*/\1/g')"
# Remove trailling ','
SYMPA_LISTMASTER="${SYMPA_LISTMASTER%,}"
# remove leading ','
SYMPA_LISTMASTER=${SYMPA_LISTMASTER#,}
if grep -e "^\s*listmaster" $SYMPA_MAIN_CONF_FILE > /dev/null 2>&1 ; then
_BSP_POSTMASTER_ABUSE_ADDRESS=`grep -e "^\s*listmaster" $SYMPA_MAIN_CONF_FILE 2> /dev/null | awk '{print$2}'`
elif grep -e "^\s*#\s*listmaster" $SYMPA_MAIN_CONF_FILE > /dev/null 2>&1 ; then
_BSP_POSTMASTER_ABUSE_ADDRESS=`grep -e "^\s*#\s*listmaster" $SYMPA_MAIN_CONF_FILE 2> /dev/null | awk '{print$2}'`
fi
_POSTMASTER_ABUSE_ADDRESS="postmaster@$(echo $SYMPA_LIST_DOMAIN | grep -o '[^.]*\.[^.]*$')"
echo ""
echo -e "\033[32m--\033[m"
echo ""
echo "Insert E-Mail Address(es) to which e-mails to (postmaster|abuse|sympa-request|sympa-owner)@$SYMPA_LIST_DOMAIN. "
echo "should be forwarded"
echo ""
echo ""
echo "Example"
echo " forward adress(es) [${_POSTMASTER_ABUSE_ADDRESS}]: $_BSP_POSTMASTER_ABUSE_ADDRESS"
echo ""
echo " - BLANK seperated list of email addresses"
echo ""
echo "Type return to accept the default '${_POSTMASTER_ABUSE_ADDRESS}'"
echo ""
POSTMASTER_ABUSE_ADDRESS=
if [ -n "$_POSTMASTER_ABUSE_ADDRESS" ]; then
echononl "forward adress(es) [${_POSTMASTER_ABUSE_ADDRESS}]: "
read POSTMASTER_ABUSE_ADDRESS
if [ "X$POSTMASTER_ABUSE_ADDRESS" = "X" ]; then
POSTMASTER_ABUSE_ADDRESS=$_POSTMASTER_ABUSE_ADDRESS
fi
else
while [ "X$POSTMASTER_ABUSE_ADDRESS" = "X" ]; do
echononl "forward adress(es): "
read POSTMASTER_ABUSE_ADDRESS
if [ -z "$POSTMASTER_ABUSE_ADDRESS" ]; then
echo -e "\n\t\033[1;33mDeclaration is mandatory!\033[m Try again..\n"
fi
done
fi
echo ""
echo -e "\033[32m--\033[m"
echo ""
echo "Insert title for the Webinterface."
echo ""
SYMPA_WEBINTERFACE_TITLE=
if [ -n "$_SYMPA_WEBINTERFACE_TITLE" ]; then
echononl "Title for webinterface [${_SYMPA_WEBINTERFACE_TITLE}]: "
read SYMPA_WEBINTERFACE_TITLE
if [ "X$SYMPA_WEBINTERFACE_TITLE" = "X" ]; then
SYMPA_WEBINTERFACE_TITLE=$_SYMPA_WEBINTERFACE_TITLE
fi
else
while [ "X$SYMPA_WEBINTERFACE_TITLE" = "X" ]; do
echononl "Title for webinterface: "
read SYMPA_WEBINTERFACE_TITLE
if [ -z "$SYMPA_WEBINTERFACE_TITLE" ]; then
echo -e "\n\t\033[1;33mDeclaration is mandatory!\033[m Try again..\n"
fi
done
fi
if $_postfix_info_needed ; then
echo ""
echo ""
echo -e "\033[32m-- Postfix SMTP Server related\033[m"
echo ""
echo "Insert filename includes the relay domain declarations (for sympa lists)"
echo ""
POSTFIX_RELAY_DOMAIN_FILE=
while [ "X$POSTFIX_RELAY_DOMAIN_FILE" = "X" ] ; do
echononl "Filename for relay domain declarations: "
read POSTFIX_RELAY_DOMAIN_FILE
if [ -z "$POSTFIX_RELAY_DOMAIN_FILE" ]; then
echo -e "\n\t\033[1;33mDeclaration is mandatory!\033[m Try again..\n"
elif [ ! -f "$POSTFIX_RELAY_DOMAIN_FILE" ];then
echo -e "\n\t\033[1;33mFile \"${POSTFIX_RELAY_DOMAIN_FILE}\" not found!\033[m Try again..\n"
POSTFIX_RELAY_DOMAIN_FILE=""
fi
done
echo ""
echo -e "\033[32m--\033[m"
echo ""
echo "Insert filename includes the (postfix) transport declarations (for sympa lists)"
echo ""
POSTFIX_TRANSPORT_FILE=
while [ "X$POSTFIX_TRANSPORT_FILE" = "X" ] ; do
echononl "Filename for relay domain declarations: "
read POSTFIX_TRANSPORT_FILE
if [ -z "$POSTFIX_TRANSPORT_FILE" ]; then
echo -e "\n\t\033[1;33mDeclaration is mandatory!\033[m Try again..\n"
elif [ ! -f "$POSTFIX_TRANSPORT_FILE" ];then
echo -e "\n\t\033[1;33mFile \"${POSTFIX_TRANSPORT_FILE}\" not found!\033[m Try again..\n"
POSTFIX_TRANSPORT_FILE=""
fi
done
echo ""
echo -e "\033[32m--\033[m"
echo ""
echo "Insert the aliases map file, which includes the forward address(es) for"
echo "(postmaste|abuse)@lists.domain.tld (using virtual_alias_maps)"
echo ""
POSTFIX_VIRTUAL_ALIAS_MAPS=
while [ "X$POSTFIX_VIRTUAL_ALIAS_MAPS" = "X" ] ; do
echononl "Filename for map declarations: "
read POSTFIX_VIRTUAL_ALIAS_MAPS
if [ -z "$POSTFIX_VIRTUAL_ALIAS_MAPS" ]; then
echo -e "\n\t\033[1;33mDeclaration is mandatory!\033[m Try again..\n"
elif [ ! -f "$POSTFIX_VIRTUAL_ALIAS_MAPS" ];then
echo -e "\n\t\033[1;33mFile \"${POSTFIX_VIRTUAL_ALIAS_MAPS}\" not found!\033[m Try again..\n"
POSTFIX_VIRTUAL_ALIAS_MAPS=""
fi
done
#echo ""
#echo -e "\033[32m--\033[m"
#echo ""
#echo "Insert filename includes the (postfix) address rewriting to support"
#echo "addresse like (postmaste|abuse)@lists.domain.tld (using canonical maps)"
#echo ""
#POSTFIX_CANONICAL_MAPS=
#while [ "X$POSTFIX_CANONICAL_MAPS" = "X" ] ; do
# echononl "Filename for map declarations: "
# read POSTFIX_CANONICAL_MAPS
# if [ -z "$POSTFIX_CANONICAL_MAPS" ]; then
# echo -e "\n\t\033[1;33mDeclaration is mandatory!\033[m Try again..\n"
# elif [ ! -f "$POSTFIX_CANONICAL_MAPS" ];then
# echo -e "\n\t\033[1;33mFile \"${POSTFIX_CANONICAL_MAPS}\" not found!\033[m Try again..\n"
# POSTFIX_CANONICAL_MAPS=""
# fi
#done
fi
if ! $_debian_apache_installation ; then
echo ""
echo ""
echo -e "\033[32m-- Apache Webserver related\033[m"
echo ""
echo "Insert Directory where the vhost configuration file should stay.."
echo ""
apache_vhost_dir=
while [ "X$apache_vhost_dir" = "X" ] ; do
if [ -n "$_apache_vhost_dir" ];then
echononl "VHost Base Directory [$_apache_vhost_dir]: "
read apache_vhost_dir
if [ "X$apache_vhost_dir" = "X" ]; then
apache_vhost_dir=$_apache_vhost_dir
fi
else
echononl "VHost Base Directory: "
read apache_vhost_dir
if [ ! -d "$read apache_vhost_dir" ];then
echo -e "\n\t\033[1;33mDirectory \"${apache_vhost_dir}\" not found! Try again..\033[m\n"
apache_vhost_dir=""
fi
fi
done
if [ -z "$apache_log_dir" ]; then
echo ""
echo ""
echo -e "\033[32m--\033[m"
echo ""
echo "Insert Directory where the log files should stay.."
echo ""
while [ "X$apache_log_dir" = "X" ] ; do
echononl "Apache Log Directory: "
read apache_log_dir
if [ -z "$apache_log_dir" ]; then
echo -e "\n\t\033[1;33mDeclaration is mandatory!\033[m Try again..\n"
elif [ ! -d "$apache_log_dir" ];then
echo -e "\n\t\033[1;33mDirectory \"${apache_log_dir}\" not found!\033[m Try again..\n"
apache_log_dir=""
fi
done
fi
fi
echo ""
echo ""
echo -e "\033[32m--\033[m"
echo ""
echo "Insert the IP-Addresses where the webserver should listen for that site."
echo ""
IPv4=
while [ "X$IPv4" = "X" ];do
if [ -z "$__ipv4" ]; then
echononl "IPv4 address: "
read IPv4
if [ "X$IPv4" = "X" ]; then
echo -e "\n\t\033[33m\033[1mEingabe erforderlich!\033[m\n"
fi
else
echononl "IPv4 address [$__ipv4]: "
read IPv4
if [ "X$IPv4" = "X" ]; then
IPv4=$__ipv4
fi
fi
done
IPv6=
while [ "X$IPv6" = "X" ];do
if [ -z "$__ipv6" ]; then
echononl "IPv6 address: "
read IPv6
if [ "X$IPv6" = "X" ]; then
echo -e "\n\t\033[33m\033[1mEingabe erforderlich!\033[m\n"
fi
else
echononl "IPv6 address [$__ipv6]: "
read IPv6
if [ "X$IPv6" = "X" ]; then
IPv6=$__ipv6
fi
fi
done
_wwsympa_url=`grep -e "^\s*wwsympa_url" $SYMPA_MAIN_CONF_FILE | awk '{print$2}'`
_wwsympa_dir="$(echo $_wwsympa_url | grep / | cut -d/ -f4-)"
SYMPA_WEB_URL=https://${SYMPA_LIST_DOMAIN}/$_wwsympa_dir
OK=
echo ""
echo -e "\033[32m--\033[m"
echo ""
echo "Are you installing on a VServer guest system?"
echo ""
echononl "VServer Gastsystem (yes/no) [$_VSERVER_GUEST]: "
read OK
if [ "X$OK" = "X" ]; then
OK=$_VSERVER_GUEST
fi
OK=`echo "$OK" | tr '[:upper:]' '[:lower:]'`
while [ "X$OK" != "Xyes" -a "X$OK" != "Xno" ]; do
echo ""
echononl "\twrong entry! [yes/no]: "
read OK
OK=`echo "$OK" | tr '[:upper:]' '[:lower:]'`
done
if [ "$OK" = "yes" ]; then
SYSTEMD_EXISTS=false
else
if [ "X`which systemd`" = "X" ]; then
SYSTEMD_EXISTS=false
else
SYSTEMD_EXISTS=true
fi
fi
clear
echo ""
echo -e "\033[15G\033[32mSetup new Sympa Domain \033[37m\033[1m$SYMPA_LIST_DOMAIN\033[0;32m using the following Parameters \033[m"
echo ""
echo "Sympa Installation Directory.........................: $SYMPA_HOME"
echo "Sympa main configuration file........................: $SYMPA_MAIN_CONF_FILE"
echo "Sympa User...........................................: $SYMPA_USER"
echo "Sympa Group..........................................: $SYMPA_GROUP"
echo ""
echo "Sympa List Domain....................................: $SYMPA_LIST_DOMAIN"
echo "Sympa List Data Directory............................: $SYMPA_LIST_DATA_DIR"
echo "Sympa's PID Directory................................: $SYMPA_PID_DIR"
echo "Sympa's CGI Directory................................: $SYMPA_CGI_DIR"
echo "Sympa's Staic Directory..............................: $SYMPA_STATIC_DIR"
echo "Sympa's Systemd Directory............................: $SYMPA_SYSTEMD_DIR"
echo "Listmaster...........................................: $SYMPA_LISTMASTER"
echo "URL of the Webinterface..............................: $SYMPA_WEB_URL"
echo "Title for the Webinterface...........................: $SYMPA_WEBINTERFACE_TITLE"
echo ""
echo "Postfix related:"
echo " relay domain file for sympa domains...............: $POSTFIX_RELAY_DOMAIN_FILE"
echo " transport file for sympa domains..................: $POSTFIX_TRANSPORT_FILE"
#echo " canonical maps for addresse"
#echo " (postmaster|abuse|sympa-request|sympa-owner)@..: $POSTFIX_CANONICAL_MAPS"
echo " virtual maps file "
echo " (postmaster|abuse|sympa-request|sympa-owner)@..: $POSTFIX_VIRTUAL_ALIAS_MAPS"
echo " virtual maps forward address(es)..................: $POSTMASTER_ABUSE_ADDRESS"
echo ""
echo "Apache Webserver related:"
echo " IPv4 Address (Sympa Webinterface).................: $IPv4"
echo " IPv6 Address (Sympa Webinterface).................: $IPv6"
echo ""
echo " Apache Configuration Directory....................: $apache_conf_dir"
echo " Apache VHost Directory............................: $apache_vhost_dir"
echo " Apache Log Directory..............................: $apache_log_dir"
echo ""
echononl "Start with that configuration? [yes/no]: "
read OK
while [ "X$OK" != "Xyes" -a "X$OK" != "XYes" -a "X$OK" != "XNo" -a "X$OK" != "Xno" ]
do
echononl "wrong entry! [yes/no] :"
read OK
done
[ $OK = "Yes" -o $OK = "yes" ] || fatal "Change parameters and restart script: `basename $0`"
echo ""
echo ""
_log_file=create-sympa-domain_$SYMPA_LIST_DOMAIN.log
if [ -f "$_log_file" ];then
mv $_log_file $_log_file.`date +%Y%m%d-%H%M`
fi
touch ${_logdir}/main.log
echo "## -----------" >> $_log_file
echo "## - Setup new Sympa Domain \"$SYMPA_LIST_DOMAIN\" using the following Parameters" >> $_log_file
echo "## -----------" >> $_log_file
echo "## -" >> $_log_file
echo "## - Sympa Installation Directory..........................: $SYMPA_HOME" >> $_log_file
echo "## - Sympa main configuration file.........................: $SYMPA_MAIN_CONF_FILE" >> $_log_file
echo "## - Sympa User............................................: $SYMPA_USER" >> $_log_file
echo "## - Sympa Group...........................................: $SYMPA_GROUP" >> $_log_file
echo "## -" >> $_log_file
echo "## - Sympa List Domain.....................................: $SYMPA_LIST_DOMAIN" >> $_log_file
echo "## - Sympa List Data Directory.............................: $SYMPA_LIST_DATA_DIR" >> $_log_file
echo "## - Sympa's PID Directory.................................: $SYMPA_PID_DIR" >> $_log_file
echo "## - Sympa's CGI Directory.................................: $SYMPA_CGI_DIR" >> $_log_file
echo "## - Sympa's Staic Directory...............................: $SYMPA_STATIC_DIR" >> $_log_file
echo "## - Sympa's Systemd Directory.............................: $SYMPA_SYSTEMD_DIR" >> $_log_file
echo "## - Listmaster............................................: $SYMPA_LISTMASTER" >> $_log_file
echo "## - URL of the Webinterface...............................: $SYMPA_WEB_URL" >> $_log_file
echo "## - Title for the Webinterface............................: $SYMPA_WEBINTERFACE_TITLE" >> $_log_file
echo "## -" >> $_log_file
echo "## - Postfix related:" >> $_log_file
echo "## - relay domain file for sympa domains................: $POSTFIX_RELAY_DOMAIN_FILE" >> $_log_file
echo "## - transport file for sympa domains...................: $POSTFIX_TRANSPORT_FILE" >> $_log_file
#echo "## - canonical maps for addresse"
#echo "## - (postmaster|abuse|sympa-request|sympa-owner)@...: $POSTFIX_CANONICAL_MAPS" >> $_log_file
echo "## - virtual maps file for adresses postmaster@"
echo "## - (postmaster|abuse|sympa-request|sympa-owner:)@..: $POSTFIX_VIRTUAL_ALIAS_MAPS" >> $_log_file
echo "## - virtual maps forward address(es)...................: $POSTMASTER_ABUSE_ADDRESS" >> $_log_file
echo "## -" >> $_log_file
echo "## - Apache Webserver related:" >> $_log_file
echo "## - IPv4 Address (Sympa Webinterface)..................: $IPv4" >> $_log_file
echo "## - IPv6 Address (Sympa Webinterface)..................: $IPv6" >> $_log_file
echo "## -" >> $_log_file
echo "## - Apache Configuration Directory.....................: $apache_conf_dir" >> $_log_file
echo "## - Apache VHost Directory.............................: $apache_vhost_dir" >> $_log_file
echo "## - Apache Log Directory...............................: $apache_log_dir" >> $_log_file
echo "## -" >> $_log_file
echo "" >> $_log_file
echo "SYMPA_HOME=$SYMPA_HOME" >> $_log_file
echo "SYMPA_MAIN_CONF_FILE=$SYMPA_MAIN_CONF_FILE" >> $_log_file
echo "SYMPA_USER=$SYMPA_USER" >> $_log_file
echo "SYMPA_GROUP=$SYMPA_GROUP" >> $_log_file
echo "" >> $_log_file
echo "SYMPA_LIST_DOMAIN=$SYMPA_LIST_DOMAIN" >> $_log_file
echo "SYMPA_LIST_DATA_DIR=$SYMPA_LIST_DATA_DIR" >> $_log_file
echo "SYMPA_PID_DIR=$SYMPA_PID_DIR" >> $_log_file
echo "SYMPA_CGI_DIR=$SYMPA_CGI_DIR" >> $_log_file
echo "SYMPA_STATIC_DIR=$SYMPA_STATIC_DIR" >> $_log_file
echo "SYMPA_SYSTEMD_DIR=$SYMPA_SYSTEMD_DIR" >> $_log_file
echo "SYMPA_LISTMASTER=$SYMPA_LISTMASTER" >> $_log_file
echo "SYMPA_WEB_URL=$SYMPA_WEB_URL" >> $_log_file
echo "SYMPA_WEBINTERFACE_TITLE=$SYMPA_WEBINTERFACE_TITLE" >> $_log_file
echo "" >> $_log_file
echo "POSTFIX_RELAY_DOMAIN_FILE=$POSTFIX_RELAY_DOMAIN_FILE" >> $_log_file
echo "POSTFIX_TRANSPORT_FILE=$POSTFIX_TRANSPORT_FILE" >> $_log_file
echo "POSTFIX_CANONICAL_MAPS=$POSTFIX_CANONICAL_MAPS" >> $_log_file
echo "POSTFIX_VIRTUAL_ALIAS_MAPS=$POSTFIX_VIRTUAL_ALIAS_MAPS" >> $_log_file
echo "POSTMASTER_ABUSE_ADDRESS=$POSTMASTER_ABUSE_ADDRESS" >> $_log_file
echo "" >> $_log_file
echo "IPv4=$IPv4" >> $_log_file
echo "IPv6=$IPv6" >> $_log_file
echo "apache_conf_dir=$apache_conf_dir" >> $_log_file
echo "apache_vhost_dir=$apache_vhost_dir" >> $_log_file
echo "apache_log_dir=$apache_log_dir" >> $_log_file
echo "" >> $_log_file
## - Create Configuration Directory
## -
if [ -d "${SYMPA_HOME}/etc/$SYMPA_LIST_DOMAIN" ]; then
warn "Configuration Directory ${SYMPA_HOME}/etc/$SYMPA_LIST_DOMAIN\" aready exists"
echononl "Continue anyway? [yes/no]: "
read OK
while [ "X$OK" != "Xyes" -a "X$OK" != "XYes" -a "X$OK" != "XNo" -a "X$OK" != "Xno" ]; do
echononl "wrong entry! [yes/no] :"
read OK
done
[ $OK = "Yes" -o $OK = "yes" ] || fatal "Abortion by user.."
echo ""
else
echononl "\tCreate Configuration Directory for domain \"$SYMPA_LIST_DOMAIN\".." >> $_log_file
echo "" >> $_log_file
echo "## - Create Configuration Directory for domain \"$SYMPA_LIST_DOMAIN\".." >> $_log_file
echo "## -" >> $_log_file
echo "mkdir ${SYMPA_HOME}/etc/$SYMPA_LIST_DOMAIN" >> $_log_file
mkdir ${SYMPA_HOME}/etc/$SYMPA_LIST_DOMAIN >> $_log_file 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fi
fi
## - Set owner/group to Domains Configuration Directory
## -
echononl "\tSet owner/group for dir \"${SYMPA_HOME}/etc/${SYMPA_LIST_DOMAIN}\".."
echo "" >> $_log_file
echo "## - Set owner/group for directory \"${SYMPA_HOME}/etc/${SYMPA_LIST_DOMAIN}\".." >> $_log_file
echo "## -" >> $_log_file
echo "chown ${SYMPA_USER}:$SYMPA_GROUP ${SYMPA_HOME}/etc/$SYMPA_LIST_DOMAIN" >> $_log_file
chown ${SYMPA_USER}:$SYMPA_GROUP ${SYMPA_HOME}/etc/$SYMPA_LIST_DOMAIN >> $_log_file 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fi
## - Set Permissions to Domains Configuration Directory
## -
echononl "\tSet Permissions for dir \"${SYMPA_HOME}/etc/${SYMPA_LIST_DOMAIN}\".."
echo "" >> $_log_file
echo "## - Set Permissions for directory \"${SYMPA_HOME}/etc/${SYMPA_LIST_DOMAIN}\".." >> $_log_file
echo "## -" >> $_log_file
echo "chmod 750 ${SYMPA_HOME}/etc/$SYMPA_LIST_DOMAIN" >> $_log_file
chmod 750 ${SYMPA_HOME}/etc/$SYMPA_LIST_DOMAIN >> $_log_file 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fi
echo ""
## - Create "robot.conf"
## -
if [ -f "${SYMPA_HOME}/etc/$SYMPA_LIST_DOMAIN/robot.conf" ]; then
warn "Configuration file ${SYMPA_HOME}/etc/$SYMPA_LIST_DOMAIN/robot.conf already exists"
echononl "Continue anyway? [yes/no]: "
read OK
while [ "X$OK" != "Xyes" -a "X$OK" != "XYes" -a "X$OK" != "XNo" -a "X$OK" != "Xno" ]; do
echononl "wrong entry! [yes/no] :"
read OK
done
[ $OK = "Yes" -o $OK = "yes" ] || fatal "Abortion by user.."
_date=`date +%Y%m%d-%H%M`
echo "" >> $_log_file
echo "## - Backup existing configuration file" >> $_log_file
echo "## -" >> $_log_file
echo "cp -a ${SYMPA_HOME}/etc/${SYMPA_LIST_DOMAIN}/robot.conf \\" >> $_log_file
echo " ${SYMPA_HOME}/etc/${SYMPA_LIST_DOMAIN}/robot.conf.$_date" >> $_log_file
cp -a ${SYMPA_HOME}/etc/${SYMPA_LIST_DOMAIN}/robot.conf \
${SYMPA_HOME}/etc/${SYMPA_LIST_DOMAIN}/robot.conf.$_date
info "Old Configuration file was saved to file \"robot.$_date\"."
fi
echononl "\tCreate Configuration \"robot.conf\" for domain \"$SYMPA_LIST_DOMAIN\".."
echo "" >> $_log_file
echo "## - Create Configuration \"robot.conf\" for domain \"$SYMPA_LIST_DOMAIN\".." >> $_log_file
echo "## -" >> $_log_file
echo "cat <<EOF > ${SYMPA_HOME}/etc/$SYMPA_LIST_DOMAIN/robot.conf
## This is a sample Virtual Host definition for Sympa
## Once adapted, this file should installed in vhost
## subdirectory in Sympa configuration directory. You'll
## have to create a corresponding vhost subdirectory in
## Sympa state directory.
## Check the documentation related to virtual hosting on http://www.sympa.org
## This hostname will be compared with 'SERVER_NAME' ENV var in wwsympa.fcgi
## To deduce which Virtual Robot is being queried
http_host $SYMPA_LIST_DOMAIN
## URL of the Webinterface
wwsympa_url $SYMPA_WEB_URL
## Listmasters email addresses
listmaster $SYMPA_LISTMASTER
## Title for the ML service
## It is displayed as a title in the web interface
title $SYMPA_WEBINTERFACE_TITLE
create_list listmaster
## The default action when entering the web interface
## Can be 'lists', 'home' or 'which'
default_home lists
## lang
## Standardsprache (eine der unterstützen Sprachen)
## Dies ist die Standardsprache, die von Sympa verwendet wird
#lang en-US
lang de
## You can define custom colors for the Virtual Robot's
## Web interface
dark_color #00aa00
light_color #ddffdd
selected_color #0099cc
EOF" >> $_log_file
cat <<EOF > ${SYMPA_HOME}/etc/$SYMPA_LIST_DOMAIN/robot.conf 2>> $_log_file
## This is a sample Virtual Host definition for Sympa
## Once adapted, this file should installed in vhost
## subdirectory in Sympa configuration directory. You'll
## have to create a corresponding vhost subdirectory in
## Sympa state directory.
## Check the documentation related to virtual hosting on http://www.sympa.org
## This hostname will be compared with 'SERVER_NAME' ENV var in wwsympa.fcgi
## To deduce which Virtual Robot is being queried
http_host $SYMPA_LIST_DOMAIN
## URL of the Webinterface
wwsympa_url $SYMPA_WEB_URL
## Listmasters email addresses
listmaster $SYMPA_LISTMASTER
## Title for the ML service
## It is displayed as a title in the web interface
title $SYMPA_WEBINTERFACE_TITLE
create_list listmaster
## The default action when entering the web interface
## Can be 'lists', 'home' or 'which'
default_home home
## You can define custom colors for the Virtual Robot's
## Web interface
dark_color #00aa00
light_color #ddffdd
selected_color #0099cc
EOF
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fi
## - Set owner/group for \"robot.conf\"..
## -
echononl "\tSet owner/group for \"robot.conf\".."
echo "" >> $_log_file
echo "## - Set owner/group for \"robot.conf\".." >> $_log_file
echo "## -" >> $_log_file
echo "chown ${SYMPA_USER}:$SYMPA_GROUP ${SYMPA_HOME}/etc/${SYMPA_LIST_DOMAIN}/robot.conf" >> $_log_file
chown ${SYMPA_USER}:$SYMPA_GROUP ${SYMPA_HOME}/etc/${SYMPA_LIST_DOMAIN}/robot.conf >> $_log_file 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fi
echo ""
## - Create Listdata Directory
## -
if [ -d "${SYMPA_LIST_DATA_DIR}/$SYMPA_LIST_DOMAIN" ]; then
warn "List Data Directory \"${SYMPA_LIST_DATA_DIR}/$SYMPA_LIST_DOMAIN\" aready exists"
echononl "Continue anyway? [yes/no]: "
read OK
while [ "X$OK" != "Xyes" -a "X$OK" != "XYes" -a "X$OK" != "XNo" -a "X$OK" != "Xno" ]; do
echononl "wrong entry! [yes/no] :"
read OK
done
[ $OK = "Yes" -o $OK = "yes" ] || fatal "Abortion by user.."
echo ""
else
echononl "\tCreate List Data Directory \"${SYMPA_LIST_DATA_DIR}/$SYMPA_LIST_DOMAIN\".."
echo "" >> $_log_file
echo "## - Create List Data Directory \"${SYMPA_LIST_DATA_DIR}/$SYMPA_LIST_DOMAIN\".." >> $_log_file
echo "## -" >> $_log_file
echo "mkdir ${SYMPA_LIST_DATA_DIR}/$SYMPA_LIST_DOMAIN" >> $_log_file
mkdir ${SYMPA_LIST_DATA_DIR}/$SYMPA_LIST_DOMAIN >> $_log_file 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fi
fi
## - Set owner/group to List Data Directory
## -
echononl "\tSet owner/group for dir \"${SYMPA_LIST_DATA_DIR}/$SYMPA_LIST_DOMAIN\".."
echo "" >> $_log_file
echo "## - Set owner/group for directory \"${SYMPA_LIST_DATA_DIR}/$SYMPA_LIST_DOMAIN\".." >> $_log_file
echo "## -" >> $_log_file
echo "chown ${SYMPA_USER}:$SYMPA_GROUP ${SYMPA_LIST_DATA_DIR}/$SYMPA_LIST_DOMAIN" >> $_log_file
chown ${SYMPA_USER}:$SYMPA_GROUP ${SYMPA_LIST_DATA_DIR}/$SYMPA_LIST_DOMAIN >> $_log_file 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fi
## - Set Permissions to List Data Directory
## -
echononl "\tSet Permissions for dir \"${SYMPA_LIST_DATA_DIR}/$SYMPA_LIST_DOMAIN\".."
echo "" >> $_log_file
echo "## - Set Permissions for directory \"${SYMPA_LIST_DATA_DIR}/$SYMPA_LIST_DOMAIN\".." >> $_log_file
echo "## -" >> $_log_file
echo "chmod 750 ${SYMPA_LIST_DATA_DIR}/$SYMPA_LIST_DOMAIN" >> $_log_file
chmod 750 ${SYMPA_LIST_DATA_DIR}/$SYMPA_LIST_DOMAIN >> $_log_file 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fi
echo ""
## - Get escaped string for new list domain
## -
echononl "\tGet escaped string for new list domain.."
echo "" >> $_log_file
echo "## - Get escaped string for new list domain" >> $_log_file
echo "## -" >> $_log_file
echo "SYMPA_LIST_DOMAIN_ESCAPED=\${SYMPA_LIST_DOMAIN//\\./\\\\.}" >> $_log_file
SYMPA_LIST_DOMAIN_ESCAPED=${SYMPA_LIST_DOMAIN//\./\\.}
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fi
## - Add entries for postfix transport to file $POSTFIX_TRANSPORT_FILE
## -
_tmp=$(echo $SYMPA_LIST_DOMAIN_ESCAPED | sed 's/\\/\\\\\\/g')
echononl "\tAdd entries for postfix transport ($POSTFIX_TRANSPORT_FILE).."
if grep $_tmp $POSTFIX_TRANSPORT_FILE > /dev/null 2>&1 ; then
echo_skipped
warn "Entries for \"$SYMPA_LIST_DOMAIN\" in $POSTFIX_TRANSPORT_FILE exist already."
else
echo "" >> $_log_file
echo "## - Add entries for postfix transport ($POSTFIX_TRANSPORT_FILE).." >> $_log_file
echo "## -" >> $_log_file
echo "cat <<EOF >> $POSTFIX_TRANSPORT_FILE
/^.*+owner\@${SYMPA_LIST_DOMAIN_ESCAPED}\$/ sympabounce:
/^bounce+.*\@${SYMPA_LIST_DOMAIN_ESCAPED}\$/ sympabounce:
/^.*\@${SYMPA_LIST_DOMAIN_ESCAPED}\$/ sympa:
EOF" >> $_log_file
cat <<EOF >> $POSTFIX_TRANSPORT_FILE
/^.*+owner\@${SYMPA_LIST_DOMAIN_ESCAPED}\$/ sympabounce:
/^bounce+.*\@${SYMPA_LIST_DOMAIN_ESCAPED}\$/ sympabounce:
/^.*\@${SYMPA_LIST_DOMAIN_ESCAPED}\$/ sympa:
EOF
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fi
fi
## - Add entries for address forwarding using virtual_alias_maps
## -
_tmp=$(echo $SYMPA_LIST_DOMAIN_ESCAPED | sed 's/\\/\\\\\\/g')
echononl "\tAdd entries for address forwarding ($POSTFIX_VIRTUAL_ALIAS_MAPS).."
if grep $_tmp $POSTFIX_VIRTUAL_ALIAS_MAPS > /dev/null 2>&1 ; then
echo_skipped
warn "Entries for \"$SYMPA_LIST_DOMAIN\" in $POSTFIX_VIRTUAL_ALIAS_MAPS exist already."
else
echo "" >> $_log_file
echo "## - Add entries for address rewriting ($POSTFIX_VIRTUAL_ALIAS_MAPS)...." >> $_log_file
echo "## -" >> $_log_file
echo "cat <<EOF >> $POSTFIX_VIRTUAL_ALIAS_MAPS
/^(postmaster|abuse|sympa-request|sympa-owner)\@${SYMPA_LIST_DOMAIN_ESCAPED}\$/ $POSTMASTER_ABUSE_ADDRESS
EOF" >> $_log_file
cat <<EOF >> $POSTFIX_VIRTUAL_ALIAS_MAPS
/^(postmaster|abuse|sympa-request|sympa-owner)\@${SYMPA_LIST_DOMAIN_ESCAPED}\$/ $POSTMASTER_ABUSE_ADDRESS
EOF
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fi
fi
### - Add entries for addressrewriting using cononical_recipient_maps
### -
#_tmp=$(echo $SYMPA_LIST_DOMAIN_ESCAPED | sed 's/\\/\\\\\\/g')
#echononl "\tAdd entries for address rewriting ($POSTFIX_CANONICAL_MAPS).."
#if grep $_tmp $POSTFIX_CANONICAL_MAPS > /dev/null 2>&1 ; then
# echo_skipped
# warn "Entries for \"$SYMPA_LIST_DOMAIN\" in $POSTFIX_CANONICAL_MAPS exist already."
#else
# echo "" >> $_log_file
# echo "## - Add entries for address rewriting ($POSTFIX_CANONICAL_MAPS)...." >> $_log_file
# echo "## -" >> $_log_file
# echo "cat <<EOF >> $POSTFIX_CANONICAL_MAPS
#
#/^(postmaster|abuse|sympa-request|sympa-owner)\@${SYMPA_LIST_DOMAIN_ESCAPED}\$/ $POSTMASTER_ABUSE_ADDRESS
#EOF" >> $_log_file
#
# cat <<EOF >> $POSTFIX_CANONICAL_MAPS
#
#/^(postmaster|abuse|sympa-request|sympa-owner)\@${SYMPA_LIST_DOMAIN_ESCAPED}\$/ $POSTMASTER_ABUSE_ADDRESS
#EOF
# if [ "$?" = "0" ]; then
# echo_ok
# else
# echo_failed
# fi
#fi
## - Add entries for postfix relay domains to file $POSTFIX_RELAY_DOMAIN_FILE
## -
echononl "\tAdd entries for postfix relay domains ($POSTFIX_RELAY_DOMAIN_FILE).."
if grep $SYMPA_LIST_DOMAIN $POSTFIX_RELAY_DOMAIN_FILE > /dev/null 2>&1 ; then
echo_skipped
warn "Entries for \"$SYMPA_LIST_DOMAIN\" in $POSTFIX_RELAY_DOMAIN_FILE exist already."
else
echo "" >> $_log_file
echo "## - Add entries for postfix transport ($POSTFIX_RELAY_DOMAIN_FILE).." >> $_log_file
echo "## -" >> $_log_file
echo "cat <<EOF >> $POSTFIX_RELAY_DOMAIN_FILE
$SYMPA_LIST_DOMAIN XXXX
EOF" >> $_log_file
cat <<EOF >> $POSTFIX_RELAY_DOMAIN_FILE
$SYMPA_LIST_DOMAIN XXXX
EOF
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fi
echononl "\tUpdate db file ${POSTFIX_RELAY_DOMAIN_FILE}.db.."
echo "" >> $_log_file
echo "## - Update db file ${POSTFIX_RELAY_DOMAIN_FILE}.db.." >> $_log_file
echo "## -" >> $_log_file
echo "postmap btree:${POSTFIX_RELAY_DOMAIN_FILE}" >> $_log_file
postmap btree:${POSTFIX_RELAY_DOMAIN_FILE} >> $_log_file 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fi
fi
echo ""
echononl "\tReload Postfix Configuration.."
echo "" >> $_log_file
echo "## - Reload Postfix Configuration.." >> $_log_file
echo "## -" >> $_log_file
echo "/etc/init.d/postfix reload" >> $_log_file
/etc/init.d/postfix reload >> $_log_file 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fi
echo ""
## - Backup existing VHost Configuration
## -
if [[ -f "$apache_vhost_dir/${SYMPA_LIST_DOMAIN}.conf" ]] ; then
echononl "\tBackup VHost Configuration for '$SYMPA_LIST_DOMAIN'.."
echo "" >> $_log_file
echo "## - Backup VHost Configuration for '$SYMPA_LIST_DOMAIN'.." >> $_log_file
echo "## -" >> $_log_file
echo "mv \"$apache_vhost_dir/${SYMPA_LIST_DOMAIN}.conf\" \"$apache_vhost_dir/${SYMPA_LIST_DOMAIN}.conf.$backup_date\"" >> $_log_file
mv "$apache_vhost_dir/${SYMPA_LIST_DOMAIN}.conf" "$apache_vhost_dir/${SYMPA_LIST_DOMAIN}.conf.$backup_date"
if [[ $? = 0 ]]; then
echo_ok
else
echo_failed
fi
fi
## - Add VHost Configuration to Apache Webserver
## -
_apache_vhost_added=false
echononl "\tAdd VHost Configuration for Apache Webserver.."
echo "" >> $_log_file
echo "## - Add VHost Configuration for Apache Webserver...." >> $_log_file
echo "## -" >> $_log_file
echo "cat <<EOF > $apache_vhost_dir/${SYMPA_LIST_DOMAIN}.conf
# - $SYMPA_LIST_DOMAIN -#
<VirtualHost ${IPv4}:80 [${IPv6}]:80>
ServerAdmin admin@oopen.de
ServerName $SYMPA_LIST_DOMAIN
RewriteEngine on
RewriteCond %{HTTPS} !=on
RewriteRule (.*) https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
CustomLog ${apache_log_dir}/${SYMPA_LIST_DOMAIN}-access.log combined
ErrorLog ${apache_log_dir}/${SYMPA_LIST_DOMAIN}-error.log
</VirtualHost>
<VirtualHost ${IPv4}:443 [${IPv6}]:443>
ServerAdmin admin@oopen.de
ServerName $SYMPA_LIST_DOMAIN
RewriteEngine on
RewriteRule ^/\\\$ /$_wwsympa_dir/ [R]
" >> $_log_file
if [[ -f "${SYMPA_SYSTEMD_DIR}/wwsympa.service" ]]; then
echo "
<Location /$(basename \"$_wwsympa_dir\")>
SetHandler \"proxy:unix:${SYMPA_PID_DIR}/wwsympa.socket|fcgi://\"
</Location>
<Location /static-sympa>
Require all granted
</Location>
Alias /static-sympa ${SYMPA_STATIC_DIR}
" >> $_log_file
else
echo "
<Directory \"$SYMPA_CGI_DIR\">
AllowOverride none
Require all granted
</Directory>
<Directory \"$SYMPA_STATIC_DIR\">
AllowOverride none
Require all granted
</Directory>
Alias /static-sympa ${SYMPA_STATIC_DIR}
ScriptAlias /$_wwsympa_dir ${SYMPA_CGI_DIR}/wwsympa-wrapper.fcgi
<Location /${_wwsympa_dir}>
SetHandler fcgid-script
</Location>
" >> $_log_file
fi
echo "
SSLEngine on
## - HTTP Strict Transport Security (HSTS)
## -
## - HSTS tells a browser that the website should only be accessed through
## - a secure connection. The HSTS header will be remembered by a standard
## compliant browser for max-age seconds.
## -
## - Remember this settings for 1/2 year
## -
#Header add Strict-Transport-Security \"max-age=15768000\"
Header always set Strict-Transport-Security \"max-age=31536000; includeSubDomains\"
## - don't support weak ciphers
SSLHonorCipherOrder On
SSLCompression Off
SSLProtocol ALL -SSLv2 -SSLv3
SSLCertificateFile ${apache_conf_dir}/server-bundle.crt
SSLCertificateKeyFile ${apache_conf_dir}/server.key
CustomLog ${apache_log_dir}/${SYMPA_LIST_DOMAIN}-access.log combined
ErrorLog ${apache_log_dir}/${SYMPA_LIST_DOMAIN}-error.log
</VirtualHost>
EOF" >> $_log_file
cat <<EOF > $apache_vhost_dir/${SYMPA_LIST_DOMAIN}.conf
# - $SYMPA_LIST_DOMAIN -#
<VirtualHost ${IPv4}:80 [${IPv6}]:80>
ServerAdmin admin@oopen.de
ServerName $SYMPA_LIST_DOMAIN
RewriteEngine on
RewriteCond %{HTTPS} !=on
RewriteRule (.*) https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
CustomLog ${apache_log_dir}/${SYMPA_LIST_DOMAIN}-access.log combined
ErrorLog ${apache_log_dir}/${SYMPA_LIST_DOMAIN}-error.log
</VirtualHost>
<VirtualHost ${IPv4}:443 [${IPv6}]:443>
ServerAdmin admin@oopen.de
ServerName $SYMPA_LIST_DOMAIN
RewriteEngine on
RewriteRule ^/\$ /$_wwsympa_dir/ [R]
EOF
if [[ -f "${SYMPA_SYSTEMD_DIR}/wwsympa.service" ]]; then
cat <<EOF >> $apache_vhost_dir/${SYMPA_LIST_DOMAIN}.conf
<Location /$(basename "$_wwsympa_dir")>
SetHandler "proxy:unix:${SYMPA_PID_DIR}/wwsympa.socket|fcgi://"
</Location>
<Location /static-sympa>
Require all granted
</Location>
Alias /static-sympa ${SYMPA_STATIC_DIR}
EOF
else
cat <<EOF >> $apache_vhost_dir/${SYMPA_LIST_DOMAIN}.conf
<Directory "$SYMPA_CGI_DIR">
AllowOverride none
Require all granted
</Directory>
<Directory "$SYMPA_STATIC_DIR">
AllowOverride none
Require all granted
</Directory>
Alias /static-sympa ${SYMPA_STATIC_DIR}
ScriptAlias /$_wwsympa_dir ${SYMPA_CGI_DIR}/wwsympa-wrapper.fcgi
<Location /${_wwsympa_dir}>
SetHandler fcgid-script
</Location>
EOF
fi
cat <<EOF >> $apache_vhost_dir/${SYMPA_LIST_DOMAIN}.conf
SSLEngine on
## - HTTP Strict Transport Security (HSTS)
## -
## - HSTS tells a browser that the website should only be accessed through
## - a secure connection. The HSTS header will be remembered by a standard
## compliant browser for max-age seconds.
## -
## - Remember this settings for 1/2 year
## -
#Header add Strict-Transport-Security "max-age=15768000"
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
## - don't support weak ciphers
SSLHonorCipherOrder On
SSLCompression Off
SSLProtocol ALL -SSLv2 -SSLv3
SSLCertificateFile ${apache_conf_dir}/server-bundle.crt
SSLCertificateKeyFile ${apache_conf_dir}/server.key
CustomLog ${apache_log_dir}/${SYMPA_LIST_DOMAIN}-access.log combined
ErrorLog ${apache_log_dir}/${SYMPA_LIST_DOMAIN}-error.log
</VirtualHost>
EOF
if [ "$?" = "0" ]; then
echo_ok
apache_vhost_added=true
else
echo_failed
fi
if $apache_vhost_added ; then
_apache_configtest=false
echononl "\tCheck Apache Configuration"
echo "" >> $_log_file
echo "## - Check Apache Configuration" >> $_log_file
echo "## -" >> $_log_file
echo "apachectl configtest" >> $_log_file
apachectl configtest >> $_log_file 2>&1
if [ "$?" = "0" ]; then
echo_ok
_apache_configtest=true
else
echo_failed
fi
echononl "\tGraceful Restart Apache Webserver.."
if $_apache_configtest ; then
echo "" >> $_log_file
echo "## - Graceful Restart Apache Webserver.." >> $_log_file
echo "## -" >> $_log_file
echo "apachectl graceful" >> $_log_file
apachectl graceful >> $_log_file 2>&1
if [ "$?" = "0" ]; then
echo_ok
_apache_configtest=true
else
echo_failed
fi
else
echo_skipped
fi
fi
echo ""
echononl "\tRestart Sympa Mailing List Manager.."
echo "" >> $_log_file
echo "## - Restart Sympa Mailing List Manager" >> $_log_file
echo "## -" >> $_log_file
if $SYSTEMD_EXISTS ; then
echo "systemctl restart sympa" >> $_log_file
systemctl restart sympa >> $_log_file 2>&1
if [ "$?" = "0" ]; then
echo_ok
_apache_configtest=true
else
echo_failed
fi
else
echo "/etc/init.d/sympa restart" >> $_log_file
/etc/init.d/sympa restart >> $_log_file 2>&1
if [ "$?" = "0" ]; then
echo_ok
_apache_configtest=true
else
echo_failed
fi
fi
echo ""
echononl "\tRestart Sympa's Webservice 'wwsympa'.."
echo "" >> $_log_file
echo "## - Restart Sympa's Webservice 'wwsympa'" >> $_log_file
echo "## -" >> $_log_file
if $SYSTEMD_EXISTS ; then
echo "systemctl restart wwsympa" >> $_log_file
systemctl restart wwsympa >> $_log_file 2>&1
if [ "$?" = "0" ]; then
echo_ok
_apache_configtest=true
else
echo_failed
fi
else
echo "/etc/init.d/wwsympa restart" >> $_log_file
/etc/init.d/wwsympa restart >> $_log_file 2>&1
if [ "$?" = "0" ]; then
echo_ok
_apache_configtest=true
else
echo_failed
fi
fi
echo ""
exit 0