mailman/install_mailman.sh

2291 lines
78 KiB
Bash
Executable File

#!/usr/bin/env bash
## - Default values - not necessarily needed
## -
_MAILMAN_VERSION=2.1.26
_MAILMAN_USER=mailman
_MAILMAN_ADMIN_EMAIL="admin@initiativenserver.de"
_MAILMAN_SRC_BASE_DIR=/usr/local/src/mailman
_WEBSERVER_USER=www-data
_WEBSERVER_ADMIN_EMAIL="admin@initiativenserver.de"
_REQUIRED_DEB_PACKAGES="python python-dev python-dnspython"
_SSL_CERT_AKTIONSBUENDNIS="/var/lib/dehydrated/certs/lists.aktionsbuendnis-brandenburg.de/fullchain.pem"
_SSL_KEY_AKTIONSBUENDNIS="/var/lib/dehydrated/certs/lists.aktionsbuendnis-brandenburg.de/privkey.pem"
_SSL_CERT_INITIATIVENSERVER="/var/lib/dehydrated/certs/lists.initiativenserver.de/fullchain.pem"
_SSL_KEY_INITIATIVENSERVER="/var/lib/dehydrated/certs/lists.initiativenserver.de/privkey.pem"
## - Domains, die von Malman verwaltet werden sollen
## -
## - fqn-domain1|ipv4-domain1|ipv6-domain1|vhost-dir [fqn-domain2|ipv4-domain2|ipv6domain2|vhost-dir] ..
## -
_DOMAINS="lists.aktionsbuendnis-brandenburg.de|83.223.86.117|2a01:30:0:13:2c5:48ff:feee:f21d|/usr/local/apache2/conf/vhosts|${_SSL_CERT_AKTIONSBUENDNIS}|${_SSL_KEY_AKTIONSBUENDNIS}
lists.initiativenserver.de|83.223.86.117|2a01:30:0:13:2c5:48ff:feee:f21d|/usr/local/apache2/conf/vhosts|${_SSL_CERT_INITIATIVENSERVER}|${_SSL_KEY_INITIATIVENSERVER}"
## -
## - Ende: Default values
## --- 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 "Fehler: $*"
echo ""
echo -e "\t\033[31m\033[1mInstalllation wird abgebrochen\033[m\033[m"
echo ""
exit 1
}
echo_ok() {
echo -e "\033[75G[ \033[1;32mok\033[m ]"
## echo -e " [ ok ]"
}
echo_failed(){
echo -e "\033[75G[ \033[1;31mfailed\033[m ]"
## echo -e " [ failed ]"
}
echo_skipped() {
echo -e "\033[75G[ \033[33m\033[1mskipped\033[m ]"
}
## ---
## --- END: functions
_curdir=`pwd`
clear
echo -e "\033[21G\033[32mInstallationsscript für den Listenmanager \"Mailman\" \033[m"
echo
## - root user?
## -
if [ "$(id -u)" != "0" ]; then
fatal Skript muss als \"root\" ausgeführt werden
fi
DISTRIBUTION=
echo ""
echo -e "\033[32m-- Linux Distribution\033[m"
echo ""
echo "Um welche Linux Distribution handelt es sich?"
echo ""
echo "[1] Debian"
echo "[2] andere"
echo ""
echononl "Eingabe: "
while [ "$DISTRIBUTION" != "Debian" -a "$DISTRIBUTION" != "other" ];do
read OPTION
case $OPTION in
1) DISTRIBUTION="Debian"
;;
2) DISTRIBUTION="other"
;;
*) echo ""
echo -e "\tFalsche Eingabe ! [ 1 = Debian ; 2 = andere ]"
echo ""
echononl "Eingabe:"
;;
esac
done
clear
echo ""
echo -e "\033[21G\033[32mMailman\033[m"
echo ""
echo "Gib die Versionsnummer der Mailman-Distribution an."
echo ""
MAILMAN_VERSION=
while [ "X$MAILMAN_VERSION" = "X" ]
do
echononl "Mailman Version [$_MAILMAN_VERSION]: "
read MAILMAN_VERSION
if [ "X$MAILMAN_VERSION" = "X" ]; then
MAILMAN_VERSION=$_MAILMAN_VERSION
fi
_MAILMAN_INSTALL_DIR=/usr/local/mailman-$MAILMAN_VERSION
_MAILMAN_DATA_DIR=/data/MAILMAN-$MAILMAN_VERSION
distfile=mailman-${MAILMAN_VERSION}.tar.gz
done
echo ""
echo -e "\033[32m--\033[m"
echo ""
echo "Gib den Namen des Verzeichnisses in das MAILMAN installiert werden soll an."
echo ""
MAILMAN_INSTALL_DIR=
while [ "X$MAILMAN_INSTALL_DIR" = "X" ]
do
echononl "Mailman Installationsverzeichnis [${_MAILMAN_INSTALL_DIR}]: "
read MAILMAN_INSTALL_DIR
if [ "X$MAILMAN_INSTALL_DIR" = "X" ]; then
MAILMAN_INSTALL_DIR=$_MAILMAN_INSTALL_DIR
LINK=yes
fi
done
echo ""
echo -e "\033[32m--\033[m"
echo ""
echo "Gib User Namen und User Gruppe für Mailman ein.."
echo ""
MAILMAN_USER=
while [ "X$MAILMAN_USER" = "X" ]
do
echononl "MAILMAN-User [${_MAILMAN_USER}]: "
read MAILMAN_USER
if [ "X$MAILMAN_USER" = "X" ]; then
MAILMAN_USER=$_MAILMAN_USER
fi
done
MAILMAN_GROUP=
while [ "X$MAILMAN_GROUP" = "X" ]
do
echononl "MAILMAN-Gruppe [$MAILMAN_USER]: "
read MAILMAN_GROUP
if [ "X$MAILMAN_GROUP" = "X" ]; then
MAILMAN_GROUP=$MAILMAN_USER
fi
done
echo
echo ""
echo "Gib eine Admin E-Mailadresse für Mailman ein.."
echo ""
MAILMAN_ADMIN_EMAIL=
while [ "X$MAILMAN_ADMIN_EMAIL" = "X" ]
do
echononl "Mailman Admin E-Mail [$_MAILMAN_ADMIN_EMAIL]: "
read MAILMAN_ADMIN_EMAIL
if [ "X$MAILMAN_ADMIN_EMAIL" = "X" ]; then
MAILMAN_ADMIN_EMAIL=$_MAILMAN_ADMIN_EMAIL
fi
done
echo ""
echo -e "\033[32m--\033[m"
echo ""
echo "Passworte .."
_MAILMAN_MASTER_PASS_1="X"
_MAILMAN_MASTER_PASS_2="Y"
echo ""
while [ "$_MAILMAN_MASTER_PASS_1" != "$_MAILMAN_MASTER_PASS_2" ]
do
echononl "Master Passwort Mailman: "
read -s _MAILMAN_MASTER_PASS_1
echo
if [ "X$_MAILMAN_MASTER_PASS_1" = "X" ]; then
echo -e "\n\t\033[33m\033[1mPassworteingabe erforderlich!\033[m\n"
continue
fi
echononl "Passwortwiederholung: "
read -s _MAILMAN_MASTER_PASS_2
echo
if [ "X$_MAILMAN_MASTER_PASS_2" = "X" ]; then
echo -e "\n\t\033[33m\033[1mPasswortwiederholung erforderlich!\033[m\n"
continue
fi
if [ "$_MAILMAN_MASTER_PASS_1" != "$_MAILMAN_MASTER_PASS_2" ];then
echo -e "\n\t\033[33m\033[1mPassworteingaben sind nicht identisch!\033[m\n"
else
MAILMAN_MASTER_PASS=$_MAILMAN_MASTER_PASS_2
fi
done
_MAILMAN_ADMIN_PASS_1="X"
_MAILMAN_ADMIN_PASS_2="Y"
echo ""
while [ "$_MAILMAN_ADMIN_PASS_1" != "$_MAILMAN_ADMIN_PASS_2" ]
do
echononl "Passwort zum Esrtellen von Mailinglisten: "
read -s _MAILMAN_ADMIN_PASS_1
echo
if [ "X$_MAILMAN_ADMIN_PASS_1" = "X" ]; then
echo -e "\n\t\033[33m\033[1mPassworteingabe erforderlich!\033[m\n"
continue
fi
echononl "Passwortwiederholung: "
read -s _MAILMAN_ADMIN_PASS_2
echo
if [ "X$_MAILMAN_ADMIN_PASS_2" = "X" ]; then
echo -e "\n\t\033[33m\033[1mPasswortwiederholung erforderlich!\033[m\n"
continue
fi
if [ "$_MAILMAN_ADMIN_PASS_1" != "$_MAILMAN_ADMIN_PASS_2" ];then
echo -e "\n\t\033[33m\033[1mPassworteingaben sind nicht identisch!\033[m\n"
else
MAILMAN_ADMIN_PASS=$_MAILMAN_ADMIN_PASS_2
fi
done
echo ""
_LIST_MAILMAN_PASS_1="X"
_LIST_MAILMAN_PASS_2="Y"
while [ "$_LIST_MAILMAN_PASS_1" != "$_LIST_MAILMAN_PASS_2" ]
do
echononl "Passwort Systemweite Liste \"mailman\": "
read -s _LIST_MAILMAN_PASS_1
echo
if [ "X$_LIST_MAILMAN_PASS_1" = "X" ]; then
echo -e "\n\t\033[33m\033[1mPassworteingabe erforderlich!\033[m\n"
continue
fi
echononl "Passwortwiederholung: "
read -s _LIST_MAILMAN_PASS_2
echo
if [ "X$_LIST_MAILMAN_PASS_2" = "X" ]; then
echo -e "\n\t\033[33m\033[1mPasswortwiederholung erforderlich!\033[m\n"
continue
fi
if [ "$_LIST_MAILMAN_PASS_1" != "$_LIST_MAILMAN_PASS_2" ];then
echo -e "\n\t\033[33m\033[1mPassworteingaben sind nicht identisch!\033[m\n"
else
LIST_MAILMAN_PASS=$_LIST_MAILMAN_PASS_2
fi
done
echo
echononl "Zeige Passworte im Ausgabefenster [yes/no]: "
read OK
while [ "X$OK" != "Xyes" -a "X$OK" != "XYes" -a "X$OK" != "XNo" -a "X$OK" != "Xno" ]
do
echononl "falsche Angabe! [yes/no] :"
read OK
done
if [ "$OK" = "Yes" -o $OK = "yes" ]; then
SHOW_PASS=true
else
SHOW_PASS=false
fi
_MAILMAN_DOMAINS=""
for _val in $_DOMAINS ; do
_MAILMAN_DOMAINS="$_MAILMAN_DOMAINS `echo $_val | cut -d'|' -f1`"
done
echo ""
echo -e "\033[32m--\033[m"
echo ""
echo "Gib die Namen der Domains an, die von Mailmn verwaltet werden sollen."
echo ""
echo "Defaultwert ist: \"$_MAILMAN_DOMAINS\""
echo ""
MAILMAN_DOMAINS=
while [ "X$MAILMAN_DOMAINS" = "X" ]
do
echononl "Blank (Leerstellen) separierte Liste: "
read MAILMAN_DOMAINS
if [ "X$MAILMAN_DOMAINS" = "X" ]; then
MAILMAN_DOMAINS=$_MAILMAN_DOMAINS
fi
done
clear
APACHE_INSTALL_METHOD=
echo ""
echo -e "\033[21G\033[32mApache Webserver Einstellungen\033[m"
echo ""
echo "Gib die Installationsmethode des Apache Webservers an?"
echo ""
echo "[1] Debian Paket System"
echo "[2] Quellcode Installation"
echo ""
echononl "Eingabe: "
while [ "$APACHE_INSTALL_METHOD" != "Debian" -a "$APACHE_INSTALL_METHOD" != "Sourcecode" ];do
read OPTION
case $OPTION in
1) APACHE_INSTALL_METHOD="Debian"
;;
2) APACHE_INSTALL_METHOD="Sourcecode"
;;
*) echo ""
echo -e "\tFalsche Eingabe ! [ 1 = Debian ; 2 = Quellcode ]"
echo ""
echononl "Eingabe: "
;;
esac
done
if [ "$APACHE_INSTALL_METHOD" = "Debian" ]; then
if [ ! -d "/etc/apache2/sites_available" ]; then
fatal Kann Apache Installation nicht finden
fi
fi
echo ""
echo ""
echo -e "\033[32m-- Apache Webserver User / Gruppe / Admin E-Mail\033[m"
echo ""
echo "Gib den Namen des Benutzers und der Gruppe an, unter dem/der"
echo "der Webserver Prozess läuft an.."
echo ""
WEBSERVER_USER=
while [ "X$WEBSERVER_USER" = "X" ]
do
echononl "Webserver-User [${_WEBSERVER_USER}]: "
read WEBSERVER_USER
if [ "X$WEBSERVER_USER" = "X" ]; then
WEBSERVER_USER=$_WEBSERVER_USER
fi
done
WEBSERVER_GROUP=
while [ "X$WEBSERVER_GROUP" = "X" ]
do
echononl "Webserver-Gruppe [$WEBSERVER_USER]: "
read WEBSERVER_GROUP
if [ "X$WEBSERVER_GROUP" = "X" ]; then
WEBSERVER_GROUP=$WEBSERVER_USER
fi
done
echo
WEBSERVER_ADMIN_EMAIL=
while [ "X$WEBSERVER_ADMIN_EMAIL" = "X" ]
do
echononl "Webserver Admin E-Mail [$_WEBSERVER_ADMIN_EMAIL]: "
read WEBSERVER_ADMIN_EMAIL
if [ "X$WEBSERVER_ADMIN_EMAIL" = "X" ]; then
WEBSERVER_ADMIN_EMAIL=$_WEBSERVER_ADMIN_EMAIL
fi
done
WEBSERVER_DOMAINS=""
if [ "$MAILMAN_DOMAINS" = "$_MAILMAN_DOMAINS" ]; then
for _val in $_DOMAINS ; do
_domain=`echo $_val | cut -d'|' -f1`
_ipv4=`echo $_val | cut -d'|' -f2`
_ipv6=`echo $_val | cut -d'|' -f3`
_vhost_dir=`echo $_val | cut -d'|' -f4`
_ssl_cert=`echo $_val | cut -d'|' -f5`
_ssl_key=`echo $_val | cut -d'|' -f6`
echo ""
echo ""
echo -e "\033[32m-- Webinterface \033[m$_domain\033[32m"
if [ "$APACHE_INSTALL_METHOD" != "Debian" ]; then
echo -e "\tIPv4 Adresse / IPv6 Adresse / VHOST Verzeichnis\033[m"
else
echo -e "\tIPv4 Adresse / IPv6 Adresse\033[m"
fi
echo ""
echononl "IPv4 Adresse Webinterface \"$_domain\" [$_ipv4]: "
read ipv4
if [ "X$ipv4" = "X" ]; then
ipv4=$_ipv4
fi
echononl "IPv6 Adresse Webinterface \"$_domain\" [$_ipv6]: "
read ipv6
if [ "X$ipv6" = "X" ]; then
ipv6=$_ipv6
fi
if [ "$APACHE_INSTALL_METHOD" != "Debian" ]; then
echononl "VHOST Verzeichnis \"$_domain\" [$_vhost_dir]: "
read vhost_dir
if [ "X$vhost_dir" = "X" ]; then
vhost_dir=$_vhost_dir
fi
if [ ! -d $vhost_dir ]; then
fatal Kann Apache VHost Konfigurationsverzeichnis nicht finden
fi
else
vhost_dir="/etc/apache2/sites-available"
fi
echo ""
echononl "SSL Certificate location for \"$_domain\" [$_ssl_cert]: "
read ssl_cert
if [ "X$ssl_cert" = "X" ]; then
ssl_cert=$_ssl_cert
fi
echo ""
echononl "SSL Key location for \"$_domain\" [$_ssl_key]: "
read ssl_key
if [ "X$ssl_key" = "X" ]; then
ssl_key=$_ssl_key
fi
WEBSERVER_DOMAINS="$WEBSERVER_DOMAINS ${_domain}|${ipv4}|${ipv6}|${vhost_dir}|${ssl_cert}|${ssl_key}"
done
else
for _val in $MAILMAN_DOMAINS; do
echo ""
echo ""
echo -e "\033[32m-- Webinterface \033[m$_val\033[32m"
if [ "$APACHE_INSTALL_METHOD" != "Debian" ]; then
echo -e "\tIPv4 Adresse / IPv6 Adresse / VHOST Verzeichnis\033[m"
else
echo -e "\tIPv4 Adresse / IPv6 Adresse\033[m"
fi
echo ""
echononl "IPv4 Adresse Webinterface \"$_val\": "
read ipv4
while [ "X$ipv4" = "X" ]; do
echo ""
echo "!! Ungültige Eingabe - nochmal.."
echononl "IPv4 Adresse Webinterface \"$_val\": "
read ipv4
done
echononl "IPv6 Adresse Webinterface \"$_val\": "
read ipv6
while [ "X$ipv6" = "X" ]; do
echo ""
echo "!! Ungültige Eingabe - nochmal.."
echononl "IPv6 Adresse Webinterface \"$_val\": "
read ipv6
done
if [ "$APACHE_INSTALL_METHOD" != "Debian" ]; then
_vhost_dir="/usr/local/apache2/conf/vhosts"
echononl "VHOST Verzeichnis \"$_domain\" [$_vhost_dir]: "
read vhost_dir
if [ "X$vhost_dir" = "X" ]; then
vhost_dir=$_vhost_dir
fi
if [ ! -d $vhost_dir ]; then
fatal Kann Apache VHost Konfigurationsverzeichnis nicht finden
fi
else
vhost_dir="/etc/apache2/sites-available"
fi
echo ""
echononl "SSL Certificate location for \"$_val\" : "
read ssl_cert
echo ""
echononl "SSL Key location for \"$_val\" : "
read ssl_key
WEBSERVER_DOMAINS="$WEBSERVER_DOMAINS ${_val}|${ipv4}|${ipv6}|${vhost_dir}|${ssl_cert}|${ssl_key}"
done
fi
unset ipv4
unset ipv6
unset vhost_dir
POSTFIX_INSTALL_METHOD=
clear
echo ""
echo -e "\033[21G\033[32mPostfix Mailserver Einstellungen\033[m"
echo ""
echo "Gib die Installationsmethode des Postfix Mailservers an"
echo ""
echo "[1] Debian Paket System"
echo "[2] Quellcode Installation"
echo ""
echononl "Eingabe: "
while [ "$POSTFIX_INSTALL_METHOD" != "Debian" -a "$POSTFIX_INSTALL_METHOD" != "Sourcecode" ];do
read OPTION
case $OPTION in
1) POSTFIX_INSTALL_METHOD="Debian"
;;
2) POSTFIX_INSTALL_METHOD="Sourcecode"
;;
*) echo ""
echo -e "\tFalsche Eingabe ! [ 1 = Debian ; 2 = Quellcode ]"
echo ""
echononl "Eingabe: "
;;
esac
done
if [ "$POSTFIX_INSTALL_METHOD" = "Debian" ];then
POSTFIX_CONFIGURATION="/etc/postfix/main.cf"
fi
if [ "$POSTFIX_INSTALL_METHOD" != "Debian" ];then
echo ""
echo -e "\033[32m--\033[m"
echo ""
echo "Gib den Namen des Verzeichnisses an, indem sich die Konfigurationsdatei \"main.cf\" befindet"
echo ""
POSTFIX_CONFIGURATION=
_POSTFIX_CONFIGURATION="/usr/local/postfix/etc/main.cf"
while [ "X$POSTFIX_CONFIGURATION" = "X" ]
do
echononl "Pfad zur Konfigurationsdatei \"main.cf\" [${_POSTFIX_CONFIGURATION}]: "
read POSTFIX_CONFIGURATION
if [ "X$POSTFIX_CONFIGURATION" = "X" ]; then
POSTFIX_CONFIGURATION=$_POSTFIX_CONFIGURATION
fi
done
fi
if [ ! -f "$POSTFIX_CONFIGURATION" ];then
fatal "Kann Postfix Konfigurationsdatei \"$POSTFIX_CONFIGURATION\" nicht finden"
fi
echo ""
clear
echo -e "\033[21G\033[32mStarte Installation mit folgenden Parametern:\033[m"
echo ""
echo -e "Linuxdistribution...............: \033[33m$DISTRIBUTION\033[m"
echo -e "Mailman Versionsnummer..........: \033[33m$MAILMAN_VERSION\033[m"
echo -e "Installationsverzeichnis........: \033[33m$MAILMAN_INSTALL_DIR\033[m"
echo -e "Mailman User....................: \033[33m$MAILMAN_USER\033[m"
echo -e "Mailman Gruppe..................: \033[33m$MAILMAN_GROUP\033[m"
echo -e "Mailman Admin E-Mail............: \033[33m$MAILMAN_ADMIN_EMAIL\033[m"
echo ""
echo -e "Liste der Mailman Domains.......:\033[33m$MAILMAN_DOMAINS\033[m"
echo ""
if $SHOW_PASS ; then
echo -e "Mailman Master Passwort.........: \033[33m$MAILMAN_MASTER_PASS\033[m"
echo -e "Mailman Administrator Passwort..: \033[33m$MAILMAN_ADMIN_PASS\033[m"
echo -e "Passwort Liste \"mailman\"........: \033[33m$LIST_MAILMAN_PASS\033[m"
else
echo -e "Mailman Master Passwort.........: \033[33m**********\033[m"
echo -e "Mailman Administrator Passwort..: \033[33m**********\033[m"
echo -e "Passwort Liste \"mailman\"........: \033[33m**********\033[m"
fi
echo ""
if [ "$APACHE_INSTALL_METHOD" = "Debian" ]; then
echo -e "Webserver Installationsmethode..: \033[33mDebian Paket System\033[m"
else
echo -e "Webserver Installationsmethode..: \033[33mQuellcodeinstallation\033[m"
fi
echo -e "Webserver User..................: \033[33m$WEBSERVER_USER\033[m"
echo -e "Webserver Gruppe................: \033[33m$WEBSERVER_GROUP\033[m"
echo -e "Webserver Admin E-Mail..........: \033[33m$WEBSERVER_ADMIN_EMAIL\033[m"
for domain in $WEBSERVER_DOMAINS ; do
hostname="`echo $domain | cut -d '|' -f1`"
ipv4="`echo $domain | cut -d '|' -f2`"
ipv6="`echo $domain | cut -d '|' -f3`"
vhost_dir="`echo $domain | cut -d '|' -f4`"
echo ""
echo -e "Webservereinstellungen \033[1;34m$hostname\033[m:"
echo -e " Hostname..............: \033[33m$hostname\033[m"
echo -e " IPv4..................: \033[33m$ipv4\033[m"
echo -e " IPv6..................: \033[33m$ipv6\033[m"
echo -e " VHOST Verzeichnis:....: \033[33m$vhost_dir\033[m"
done
echo ""
if [ "$POSTFIX_INSTALL_METHOD" = "Debian" ]; then
echo -e "Postfix Installationsmethode....: \033[33mDebian Paket System\033[m"
else
echo -e "Postfix Installationsmethode....: \033[33mQuellcodeinstallation\033[m"
fi
echo -e "Postfix Konfigurationsdatei.....: \033[33m$POSTFIX_CONFIGURATION\033[m"
echo ""
echononl "einverstanden [yes/no]: "
read OK
while [ "X$OK" != "Xyes" -a "X$OK" != "XYes" -a "X$OK" != "XNo" -a "X$OK" != "Xno" ]
do
echononl "falsche Angabe! [yes/no] :"
read OK
done
[ $OK = "Yes" -o $OK = "yes" ] || fatal wiederhole Installation zur Eingabe anderer Parameter
echo ""
## - Sorcecode Verzeichnis vorhanden?
## -
if [ ! -d $_MAILMAN_SRC_BASE_DIR ];then
MAILMAN_SRC_BASE_DIR=/usr/local/src/mailman
if [ ! -d $MAILMAN_SRC_BASE_DIR ] ; then
mkdir -p MAILMAN_SRC_BASE_DIR
fi
else
MAILMAN_SRC_BASE_DIR=$_MAILMAN_SRC_BASE_DIR
fi
logdir=${MAILMAN_SRC_BASE_DIR}/log_mailman-$MAILMAN_VERSION
## - Erstelle Logverzeichnis
## -
if [ -d $logdir ]; then
echononl "Verschiebe exitierendes Logverzeichnis ..."
mv $logdir $logdir.`date +"%Y%m%d-%H%M"` > /dev/null 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal Kann Logverzeichnis \"${logdir}\" nicht verschieben..
fi
fi
echononl "Erstelle Logverzeichnis ${logdir}.."
mkdir -p $logdir > /dev/null 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal Kann Logverzeichnis \"${logdir}\" nicht erstellen..
fi
touch ${logdir}/main.log
echo -e "## - Starte Installation mit folgenden Parametern:" >> ${logdir}/main.log
echo "## - " >> ${logdir}/main.log
echo "## - Linuxdistribution...............: $DISTRIBUTION" >> ${logdir}/main.log
echo "## - Mailman Versionsnummer..........: $MAILMAN_VERSION" >> ${logdir}/main.log
echo "## - Installationsverzeichnis........: $MAILMAN_INSTALL_DIR" >> ${logdir}/main.log
echo "## - Mailman User....................: $MAILMAN_USER" >> ${logdir}/main.log
echo "## - Mailman Gruppe..................: $MAILMAN_GROUP" >> ${logdir}/main.log
echo "## - Mailman Administrator E-Mail....: $MAILMAN_ADMIN_EMAIL" >> ${logdir}/main.log
echo "## - Liste der Mailman Domains.......:$MAILMAN_DOMAINS" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
if $SHOW_PASS ; then
echo -e "## - Mailman Master Passwort.........: $MAILMAN_MASTER_PASS" >> ${logdir}/main.log
echo -e "## - Mailman Administrator Passwort..: $MAILMAN_ADMIN_PASS" >> ${logdir}/main.log
echo -e "## - Passwort Liste \"mailman\"........: $LIST_MAILMAN_PASS" >> ${logdir}/main.log
else
echo -e "## - Mailman Master Passwort.........: **********" >> ${logdir}/main.log
echo -e "## - Mailman Administrator Passwort..: **********" >> ${logdir}/main.log
echo -e "## - Passwort Liste \"mailman\"........: **********" >> ${logdir}/main.log
fi
echo "## - " >> ${logdir}/main.log
if [ "$APACHE_INSTALL_METHOD" = "Debian" ]; then
echo "## - Webserver-Installationsmethode..: Debian Paket System" >> ${logdir}/main.log
else
echo "## - Webserver-Installationsmethode..: Quellcodeinstallation" >> ${logdir}/main.log
fi
echo "## - Webserver User..................: $WEBSERVER_USER" >> ${logdir}/main.log
echo "## - Webserver Gruppe................: $WEBSERVER_GROUP" >> ${logdir}/main.log
echo "## - Webserver Admin E-Mail..........: $WEBSERVER_ADMIN_EMAIL" >> ${logdir}/main.log
for domain in $WEBSERVER_DOMAINS ; do
hostname="`echo $domain | cut -d '|' -f1`"
ipv4="`echo $domain | cut -d '|' -f2`"
ipv6="`echo $domain | cut -d '|' -f3`"
vhost_dir="`echo $domain | cut -d '|' -f4`"
echo ""
echo "## - Webservereinstellungen $hostname:" >> ${logdir}/main.log
echo "## - Hostname..............: $hostname" >> ${logdir}/main.log
echo "## - IPv4..................: $ipv4" >> ${logdir}/main.log
echo "## - IPv6..................: $ipv6" >> ${logdir}/main.log
echo "## - VHOST Verzeichnis:....: $vhost_dir" >> ${logdir}/main.log
done
echo "## -" >> ${logdir}/main.log
if [ "$POSTFIX_INSTALL_METHOD" = "Debian" ]; then
echo "## - Postfix Installationsmethode....: Debian Paket System" >> ${logdir}/main.log
else
echo "## - Postfix Installationsmethode....: Quellcodeinstallation" >> ${logdir}/main.log
fi
echo "## - Postfix Konfigurationsdatei.....: $POSTFIX_CONFIGURATION" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "" >> ${logdir}/main.log
echo "" >> ${logdir}/main.log
## - Erstelle Logverzeichnis
## -
if [ ! -d ${MAILMAN_SRC_BASE_DIR}/tarballs ];then
echononl "Erstelle Verzeichnis ${MAILMAN_SRC_BASE_DIR}/tarballs.."
echo "" >> ${logdir}/main.log
echo "## - Erstelle Verzeichnis ${MAILMAN_SRC_BASE_DIR}/tarballs.." >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "mkdir -p ${MAILMAN_SRC_BASE_DIR}/tarballs" >> ${logdir}/main.log
mkdir ${MAILMAN_SRC_BASE_DIR}/tarballs > /dev/null 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal Kann Verzeichnis \"${MAILMAN_SRC_BASE_DIR}/tarball\" nicht erstellen..
fi
fi
## ***********************
## --- Konfiguriere System
echo "" >> ${logdir}/main.log 2>&1
echo "" >> ${logdir}/main.log 2>&1
echo "" >> ${logdir}/main.log 2>&1
echo "## ***********************" >> ${logdir}/main.log 2>&1
echo "## --- Konfiguriere System" >> ${logdir}/main.log 2>&1
_MAILMAN_INITSCRIPT=mailman
if [ -f /etc/init.d/$_MAILMAN_INITSCRIPT ];then
PID=`ps aux | grep "/bin/mailmanctl" | grep -v grep | awk '{print$2}'`
if [ "X${PID}X" != "XX" ];then
echononl "Stoppe Mailman Service.."
echo "" >> ${logdir}/main.log
echo "/etc/init.d/$_MAILMAN_INITSCRIPT stop" >> ${logdir}/main.log
/etc/init.d/$_MAILMAN_INITSCRIPT stop > /dev/null 2>&1
sleep 5
PID=`ps aux | grep "/bin/mailmanctl" | grep -v grep | awk '{print$2}'`
if [ "X${PID}X" = "XX" ]; then
echo_ok
else
echo_failed
_failed=false
PID=`ps aux | grep "/bin/mailman/" | grep -v grep | awk '{print$2}'`
echononl "Abbruch (kill -9) aller Malman Prozesse.."
echo "" >> ${logdir}/main.log
echo "## - Abruch mailmanctl Prozess(e)" >> ${logdir}/main.log
echo "kill -9 $PID" >> ${logdir}/main.log 2>&1
kill -9 $PID
if [ "$?" != "0" ]; then
_failed=true
fi
echo "" >> ${logdir}/main.log
echo "## - Abruch qrunner Prozesse" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
PID=`ps aux | grep "bin/qrunner" | grep -v grep | awk '{print$2}'`
echo "kill -9 $PID" >> ${logdir}/main.log 2>&1
if [ "$?" = "0" ] && ! $_failed ; then
echo_ok
else
echo_failed
fi
fi
fi
## - Entferne symbolische Links aus den Run Level Verzeichnissen
## -
if [ "$DISTRIBUTION" = "Debian" ]; then
echononl "Entferne symbolische Links aus den Run Level Verzeichnissen.."
echo "" >> ${logdir}/main.log
echo "## - Entferne symbolische Links aus den Run Level Verzeichnissen" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "update-rc.d -f $_MAILMAN_INITSCRIPT remove" >> ${logdir}/main.log
update-rc.d -f /etc/init.d/$_MAILMAN_INITSCRIPT remove > /dev/null 2>&1
if [ "$?" = 0 ]; then
echo_ok
else
echo_failed
fi
echo "" >> ${logdir}/main.log
echononl "Enferne Mailmans init Skript.."
echo "## - Enferne Mailmans init Skript" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "rm -f /etc/init.d/$_MAILMAN_INITSCRIPT" >> ${logdir}/main.log
rm -f /etc/init.d/$_MAILMAN_INITSCRIPT >> ${logdir}/main.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal Kann Mailman Pakete nicht deinstallieren..
fi
fi
fi
echo ""
## - Uninstall debian mailman packages if installed
## -
if [ "$DISTRIBUTION" = "Debian" ]; then
echononl "Deinstalliere Debian Mailman Pakete.."
_INSTALLED_MAILMAN_DEB=`dpkg -l | grep mailman | grep -e "^i" | awk '{print$2}'`
INSTALLED_MAILMAN_DEB=
for deb in $_INSTALLED_MAILMAN_DEB ; do
INSTALLED_MAILMAN_DEB="$INSTALLED_MAILMAN_DEB $deb"
done
if [ -n "$INSTALLED_MAILMAN_DEB" ]; then
echo "" >> ${logdir}/main.log
echo "## - Deinstalliere Debian Mailman Pakete" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "apt-get remove --purge -q -y $INSTALLED_MAILMAN_DEB" >> ${logdir}/main.log
apt-get remove --purge -q -y $INSTALLED_MAILMAN_DEB >> ${logdir}/main.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal Kann Mailman Pakete nicht deinstallieren..
fi
else
echo_skipped
fi
fi
## - Install fehlende Debian Pakete
## -
if [ "$DISTRIBUTION" = "Debian" ]; then
echononl "Installiere fehlende Debian Pakete .."
REQUIRED_DEB_PACKAGES=""
for deb in $_REQUIRED_DEB_PACKAGES ; do
if ! dpkg -l | grep -e "^ii" | grep $deb > /dev/null 2>&1 ; then
REQUIRED_DEB_PACKAGES="$REQUIRED_DEB_PACKAGES $deb"
fi
done
if [ -n "$REQUIRED_DEB_PACKAGES" ] ; then
echo "" >> ${logdir}/main.log
echo "## - Folgende Debian Pakete müssen nachinstalliert werden:" >> ${logdir}/main.log
for deb in $REQUIRED_DEB_PACKAGES ; do
echo "## - $deb" >> ${logdir}/main.log
done
echo "## -" >> ${logdir}/main.log
echo "## - Installiere fehlende Debian Pakete.." >> ${logdir}/main.log
echo "## - " >> ${logdir}/main.log
echo "apt-get -q -y install $REQUIRED_DEB_PACKAGES > ${logdir}/debian-install.log 2>&1" >> ${logdir}/main.log
apt-get -q -y install $REQUIRED_DEB_PACKAGES > ${logdir}/debian-install.log 2>&1
if [ "$?" = 0 ]; then
echo_ok
else
echo_failed
fatal "Kann fehlende Debian Pakete nicht nachinstallieren\n\n\tSiehe: ${logdir}/debian-install.log"
fi
else
echo_skipped
fi
fi
echo ""
## - Erstelle User/group für mailman
## -
echononl "Adding Group \"$MAILMAN_GROUP\".."
if cat /etc/group | grep -e "^${MAILMAN_GROUP}:" > /dev/null 2>&1 ; then
echo_skipped
else
echo "" >> ${logdir}/main.log
echo "## - Erstelle System Gruppe \"$MAILMAN_GROUP\"" >> ${logdir}/main.log
echo "## - " >> ${logdir}/main.log
echo "groupadd -r $MAILMAN_GROUP > ${logdir}/groupadd.log 2>&1" >> ${logdir}/main.log
groupadd -r $MAILMAN_GROUP > ${logdir}/groupadd.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal "Kann Gruppe \"${MAILMAN_GROUP}\" nicht erstellen..\n\tSiehe: ${logdir}/groupadd.log"
fi
fi
echononl "Adding User \"$MAILMAN_USER\".."
if id -u $MAILMAN_USER > /dev/null 2>&1; then
echo_skipped
else
echo "" >> ${logdir}/main.log
echo "## - Erstelle System Benutzer \"$MAILMAN_GROUP\"" >> ${logdir}/main.log
echo "## - " >> ${logdir}/main.log
echo "useradd -r -M -c 'GNU Mailman' -d /noexistent -s /bin/false -g $MAILMAN_GROUP $MAILMAN_USER > ${logdir}/useradd.log 2>&1" >> ${logdir}/main.log
useradd -r -M -c 'GNU Mailman' -d /noexistent -s /bin/false -g $MAILMAN_GROUP $MAILMAN_USER > ${logdir}/useradd.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal "Kann Benutzer \"${MAILMAN_USER}\" nicht erstellen..\n\n\tSiehe: ${logdir}/useradd.log"
fi
fi
## ***********************
## --- Installiere Mailman
echo ""
echo "" >> ${logdir}/main.log 2>&1
echo "" >> ${logdir}/main.log 2>&1
echo "" >> ${logdir}/main.log 2>&1
echo "## ***********************" >> ${logdir}/main.log 2>&1
echo "## --- Installiere Mailman" >> ${logdir}/main.log 2>&1
if [ -d ${MAILMAN_INSTALL_DIR} ];then
echononl "Verschiebe exitierendes Installationsverzeichnis.."
echo "" >> ${logdir}/main.log
echo "## - Verschiebe exitierendes Installationsverzeichnis" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "mv $MAILMAN_INSTALL_DIR $MAILMAN_INSTALL_DIR.`date +\"%Y%m%d-%H%M\"`" >> ${logdir}/main.log
mv $MAILMAN_INSTALL_DIR $MAILMAN_INSTALL_DIR.`date +"%Y%m%d-%H%M"` >> ${logdir}/main.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal Kann Installationsverzeichnis \"${MAILMAN_INSTALL_DIR}\" nicht verschieben..
fi
fi
echononl "Erstelle Installationsverzeichnis.."
echo "" >> ${logdir}/main.log
echo "## - Erstelle Installationsverzeichnis" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "mkdir $MAILMAN_INSTALL_DIR" >> ${logdir}/main.log
mkdir $MAILMAN_INSTALL_DIR >> ${logdir}/main.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal Kann Installationsverzeichnis \"${MAILMAN_INSTALL_DIR}\" nicht erstellen..
fi
echononl "Setze Verzeichnisberechtigungen.."
echo "" >> ${logdir}/main.log
echo "## - Setze Verzeichnisberechtigungen" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "chmod 02775 $MAILMAN_INSTALL_DIR" >> ${logdir}/main.log
chmod 02775 $MAILMAN_INSTALL_DIR > /dev/null 2>&1
if [ "$?" != "0" ]; then
echo_failed
fatal Kann Vrezeichnisberechtigungen \(chmod\) für \"${MAILMAN_INSTALL_DIR}\" nicht setzen..
fi
echo "chown $MAILMAN_USER:$MAILMAN_GROUP $MAILMAN_INSTALL_DIR" >> ${logdir}/main.log
chown $MAILMAN_USER:$MAILMAN_GROUP $MAILMAN_INSTALL_DIR > /dev/null 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal Kann Verzeichnisberechtigungen \(chmod\) für \"${MAILMAN_INSTALL_DIR}\" nicht setzen..
fi
## - Download Mailman
## -
if [ ! -f "${MAILMAN_SRC_BASE_DIR}/tarballs/mailman-${MAILMAN_VERSION}.tgz" ];then
echo "" >> ${logdir}/main.log
echo "cd ${MAILMAN_SRC_BASE_DIR}/tarballs" >> ${logdir}/main.log
cd ${MAILMAN_SRC_BASE_DIR}/tarballs > /dev/null 2>&1
echononl "Download mailman-${MAILMAN_VERSION}.tgz.."
echo "" >> ${logdir}/main.log
echo "## - Download mailman-${MAILMAN_VERSION}.tgz.." >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "wget http://ftp.gnu.org/gnu/mailman/mailman-${MAILMAN_VERSION}.tgz" >> ${logdir}/main.log
wget http://ftp.gnu.org/gnu/mailman/mailman-${MAILMAN_VERSION}.tgz > /dev/null 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal Download mailman-${MAILMAN_VERSION}.tgz fehgeschlagen..
fi
fi
## - Entpacke mailman Source-Archiv
## -
echo "" >> ${logdir}/main.log
echo "cd ${MAILMAN_SRC_BASE_DIR}" >> ${logdir}/main.log
cd ${MAILMAN_SRC_BASE_DIR} > /dev/null 2>&1
if [ -d "${MAILMAN_SRC_BASE_DIR}/mailman-${MAILMAN_VERSION}" ];then
echononl "Verchiebe existierendes Sourcverzeichnis.."
echo "" >> ${logdir}/main.log
echo "## - Verchiebe existierendes Sourcveverzeichnis \"${MAILMAN_SRC_BASE_DIR}/mailman-${MAILMAN_VERSION}\"" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "mv ${MAILMAN_SRC_BASE_DIR}/mailman-${MAILMAN_VERSION} ${MAILMAN_SRC_BASE_DIR}/mailman-${MAILMAN_VERSION}.`date +%Y%m%d-%H%M`" >> ${logdir}/main.log
mv ${MAILMAN_SRC_BASE_DIR}/mailman-${MAILMAN_VERSION} \
${MAILMAN_SRC_BASE_DIR}/mailman-${MAILMAN_VERSION}.`date +%Y%m%d-%H%M`
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal Kann ${MAILMAN_SRC_BASE_DIR}/mailman-${MAILMAN_VERSION} nicht verchieben..
fi
fi
echononl "Entpacke Archiv mailman-${MAILMAN_VERSION}.tgz.."
echo "" >> ${logdir}/main.log
echo "## - Entpacke Archiv mailman-${MAILMAN_VERSION}.tgz" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "gunzip < tarballs/mailman-${MAILMAN_VERSION}.tgz | tar -xf -" >> ${logdir}/main.log
gunzip < tarballs/mailman-${MAILMAN_VERSION}.tgz | tar -xf - > /dev/null 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal Entpacken des Archivs \"mailman-${MAILMAN_VERSION}.tgz\" fehlgeschlagen..
fi
## - Konfiguriere mailman
## -
echo "" >> ${logdir}/main.log
echo "cd ${MAILMAN_SRC_BASE_DIR}/mailman-${MAILMAN_VERSION}" >> ${logdir}/main.log
cd ${MAILMAN_SRC_BASE_DIR}/mailman-${MAILMAN_VERSION} > /dev/null 2>&1
echononl "Konfiguriere Mailman ${MAILMAN_VERSION}.."
echo "" >> ${logdir}/main.log
echo "## - Konfiguriere Mailman ${MAILMAN_VERSION}" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "## - !! Noticei (from mailmans's official documentation):" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "## - When you configure Mailman, use the --with-mail-gid=mailman switch; this " >> ${logdir}/main.log
echo "## - will be the default if you configured Mailman after adding the mailman " >> ${logdir}/main.log
echo "## - owner. Because the owner of the aliases.db file is mailman, Postfix will " >> ${logdir}/main.log
echo "## - execute Mailman's wrapper program as uid and gid mailman. " >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "./configure \\" >> ${logdir}/main.log
echo " --prefix=/usr/local/mailman-${MAILMAN_VERSION} \\" >> ${logdir}/main.log
echo " --with-username=$MAILMAN_USER \\" >> ${logdir}/main.log
echo " --with-groupname=$MAILMAN_GROUP \\" >> ${logdir}/main.log
echo " --with-mail-gid=$MAILMAN_GROUP \\" >> ${logdir}/main.log
echo " --with-cgi-gid=$WEBSERVER_GROUP \\" >> ${logdir}/main.log
echo " > ${logdir}/mailman-configure.log 2>&1" >> ${logdir}/main.log
./configure \
--prefix=/usr/local/mailman-${MAILMAN_VERSION} \
--with-username=$MAILMAN_USER \
--with-groupname=$MAILMAN_GROUP \
--with-mail-gid=$MAILMAN_GROUP \
--with-cgi-gid=$WEBSERVER_GROUP \
> ${logdir}/mailman-configure.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal "Konfigurieren vom Mailman ${MAILMAN_VERSION} fehlgeschlagen..\n\n\tsiehe: ${logdir}/mailman-configure.log"
fi
## - Compiliere mailman
## -
echononl "Compiliere Mailman ${MAILMAN_VERSION}.."
echo "" >> ${logdir}/main.log
echo "## - Compiliere Mailman ${MAILMAN_VERSION}" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "make > ${logdir}/mailman-make.log 2>&1" >> ${logdir}/main.log
make > ${logdir}/mailman-make.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal "Compilieren vom Mailman ${MAILMAN_VERSION} fehlgeschlagen..\n\n\tsiehe: ${logdir}/mailman-make.log 2>&1"
fi
## - Installiere mailman
## -
echononl "Installiere Mailman ${MAILMAN_VERSION}.."
echo "" >> ${logdir}/main.log
echo "## - Installiere Mailman ${MAILMAN_VERSION}" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "make install > ${logdir}/mailman-install.log 2>&1" >> ${logdir}/main.log
make install > ${logdir}/mailman-install.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal "Installieren vom Mailman ${MAILMAN_VERSION} fehlgeschlagen..\n\n\tsiehe: ${logdir}/mailman-install.log 2>&1"
fi
_link="`dirname $MAILMAN_INSTALL_DIR`/mailman"
if [ -a "$_link" ];then
if [ -h "$_link" ]; then
echononl "Entferne existierenden Symlink ${_link}.."
echo "" >> ${logdir}/main.log
echo "## - Entferne existierenden Symlink ${_link}" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "rm $_link" >> ${logdir}/main.log
rm $_link
if [ $? = 0 ]; then
echo_ok
else
echo_failed
fatal "Kann Symlink $_link nicht entfernen.."
fi
elif [ -d "$_link" ]; then
echononl "Verschiebe existierendes Verzeichnis ${_link}.."
echo "" >> ${logdir}/main.log
echo "## - Verschiebe existierendes Verzeichnis ${_link}" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "mv $_link $_link.`date +%Y%m%d-%H%M`" >> ${logdir}/main.log
mv $_link $_link.`date +%Y%m%d-%H%M`
if [ $? = 0 ]; then
echo_ok
else
echo_failed
fatal "Kann Verzeichnis $_link nicht verschieben.."
fi
elif [ -f "$_link" ]; then
echononl "Verschiebe existierendes Datei ${_link}.."
echo "" >> ${logdir}/main.log
echo "## - Verschiebe existierende Datei ${_link}" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "mv $_link $_link.`date +%Y%m%d-%H%M`" >> ${logdir}/main.log
mv $_link $_link.`date +%Y%m%d-%H%M`
if [ $? = 0 ]; then
echo_ok
else
echo_failed
fatal "Kann Datei $_link nicht verschieben.."
fi
fi
fi
if [ -a "$_link" ];then
fatal $_link exists, but is not a directory, nor a regular file, nor a symbolic link
fi
echononl "Setze Symlink $_link -> ${MAILMAN_INSTALL_DIR}.."
echo "" >> ${logdir}/main.log
echo "## - Setze Symlink $_link -> $MAILMAN_INSTALL_DIR" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "ln -s `basename $MAILMAN_INSTALL_DIR` `dirname ${MAILMAN_INSTALL_DIR}`/mailman" >> ${logdir}/main.log
ln -s `basename $MAILMAN_INSTALL_DIR` `dirname ${MAILMAN_INSTALL_DIR}`/mailman
if [ $? = 0 ]; then
echo_ok
else
echo_failed
fatal "Kann Symlink $_link -> $MAILMAN_INSTALL_DIR nicht setzen.."
fi
## ************************************
## --- Instalation Prüfen / Korrigieren
echo ""
echo "" >> ${logdir}/main.log 2>&1
echo "" >> ${logdir}/main.log 2>&1
echo "" >> ${logdir}/main.log 2>&1
echo "## ************************************" >> ${logdir}/main.log 2>&1
echo "## --- Instalation Prüfen / Korrigieren" >> ${logdir}/main.log 2>&1
## - Teste Installation
## -
echo "" >> ${logdir}/main.log
echo "## - From official mailman documentation:" >> ${logdir}/main.log
echo "## - " >> ${logdir}/main.log
echo "## - Warning: If you're running Mailman on a shared multiuser system, and you " >> ${logdir}/main.log
echo "## - have mailing lists with private archives, you may want to hide the " >> ${logdir}/main.log
echo "## - private archive directory from other users on your system. In that case, " >> ${logdir}/main.log
echo "## - you should drop the other execute permission (o-x) from the " >> ${logdir}/main.log
echo "## - archives/private directory. However, the web server process must be able " >> ${logdir}/main.log
echo "## - to follow the symbolic link in public directory, otherwise your public " >> ${logdir}/main.log
echo "## - Pipermail archives will not work. To set this up, become root and run the " >> ${logdir}/main.log
echo "## - following commands:" >> ${logdir}/main.log
echo "## - " >> ${logdir}/main.log
echo "## - # cd <prefix>/archives" >> ${logdir}/main.log
echo "## - # chown <web-server-user> private" >> ${logdir}/main.log
echo "## - # chmod o-x private" >> ${logdir}/main.log
echo "## - " >> ${logdir}/main.log
echo "## - You need to know what user your web server runs as. It may be www, apache, " >> ${logdir}/main.log
echo "## - httpd or nobody, depending on your server's configuration. " >> ${logdir}/main.log
echo "## - " >> ${logdir}/main.log
echononl "Verzeichnisberechtigungen archives/private ändern.."
echo "chown $WEBSERVER_USER ${MAILMAN_INSTALL_DIR}/archives/private" >> ${logdir}/main.log
chown $WEBSERVER_USER ${MAILMAN_INSTALL_DIR}/archives/private > /dev/null 2>&1
if [ "$?" != "0" ]; then
echo_failed
fatal "Kann Berechtigungen für \"${MAILMAN_INSTALL_DIR}/archives/private\" nicht ändern"
fi
echo "chmod o-x ${MAILMAN_INSTALL_DIR}/archives/private" >> ${logdir}/main.log
chmod o-x ${MAILMAN_INSTALL_DIR}/archives/private > /dev/null 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal "Kann Berechtigungen für \"${MAILMAN_INSTALL_DIR}/archives/private\" nicht ändern"
fi
echo "" >> ${logdir}/main.log
echo "cd ${MAILMAN_INSTALL_DIR}" >> ${logdir}/main.log
cd ${MAILMAN_INSTALL_DIR} > /dev/null 2>&1
echononl "Korrigiere Berechtigungen der Mailmaninstallation..."
echo "" >> ${logdir}/main.log
echo "## - Korrigiere Berechtigungen der Mailmaninstallation" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "## - Notice:" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "## - You can do that manually, by executing the following commands" >> ${logdir}/main.log
echo "## - " >> ${logdir}/main.log
echo "## - cd ${MAILMAN_INSTALL_DIR}" >> ${logdir}/main.log
echo "## - chgrp -R mailman ${MAILMAN_INSTALL_DIR}/*" >> ${logdir}/main.log
echo "## - find ${MAILMAN_INSTALL_DIR}/cgi-bin -type f -executable -exec chmod g+s {} \;" >> ${logdir}/main.log
echo "## - chmod g+s ${MAILMAN_INSTALL_DIR}/mail/mailman" >> ${logdir}/main.log
echo "## - find ${MAILMAN_INSTALL_DIR}/messages -type d -exec chmod 02775 {} \;" >> ${logdir}/main.log
echo "## - find ${MAILMAN_INSTALL_DIR}/templates -type d -exec chmod 02775 {} \;" >> ${logdir}/main.log
echo "## - chmod o-x ${MAILMAN_INSTALL_DIR}/archives/private" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "## - But we will use mailmans \"check_perm\" script with flag \"-f\" (fix)" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "declare -i _count=0" >> ${logdir}/main.log
echo "while [ \`bin/check_perms | wc -l\` -gt 1 -a $_count -lt 5 ];do" >> ${logdir}/main.log
echo " bin/check_perms -f > /dev/null 2>&1" >> ${logdir}/main.log
echo " let count++" >> ${logdir}/main.log
echo "done" >> ${logdir}/main.log
declare -i _count=0
while [ `bin/check_perms | wc -l` -gt 1 -a $_count -lt 5 ];do
_retval=0
bin/check_perms -f > /dev/null 2>&1
if [ $? != 0 ]; then
_retval=$?
break
fi
let _count++
done
if [ "$_retval" = "0" -o $_count -gt 4 ]; then
echo_ok
else
echo_failed
fatal "Kann Berechtigungen der Mailmaninstallation nicht korrigieren"
fi
## **********************************
## --- Konfiguration Apache Webserver
echo ""
echo "" >> ${logdir}/main.log 2>&1
echo "" >> ${logdir}/main.log 2>&1
echo "" >> ${logdir}/main.log 2>&1
echo "## **********************************" >> ${logdir}/main.log 2>&1
echo "## --- Konfiguration Apache Webserver" >> ${logdir}/main.log 2>&1
for domain in $WEBSERVER_DOMAINS ; do
hostname="`echo $domain | cut -d '|' -f1`"
ipv4="`echo $domain | cut -d '|' -f2`"
ipv6="`echo $domain | cut -d '|' -f3`"
vhost_dir="`echo $domain | cut -d '|' -f4`"
ssl_cert=`echo $domain | cut -d'|' -f5`
ssl_key=`echo $domain | cut -d'|' -f6`
if apachectl -v | grep version | grep -e "Apache/2.4" > /dev/null 2>1 ; then
_allow_from="Require all granted"
else
_allow_from=`echo -e "Order allow,deny\n Allow from all"`
fi
if [ -f "${vhost_dir}/${hostname}.conf" ];then
echononl "Sichere bestehende Virtual Host Konfiguration.."
echo "" >> ${logdir}/main.log 2>&1
echo "## - Sichere bestehende Virtual Host Konfiguration \"${vhost_dir}/${hostname}.conf\"" >> ${logdir}/main.log 2>&1
echo "## -" >> ${logdir}/main.log 2>&1
echo "mv ${vhost_dir}/${hostname}.conf ${vhost_dir}/${hostname}.conf.`date +%Y%m%d-%H%M`" >> ${logdir}/main.log 2>&1
mv ${vhost_dir}/${hostname}.conf ${vhost_dir}/${hostname}.conf.`date +%Y%m%d-%H%M`
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal "Kann bestehende Virtual Host Konfiguration \"${vhost_dir}/${hostname}.conf\" nicht sichern"
fi
fi
echononl "Erstelle Virtual Host Konfiguration \"$hostname\".."
cat <<EOF > ${vhost_dir}/${hostname}.conf
# -- $hostname -- #
<VirtualHost $ipv4:80 [$ipv6]:80>
ServerAdmin $WEBSERVER_ADMIN_EMAIL
ServerName $hostname
RewriteEngine on
RewriteCond %{HTTPS} !=on
RewriteRule (.*) https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
</VirtualHost>
<VirtualHost $ipv4:443 [$ipv6]:443>
ServerAdmin $WEBSERVER_ADMIN_EMAIL
ServerName $hostname
RewriteEngine on
RewriteCond %{HTTPS} =on
RewriteRule ^/$ https://%{SERVER_NAME}/mailman/listinfo [R=301,L]
<Directory $_link/archives/public/>
AddDefaultCharset Off
</Directory>
Alias /pipermail/ $_link/archives/public/
Alias /icons/ $_link/icons/
<Directory $_link/icons/>
$_allow_from
</Directory>
ScriptAlias /admin $_link/cgi-bin/admin
ScriptAlias /admindb $_link/cgi-bin/admindb
ScriptAlias /confirm $_link/cgi-bin/confirm
ScriptAlias /create $_link/cgi-bin/create
ScriptAlias /edithtml $_link/cgi-bin/edithtml
ScriptAlias /listinfo $_link/cgi-bin/listinfo
ScriptAlias /options $_link/cgi-bin/options
ScriptAlias /private $_link/cgi-bin/private
ScriptAlias /rmlist $_link/cgi-bin/rmlist
ScriptAlias /roster $_link/cgi-bin/roster
ScriptAlias /subscribe $_link/cgi-bin/subscribe
ScriptAlias /mailman/ $_link/cgi-bin/
<Directory $_link/cgi-bin/>
Options ExecCGI
Require all granted
</Directory>
#ScriptAlias /mailman/ $_link/cgi-bin/
#<Directory $_link/cgi-bin/>
# Options ExecCGI
# $_allow_from
#</Directory>
SSLEngine on
SSLCertificateFile $ssl_cert
SSLCertificateKeyFile $ssl_key
ErrorLog /var/log/apache2/$hostname-error.log
CustomLog /var/log/apache2/$hostname-access.log combined
</VirtualHost>
EOF
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal "Kann Virtual Host Konfiguration \"${vhost_dir}/${hostname}.conf\" nicht erstellen"
fi
echo "" >> ${logdir}/main.log
echo "## - Erstelle Virtual Host Konfiguration \"$hostname\"" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "cat <<EOF > ${vhost_dir}/${hostname}.conf" >> ${logdir}/main.log
cat ${vhost_dir}/${hostname}.conf >> ${logdir}/main.log
echo "EOF" >> ${logdir}/main.log
if [ "$APACHE_INSTALL_METHOD" = "Debian" ]; then
echononl "Aktiviere VHOST \"$hostname\".."
echo "" >> ${logdir}/main.log
echo "## - Aktiviere VHOST \"$hostname\"" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "a2ensite ${hostname}.conf" >> ${logdir}/main.log
a2ensite ${hostname}.conf
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal "Kann Virtual Host \"${hostname}\" nicht aktivieren"
fi
fi
done
echononl "Passe Maiilman Konfiguration (mm_cfg.py) an.."
echo_skipped
echo "" >> ${logdir}/main.log
echo "## - Bemerkung:" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "## - Anpassen der Mailman Konfiguration \"mm_cfg.py\" ist nicht" >> ${logdir}/main.log
echo "## - notwendig. Die Einstellungen in den VHost Konfigurationsdateien" >> ${logdir}/main.log
echo "## - benutzen Standardeinstellungen und Standart Pfade der Mailman" >> ${logdir}/main.log
echo "## - Installation (${MAILMAN_INSTALL_DIR}/Mailman/Default.py)" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echononl "Reload Apache Webserver.."
echo "" >> ${logdir}/main.log
echo "## - Reload Apache Webserver" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "apachectl graceful" >> ${logdir}/main.log
apachectl graceful
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
error "Das Restarten des Apache Webservers ist fehlgeschlagen"
fi
## ************************************
## --- Konfiguration Postfix Mailserver
echo ""
echo "" >> ${logdir}/main.log 2>&1
echo "" >> ${logdir}/main.log 2>&1
echo "" >> ${logdir}/main.log 2>&1
echo "## ************************************" >> ${logdir}/main.log 2>&1
echo "## --- Konfiguration Postfix Mailserver" >> ${logdir}/main.log 2>&1
if ! grep -e "\s*recipient_delimiter\s*=\s*+" $POSTFIX_CONFIGURATION > /dev/null ; then
if grep -e "\s*recipient_delimiter" $POSTFIX_CONFIGURATION > /dev/null ; then
echononl "[ \033[1;33mWarnung\033[m ]: Ersetze \"recipient_delimiter\" (Postfix)\n Setze Parameter Wert auf \"+\".."
echo "" >> ${logdir}/main.log
echo "## - Warnung:" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "## - Ersetze \"recipient_delimiter\" in der Postfix Konfiguration mit dem Wert \"+\"." \
>> ${logdir}/main.log
echo "## - Dieser Wert funktioniert gut mit den Mailman Voreinstellungen" >> ${logdir}/main.log
echo "## - (\"VERP_FORMAT\" and \"VERP_REGEXP\") in Defaults.py." >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "perl -i -n -p -e \"s#^(\s*recipient_delimiter.*)#\#\1\nrecipient_delimiter = +#\" $POSTFIX_CONFIGURATION" \
>> ${logdir}/main.log
perl -i -n -p -e "s#^(\s*recipient_delimiter.*)#\#\1\nrecipient_delimiter = +#" $POSTFIX_CONFIGURATION
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal "Ersetzen des Parameters \"recipient_delimiter\" in der Postfix Konfigurationsdatei fehlgeschlagen"
fi
else
echononl "Ergänze Postfix Konfigurationsdatei.\n Setze Parameter \"recipient_delimiter\".."
echo "" >> ${logdir}/main.log
echo "## - Ergänze Postfix Konfigurationsdatei mit Parameter \"recipient_delimiter\" auf den Wert \"+\" " \
>> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "echo \"\" >> $POSTFIX_CONFIGURATION" >> ${logdir}/main.log
echo "echo \"recipient_delimiter = +\" >> $POSTFIX_CONFIGURATION" >> ${logdir}/main.log
echo "echo \"\" >> $POSTFIX_CONFIGURATION" >> ${logdir}/main.log
echo "" >> $POSTFIX_CONFIGURATION
echo "recipient_delimiter = +" >> $POSTFIX_CONFIGURATION
echo "" >> $POSTFIX_CONFIGURATION
echo_ok
fi
fi
if ! grep -e "\s*unknown_local_recipient_reject_code\s*=\s*550" $POSTFIX_CONFIGURATION > /dev/null ; then
if grep -e "\s*unknown_local_recipient_reject_code" $POSTFIX_CONFIGURATION > /dev/null ; then
echononl "[ \033[1;33mWarnung\033[m ]: Ersetze \"unknown_local_recipient_reject_code (Postfix).\"\n Setze Parameter Wert auf \"550\".."
echo "" >> ${logdir}/main.log
echo "## - Warnung:" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "## - Ersetze \"unknown_local_recipient_reject_code\" in der Postfix Konfiguration mit dem Wert \"550\"." \
>> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "perl -i -n -p -e \"s#^(\s*unknown_local_recipient_reject_code.*)#\#\1\nunknown_local_recipient_reject_code = 550#\" $POSTFIX_CONFIGURATION" \
>> ${logdir}/main.log
perl -i -n -p -e "s#^(\s*unknown_local_recipient_reject_code.*)#\#\1\nunknown_local_recipient_reject_code = 550#" $POSTFIX_CONFIGURATION
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal "Ersetzen des Parameters \"unknown_local_recipient_reject_code\" in der Postfix Konfigurationsdatei fehlgeschlagen"
fi
else
echononl "Ergänze Postfix Konfigurationsdatei\n Setze Parameter \"unknown_local_recipient_reject_code\"auf Wert \"550\".."
echo "" >> ${logdir}/main.log
echo "## - Ergänze Postfix Konfigurationsdatei mit Parameter \"unknown_local_recipient_reject_code\"" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "echo \"\" >> $POSTFIX_CONFIGURATION" >> ${logdir}/main.log
echo "echo \"unknown_local_recipient_reject_code = 550\" >> $POSTFIX_CONFIGURATION" >> ${logdir}/main.log
echo "echo \"\" >> $POSTFIX_CONFIGURATION" >> ${logdir}/main.log
echo "" >> $POSTFIX_CONFIGURATION
echo "unknown_local_recipient_reject_code = 550" >> $POSTFIX_CONFIGURATION
echo "" >> $POSTFIX_CONFIGURATION
echo_ok
fi
fi
## - Virtual Domains
## -
echo "" >> ${logdir}/main.log
echo "## - Konfiguriere Virtual Domains in Postfix" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
if ! grep -e "hash:$_link/data/aliases" $POSTFIX_CONFIGURATION > /dev/null ; then
## - alias_maps
## -
echononl "Konfiguriere Postfix Alias Maps (alias_maps).."
echo "" >> ${logdir}/main.log
echo "## - Konfiguriere Postfix Alias Maps (alias_maps).." >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
if grep -e "^\s*alias_maps" $POSTFIX_CONFIGURATION > /dev/null ; then
echo " echo \"perl -i -n -p -e \\\"s#^(\s*alias_maps\s*=.*)#\1\n hash:$_link/data/aliases#\\\" $POSTFIX_CONFIGURATION\" >> ${logdir}/main.log" >> ${logdir}/main.log
echo "perl -i -n -p -e \"s#^(\s*alias_maps\s*=.*)#\1\n hash:$_link/data/aliases#\" $POSTFIX_CONFIGURATION" >> ${logdir}/main.log
perl -i -n -p -e "s#^(\s*alias_maps\s*=.*)#\1\n hash:$_link/data/aliases#" $POSTFIX_CONFIGURATION
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal "Konfiguration Postfix \"alias_maps\" (${domain}) ist fehlgeschlagen"
fi
else
echo "echo \"\" >> $POSTFIX_CONFIGURATION" >> ${logdir}/main.log
echo "echo \"alias_maps = \" >> $POSTFIX_CONFIGURATION" >> ${logdir}/main.log
echo "echo \" hash:$_link/data/aliases\" >> $POSTFIX_CONFIGURATION" >> ${logdir}/main.log
echo "echo \"\"" >> ${logdir}/main.log
echo "" >> $POSTFIX_CONFIGURATION
echo "alias_maps = " >> $POSTFIX_CONFIGURATION
echo " hash:$_link/data/aliases" >> $POSTFIX_CONFIGURATION
echo "" >> $POSTFIX_CONFIGURATION
echo_ok
fi
fi
## - virtual_alias_domains
## -
for domain in $MAILMAN_DOMAINS ; do
if ! grep -e "$domain" $POSTFIX_CONFIGURATION > /dev/null ; then
echononl "Konfiguriere Postfix Virtual Domains: \"virtual_alias_domains\"\n Maildomain: ${domain}.."
echo "" >> ${logdir}/main.log
echo "## - Konfigurere Postfix Virtual Domains: \"virtual_alias_domains\"" >> ${logdir}/main.log
echo "## - Maildomain: $domain" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
if grep -e "^\s*virtual_alias_domains" $POSTFIX_CONFIGURATION > /dev/null ; then
echo "perl -i -n -p -e \"s#^(\s*virtual_alias_domains\s*=.*)#\1\n $domain#\" $POSTFIX_CONFIGURATION" >> ${logdir}/main.log
perl -i -n -p -e "s#^(\s*virtual_alias_domains\s*=.*)#\1\n $domain#" $POSTFIX_CONFIGURATION
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal "Konfiguration Postfix \"virtual_alias_domains\" (${domain}) ist fehlgeschlagen"
fi
else
echo "echo \"\" >> $POSTFIX_CONFIGURATION" >> ${logdir}/main.log
echo "echo \"virtual_alias_domains = \" >> $POSTFIX_CONFIGURATION" >> ${logdir}/main.log
echo "echo \" $domain\" >> $POSTFIX_CONFIGURATION" >> ${logdir}/main.log
echo "echo \"\"" >> ${logdir}/main.log
echo "" >> $POSTFIX_CONFIGURATION
echo "virtual_alias_domains = " >> $POSTFIX_CONFIGURATION
echo " $domain" >> $POSTFIX_CONFIGURATION
echo "" >> $POSTFIX_CONFIGURATION
echo_ok
fi
fi
done
## - virtual_alias_maps
## -
if ! grep -e "hash:$_link/data/virtual-mailman" $POSTFIX_CONFIGURATION > /dev/null ; then
echononl "Konfiguriere Postfix Virtual Domains: \"virtual_alias_maps\".."
echo "" >> ${logdir}/main.log
echo "## - Konfiguriere Postfix Virtual Domains: \"virtual_alias_maps\"" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
if grep -e "\s*virtual_alias_maps" $POSTFIX_CONFIGURATION > /dev/null ; then
echo "perl -i -n -p -e \"s#^(\s*virtual_alias_maps\s*=.*)#\1\n \#\# - Mailman\n hash:$_link/data/virtual-mailman#\" $POSTFIX_CONFIGURATION" >> ${logdir}/main.log
perl -i -n -p -e "s#^(\s*virtual_alias_maps\s*=.*)#\1\n \#\# - Mailman\n hash:$_link/data/virtual-mailman #" $POSTFIX_CONFIGURATION
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal "Konfiguration Postfix \"virtual_alias_maps\" ist fehlgeschlagen"
fi
else
echo "echo \"\" >> $POSTFIX_CONFIGURATION" >> ${logdir}/main.log
echo "echo \"virtual_alias_maps = \" >> $POSTFIX_CONFIGURATION" >> ${logdir}/main.log
echo "echo \" hash:$_link/data/virtual-mailman\" >> $POSTFIX_CONFIGURATION" >> ${logdir}/main.log
echo "echo \"\"" >> ${logdir}/main.log
echo "" >> $POSTFIX_CONFIGURATION
echo "virtual_alias_maps = " >> $POSTFIX_CONFIGURATION
echo " hash:$_link/data/virtual-mailman" >> $POSTFIX_CONFIGURATION
echo "" >> $POSTFIX_CONFIGURATION
echo_ok
fi
fi
echononl "Reload Postfix Mailserver.."
echo "" >> ${logdir}/main.log
echo "## - Reload Postfix Mailserver" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "/etc/init.d/postfix reload" >> ${logdir}/main.log
/etc/init.d/postfix reload > /dev/null 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal "Das Restarten des Postfix Mailservers ist fehlgeschlagen"
fi
echo "" >> ${logdir}/main.log
echo "## - !! Bemerkung !!" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "## - Pruefe die Postfix Konfigurationsdatei $POSTFIX_CONFIGURATION" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "## - Es müssen die folgenden Einträge vorhanden sein:" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "## - recipient_delimiter = +" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "## - virtual_alias_maps =" >> ${logdir}/main.log
echo "## - hash:$_link/data/virtual-mailman" >> ${logdir}/main.log
echo "## - .." >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "## - virtual_alias_maps =" >> ${logdir}/main.log
echo "## - hash:/usr/local/mailman/data/virtual-mailman" >> ${logdir}/main.log
echo "## - .." >> ${logdir}/main.log
echo "## - " >> ${logdir}/main.log
echo "## - virtual_alias_domains =" >> ${logdir}/main.log
for domain in $MAILMAN_DOMAINS ; do
echo "## - $domain" >> ${logdir}/main.log
done
echo "## - " >> ${logdir}/main.log
echo "## - optional:" >> ${logdir}/main.log
echo "## - unknown_local_recipient_reject_code = 550" >> ${logdir}/main.log
echo "## - " >> ${logdir}/main.log
domain=""
DEFAULT_EMAIL_HOST=""
DEFAULT_URL_HOST=""
POSTFIX_STYLE_VIRTUAL_DOMAINS="["
ADD_VIRTUALHOST=""
_ADD_VIRTUALHOST=""
declare -i _count=1
for domain in $MAILMAN_DOMAINS ; do
if [ $_count -eq 1 ]; then
DEFAULT_EMAIL_HOST=$domain
DEFAULT_URL_HOST=$domain
POSTFIX_STYLE_VIRTUAL_DOMAINS="${POSTFIX_STYLE_VIRTUAL_DOMAINS}'$domain'"
elif [ $_count -eq 2 ];then
POSTFIX_STYLE_VIRTUAL_DOMAINS="${POSTFIX_STYLE_VIRTUAL_DOMAINS}, '$domain'"
ADD_VIRTUALHOST="add_virtualhost('$domain', '$domain')"
_ADD_VIRTUALHOST="add_virtualhost('$domain', '$domain')"
else
POSTFIX_STYLE_VIRTUAL_DOMAINS="${POSTFIX_STYLE_VIRTUAL_DOMAINS}, '$domain'"
ADD_VIRTUALHOST="$ADD_VIRTUALHOST
add_virtualhost('$domain', '$domain')"
_ADD_VIRTUALHOST="$_ADD_VIRTUALHOST
## - add_virtualhost('$domain', '$domain')"
fi
let _count++
done
POSTFIX_STYLE_VIRTUAL_DOMAINS="${POSTFIX_STYLE_VIRTUAL_DOMAINS}]"
POSTFIX_ALIAS_CMD=`which postalias`
POSTFIX_MAP_CMD=`which postmap`
echononl "Passe Mailman Konfiguration an (mm_cfg.py).."
cat <<EOF >> ${MAILMAN_INSTALL_DIR}/Mailman/mm_cfg.py
#####
# General system-wide Parameters
#####
# The default language for this server. Whenever we can't figure out the list
# context or user context, we'll fall back to using this language. See
# LC_DESCRIPTIONS below for legal values.
DEFAULT_SERVER_LANGUAGE = 'de'
# Mailman needs to know about (at least) two fully-qualified domain names
# (fqdn); 1) the hostname used in your urls, and 2) the hostname used in email
# addresses for your domain. For example, if people visit your Mailman system
# with "http://www.dom.ain/mailman" then your url fqdn is "www.dom.ain", and
# if people send mail to your system via "yourlist@dom.ain" then your email
# fqdn is "dom.ain". DEFAULT_URL_HOST controls the former, and
# DEFAULT_EMAIL_HOST controls the latter. Mailman also needs to know how to
# map from one to the other (this is especially important if you're running
# with virtual domains). You use "add_virtualhost(urlfqdn, emailfqdn)" to add
# new mappings.
#
# If you don't need to change DEFAULT_EMAIL_HOST and DEFAULT_URL_HOST in your
# mm_cfg.py, then you're done; the default mapping is added automatically. If
# however you change either variable in your mm_cfg.py, then be sure to also
# include the following:
#
# add_virtualhost(DEFAULT_URL_HOST, DEFAULT_EMAIL_HOST)
#
# because otherwise the default mappings won't be correct.
DEFAULT_EMAIL_HOST = '$DEFAULT_EMAIL_HOST'
DEFAULT_URL_HOST = '$DEFAULT_URL_HOST'
DEFAULT_URL_PATTERN = 'https://%s/mailman/'
PUBLIC_ARCHIVE_URL = 'https://%(hostname)s/pipermail/%(listname)s'
#####
# Virtual domains
#####
# If any of the values DEFAULT_URL_HOST or DEFAULT_EMAIL_HOST was changed,
# you had to set also:
# add_virtualhost(DEFAULT_URL_HOST, DEFAULT_EMAIL_HOST)
add_virtualhost(DEFAULT_URL_HOST, DEFAULT_EMAIL_HOST)
# Use "add_virtualhost(urlfqdn, emailfqdn)" to add more mappings
$ADD_VIRTUALHOST
#####
# Delivery Parameters
#####
# Final delivery module for outgoing mail. This handler is used for message
# delivery to the list via the smtpd, and to an individual user. This value
# must be a string naming a module in the Mailman.Handlers package.
#
# WARNING: Sendmail has security holes and should be avoided. In fact, you
# must read the Mailman/Handlers/Sendmail.py file before it will work for
# you.
#
#DELIVERY_MODULE = 'Sendmail'
DELIVERY_MODULE = 'SMTPDirect'
# MTA should name a module in Mailman/MTA which provides the MTA specific
# functionality for creating and removing lists. Some MTAs like Exim can be
# configured to automatically recognize new lists, in which case the MTA
# variable should be set to None. Use 'Manual' to print new aliases to
# standard out (or send an email to the site list owner) for manual twiddling
# of an /etc/aliases style file. Use 'Postfix' if you are using the Postfix
# MTA -- but then also see POSTFIX_STYLE_VIRTUAL_DOMAINS.
MTA = 'Postfix'
# If you set MTA='Postfix', then you also want to set the following variable,
# depending on whether you're using virtual domains in Postfix, and which
# style of virtual domain you're using. Set this to the empty list if you're
# not using virtual domains in Postfix, or if you're using Sendmail-style
# virtual domains (where all addresses are visible in all domains). If you're
# using Postfix-style virtual domains, where aliases should only show up in
# the virtual domain, set this variable to the list of host_name values to
# write separate virtual entries for. I.e. if you run dom1.ain, dom2.ain, and
# dom3.ain, but only dom2 and dom3 are virtual, set this variable to the list
# ['dom2.ain', 'dom3.ain']. Matches are done against the host_name attribute
# of the mailing lists. See the Postfix section of the installation manual
# for details.
POSTFIX_STYLE_VIRTUAL_DOMAINS = $POSTFIX_STYLE_VIRTUAL_DOMAINS
# These variables describe the program to use for regenerating the aliases.db
# and virtual-mailman.db files, respectively, from the associated plain text
# files. The file being updated will be appended to this string (with a
# separating space), so it must be appropriate for os.system().
POSTFIX_ALIAS_CMD = '$POSTFIX_ALIAS_CMD'
POSTFIX_MAP_CMD = '$POSTFIX_MAP_CMD'
# SMTP host and port, when DELIVERY_MODULE is 'SMTPDirect'. Make sure the
# host exists and is resolvable (i.e., if it's the default of "localhost" be
# sure there's a localhost entry in your /etc/hosts file!)
SMTPHOST = 'localhost'
# Mmails are already checked, so we push them through smtp listen
# on localhost port 10025
SMTPPORT = 10025
# Set this variable to Yes to allow list owners to delete their own mailing
# lists. You may not want to give them this power, in which case, setting
# this variable to No instead requires list removal to be done by the site
# administrator, via the command line script bin/rmlist.
OWNERS_CAN_DELETE_THEIR_OWN_LISTS = Yes
EOF
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal "Kann Mailman Konfigurationsdatei \" ${MAILMAN_INSTALL_DIR}/Mailman/mm_cfg.py\" nicht anpassen"
fi
echo "" >> ${logdir}/main.log
echo "## - Passe Mailman Konfiguration an" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "## - Benutzerspezifische Einstellungen in Datei ${MAILMAN_INSTALL_DIR}/Mailman/mm_cfg.py" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "cat <<EOF > ${MAILMAN_INSTALL_DIR}/Mailman/mm_cfg.py" >> ${logdir}/main.log
cat ${MAILMAN_INSTALL_DIR}/Mailman/mm_cfg.py >> ${logdir}/main.log
echo "EOF" >> ${logdir}/main.log
echo "" >> ${logdir}/main.log
echo "## - !! Bemerkung !!" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "## - Pruefe die Mailman Konfigurationsdatei ${MAILMAN_INSTALL_DIR}/Mailman/mm_cfg.py" >> ${logdir}/main.log
echo "## - Alle notwendigen Änderungen sollten in der Datei \"mm_cfg.py\" vorgenommen werden," >> ${logdir}/main.log
echo "## - Nicht in \"Defaults.py\"" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "## - Es müssen die folgenden Einträge vorhanden sein:" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "## - DEFAULT_SERVER_LANGUAGE = 'de'" >> ${logdir}/main.log
echo "## - DEFAULT_EMAIL_HOST = '$DEFAULT_EMAIL_HOST'" >> ${logdir}/main.log
echo "## - DEFAULT_URL_HOST = '$DEFAULT_URL_HOST'" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "## - ## - Falls https" >> ${logdir}/main.log
echo "## - DEFAULT_URL_PATTERN = 'https://%s/mailman/'" >> ${logdir}/main.log
echo "## - PUBLIC_ARCHIVE_URL = 'https://%(hostname)s/pipermail/%(listname)s'" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "## - add_virtualhost(DEFAULT_URL_HOST, DEFAULT_EMAIL_HOST)" >> ${logdir}/main.log
echo "## - $_ADD_VIRTUALHOST" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "## - DELIVERY_MODULE = 'SMTPDirect'" >> ${logdir}/main.log
echo "## - MTA = 'Postfix'" >> ${logdir}/main.log
echo "## - POSTFIX_STYLE_VIRTUAL_DOMAINS = $POSTFIX_STYLE_VIRTUAL_DOMAINS" >> ${logdir}/main.log
echo "## - POSTFIX_ALIAS_CMD = '$POSTFIX_ALIAS_CMD'" >> ${logdir}/main.log
echo "## - POSTFIX_MAP_CMD = '$POSTFIX_MAP_CMD'" >> ${logdir}/main.log
echo "## - SMTPHOST = 'localhost'" >> ${logdir}/main.log
echo "## - SMTPPORT = 10025" >> ${logdir}/main.log
echo "## - OWNERS_CAN_DELETE_THEIR_OWN_LISTS = Yes" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo ""
echo "" >> ${logdir}/main.log
echo "cd ${MAILMAN_INSTALL_DIR}" >> ${logdir}/main.log
cd ${MAILMAN_INSTALL_DIR} > /dev/null 2>&1
echononl "Initialisiere Mailman alias Datei (data/aliases*).."
echo "" >> ${logdir}/main.log
echo "## - Initialisiere Mailman alias Datei (data/aliases*)" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "bin/genaliases" >> ${logdir}/main.log
bin/genaliases
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal "Initialiasierung der Mailman alias Datei \"data/aliases*\" fehlgeschlagen"
fi
echononl "Setze Dateiberechtigungen \"${MAILMAN_INSTALL_DIR}/data/aliases*\".."
echo "" >> ${logdir}/main.log
echo "## - Setze Verzeichnisberechtigungen" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "chown $MAILMAN_USER:$MAILMAN_GROUP ${MAILMAN_INSTALL_DIR}/data/aliases*" >> ${logdir}/main.log
chown $MAILMAN_USER:$MAILMAN_GROUP ${MAILMAN_INSTALL_DIR}/data/aliases* > /dev/null 2>&1
if [ "$?" != "0" ]; then
echo_failed
fatal "Kann Dateiberechtigungen für \"${MAILMAN_INSTALL_DIR}/data/aliases\" nicht setzen.."
fi
echo "chmod g+w ${MAILMAN_INSTALL_DIR}/data/aliases*" >> ${logdir}/main.log
chmod g+w ${MAILMAN_INSTALL_DIR}/data/aliases* > /dev/null 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal "Kann Dateiberechtigungen für \"${MAILMAN_INSTALL_DIR}/data/aliases\" nicht setzen.."
fi
if [ -f ${MAILMAN_INSTALL_DIR}/data/virtual-mailman ]; then
echononl "Setze Dateiberechtigungen \"${MAILMAN_INSTALL_DIR}/data/virtual-mailman*\".."
echo "" >> ${logdir}/main.log
echo "## - Setze Verzeichnisberechtigungen" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "chown $MAILMAN_USER:$MAILMAN_GROUP ${MAILMAN_INSTALL_DIR}/data/virtual-mailman*" >> ${logdir}/main.log
chown $MAILMAN_USER:$MAILMAN_GROUP ${MAILMAN_INSTALL_DIR}/data/virtual-mailman* > /dev/null 2>&1
if [ "$?" != "0" ]; then
echo_failed
fatal "Kann Dateiberechtigungen für \"${MAILMAN_INSTALL_DIR}/data/virtual-mailman*\" nicht setzen.."
fi
echo "chmod g+w ${MAILMAN_INSTALL_DIR}/data/virtual-mailman*" >> ${logdir}/main.log
chmod g+w ${MAILMAN_INSTALL_DIR}/data/virtual-mailman* > /dev/null 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal "Kann Dateiberechtigungen für \"${MAILMAN_INSTALL_DIR}/data/virtual-mailman\" nicht setzen.."
fi
fi
## *****************************
## --- Abschlussarbeiten Mailman
echo ""
echo "" >> ${logdir}/main.log 2>&1
echo "" >> ${logdir}/main.log 2>&1
echo "" >> ${logdir}/main.log 2>&1
echo "## ************************************" >> ${logdir}/main.log 2>&1
echo "## --- Abschlussarbeiten Mailman" >> ${logdir}/main.log 2>&1
echononl "Erstelle Systemweite Maillingliste \"mailman\".."
echo "" >> ${logdir}/main.log
echo "## - Erstelle Systemweite Maillingliste \"mailman\"" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "## - Liste: mailman@$DEFAULT_EMAIL_HOST" >> ${logdir}/main.log
if $SHOW_PASS ; then
echo "## - Passwort: $LIST_MAILMAN_PASS" >> ${logdir}/main.log
else
echo "## - Passwort: **********" >> ${logdir}/main.log
fi
echo "## -" >> ${logdir}/main.log
echo "bin/newlist -q mailman $MAILMAN_ADMIN_EMAIL $LIST_MAILMAN_PASS" >> ${logdir}/main.log
bin/newlist -q mailman $MAILMAN_ADMIN_EMAIL $LIST_MAILMAN_PASS > /dev/null 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal "Kann Systemweite Maillingliste \"mailman\" nicht erstellen"
fi
echononl "Kopiere Mailman Startscript nach /etc/init.d/.."
echo "" >> ${logdir}/main.log
echo "## - Kopiere Mailman Startscript nach /etc/init.d/" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "cp ${MAILMAN_INSTALL_DIR}/scripts/mailman /etc/init.d/mailman" >> ${logdir}/main.log
cp ${MAILMAN_INSTALL_DIR}/scripts/mailman /etc/init.d/mailman
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal "Kann Startsrkript \"${MAILMAN_INSTALL_DIR}/scripts/mailman\" nicht nach /etc/init.d/mailman kopieren"
fi
if [ "$DISTRIBUTION" = "Debian" ];then
echononl "Starte Mailman beim booten.."
echo "" >> ${logdir}/main.log
echo "## - Starte Mailman beim booten" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "update-rc.d mailman defaults" >> ${logdir}/main.log
update-rc.d mailman defaults > /dev/null 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal "Erstellen der Symlinks (update-rc.d mailman defaults) in den Runlevel Verzeichnissen fehlgeschlagen"
fi
else
_failed=false
echononl "Erstelle Symlinks in den Runlevel Verzeichnissen (start at boot time).."
echo "## - Erstelle Symlinks in den Runlevel Verzeichnissen (start at boot time)" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "ln -s ../init.d/mailman /etc/rc.d/rc0.d/K12mailman"
if [ -d /etc/rc.d/rc0.d ]; then
ln -s ../init.d/mailman /etc/rc.d/rc0.d/K12mailman
elif [ -d /etc/rc0.d ];then
ln -s ../init.d/mailman /etc/rc0.d/K12mailman
else
echo_failed
_failed=true
fi
if ! $_failed ; then
if [ -d /etc/rc.d/rc1.d ]; then
echo "ln -s ../init.d/mailman /etc/rc.d/rc1.d/K12mailman" >> ${logdir}/main.log
ln -s ../init.d/mailman /etc/rc.d/rc1.d/K12mailman
elif [ -d /etc/rc1.d ];then
echo "ln -s ../init.d/mailman /etc/rc1.d/K12mailman" >> ${logdir}/main.log
ln -s ../init.d/mailman /etc/rc1.d/K12mailman
else
echo_failed
_failed=true
fi
fi
if ! $_failed ; then
if [ -d /etc/rc.d/rc2.d ]; then
echo "ln -s ../init.d/mailman /etc/rc.d/rc2.d/S98mailman" >> ${logdir}/main.log
ln -s ../init.d/mailman /etc/rc.d/rc2.d/S98mailman
elif [ -d /etc/rc2.d ];then
echo "ln -s ../init.d/mailman /etc/rc2.d/S98mailman" >> ${logdir}/main.log
ln -s ../init.d/mailman /etc/rc2.d/S98mailman
else
echo_failed
_failed=true
fi
fi
if ! $_failed ; then
if [ -d /etc/rc.d/rc3.d ]; then
echo "ln -s ../init.d/mailman /etc/rc.d/rc3.d/S98mailman" >> ${logdir}/main.log
ln -s ../init.d/mailman /etc/rc.d/rc3.d/S98mailman
elif [ -d /etc/rc3.d ];then
echo "ln -s ../init.d/mailman /etc/rc3.d/S98mailman" >> ${logdir}/main.log
ln -s ../init.d/mailman /etc/rc3.d/S98mailman
else
echo_failed
_failed=true
fi
fi
if ! $_failed ; then
if [ -d /etc/rc.d/rc4.d ]; then
echo "ln -s ../init.d/mailman /etc/rc.d/rc4.d/S98mailman" >> ${logdir}/main.log
ln -s ../init.d/mailman /etc/rc.d/rc4.d/S98mailman
elif [ -d /etc/rc4.d ];then
echo "ln -s ../init.d/mailman /etc/rc4.d/S98mailman" >> ${logdir}/main.log
ln -s ../init.d/mailman /etc/rc4.d/S98mailman
else
echo_failed
_failed=true
fi
fi
if ! $_failed ; then
if [ -d /etc/rc.d/rc5.d ]; then
echo "ln -s ../init.d/mailman /etc/rc.d/rc5.d/S98mailman" >> ${logdir}/main.log
ln -s ../init.d/mailman /etc/rc.d/rc5.d/S98mailman
elif [ -d /etc/rc5.d ];then
echo "ln -s ../init.d/mailman /etc/rc5.d/S98mailman" >> ${logdir}/main.log
ln -s ../init.d/mailman /etc/rc5.d/S98mailman
else
echo_failed
_failed=true
fi
fi
if ! $_failed ; then
if [ -d /etc/rc.d/rc6.d ]; then
echo "ln -s ../init.d/mailman /etc/rc.d/rc6.d/K12mailman" >> ${logdir}/main.log
ln -s ../init.d/mailman /etc/rc.d/rc6.d/K12mailman
elif [ -d /etc/rc6.d ];then
echo "ln -s ../init.d/mailman /etc/rc6.d/K12mailman" >> ${logdir}/main.log
ln -s ../init.d/mailman /etc/rc6.d/K12mailman
else
echo_failed
_failed=true
fi
fi
if ! $_failed ; then
echo_ok
else
echo_failed
fatal "Kann Symlinks in den Runlevel Verzeichnissen nicht erstellen (start at boot time)"
fi
fi
echononl "Starte Mailman qrunner"
echo "" >> ${logdir}/main.log
echo "## - Starte Mailman qrunner" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "/etc/init.d/mailman start" >> ${logdir}/main.log
/etc/init.d/mailman start
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal "Starten von Mailman qrunner fehlgeschlagen"
fi
echononl "Erstelle Masterpasswort für Mailman.."
echo "" >> ${logdir}/main.log
echo "## - Erstelle Masterpasswort für Mailman" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "## - "Das Masterpasswort kann an allen Stellen benutzt werden, an denen nach >> ${logdir}/main.log
echo "## - "dem Passwort eines Listenadministrators gefragt wird. Dieses wiederrum kann >> ${logdir}/main.log
echo "## - "an fast allen Stellen benutzt werden, an denen nach dem Passwort eines Listen- >> ${logdir}/main.log
echo "## - "Mitgliedes verlangt wird. >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
if $SHOW_PASS ; then
echo "## - Mailman Master Passwort: $MAILMAN_MASTER_PASS" >> ${logdir}/main.log
else
echo "## - Mailman Master Passwort: **********" >> ${logdir}/main.log
fi
echo "## -" >> ${logdir}/main.log
echo "${MAILMAN_INSTALL_DIR}/bin/mmsitepass $MAILMAN_MASTER_PASS" >> ${logdir}/main.log
${MAILMAN_INSTALL_DIR}/bin/mmsitepass $MAILMAN_MASTER_PASS > /dev/null 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal "Erstellen Masterpassworts für Mailman fehlgeschlagen"
fi
echononl "Erstelle Administrator Passwort (zur Erstellung von Listen).."
echo "" >> ${logdir}/main.log
echo "## - Erstelle Administrator Passwort (zur Erstellung von Listen)" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
if $SHOW_PASS ; then
echo "## - Passwort Listenadministrator: $MAILMAN_ADMIN_PASS" >> ${logdir}/main.log
else
echo "## - Passwort Listenadministrator: **********" >> ${logdir}/main.log
fi
echo "## -" >> ${logdir}/main.log
echo "${MAILMAN_INSTALL_DIR}/bin/mmsitepass -c $MAILMAN_ADMIN_PASS" >> ${logdir}/main.log
${MAILMAN_INSTALL_DIR}/bin/mmsitepass -c $MAILMAN_ADMIN_PASS > /dev/null 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal "Erstellen des Passworts für den Listenadministrator fehlgeschlagen"
fi
if [ -f ${MAILMAN_INSTALL_DIR}/data/virtual-mailman ]; then
echononl "Setze Dateiberechtigungen \"${MAILMAN_INSTALL_DIR}/data/virtual-mailman*\".."
echo "" >> ${logdir}/main.log
echo "## - Setze Verzeichnisberechtigungen" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "chown $MAILMAN_USER:$MAILMAN_GROUP ${MAILMAN_INSTALL_DIR}/data/virtual-mailman*" >> ${logdir}/main.log
chown $MAILMAN_USER:$MAILMAN_GROUP ${MAILMAN_INSTALL_DIR}/data/virtual-mailman* > /dev/null 2>&1
if [ "$?" != "0" ]; then
echo_failed
fatal "Kann Dateiberechtigungen für \"${MAILMAN_INSTALL_DIR}/data/virtual-mailman*\" nicht setzen.."
fi
echo "chmod g+w ${MAILMAN_INSTALL_DIR}/data/virtual-mailman*" >> ${logdir}/main.log
chmod g+w ${MAILMAN_INSTALL_DIR}/data/virtual-mailman* > /dev/null 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal "Kann Dateiberechtigungen für \"${MAILMAN_INSTALL_DIR}/data/virtual-mailman\" nicht setzen.."
fi
fi
echononl "Erstelle Mailman Cron Jobs.."
echo "" >> ${logdir}/main.log
echo "## - Erstelle Mailman Cron Jobs" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "echo \"MAILTO=$MAILMAN_ADMIN_EMAIL\" > /tmp/crontab.mailman" >> ${logdir}/main.log
echo "MAILTO=$MAILMAN_ADMIN_EMAIL" > /tmp/crontab.mailman
if [ "$?" != "0" ]; then
echo_failed
fatal "Kann Mailman Cron Jobs nicht einrichten.\n\n\techo \"MAILTO=$MAILMAN_ADMIN_EMAIL\" > /tmp/crontab.mailman failed"
fi
echo "cat ${MAILMAN_INSTALL_DIR}/cron/crontab.in >> /tmp/crontab.mailman" >> ${logdir}/main.log
cat ${MAILMAN_INSTALL_DIR}/cron/crontab.in >> /tmp/crontab.mailman
if [ "$?" != "0" ]; then
echo_failed
fatal "Kann Mailman Cron Jobs nicht einrichten.\n\n\tcat ${MAILMAN_INSTALL_DIR}/cron/crontab.in >> /tmp/crontab.mailman failed"
fi
echo "crontab -u $MAILMAN_USER /tmp/crontab.mailman" >> ${logdir}/main.log
crontab -u $MAILMAN_USER /tmp/crontab.mailman
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal "Kann Mailman Cron Jobs nicht einrichten.\n\n\tcrontab -u $MAILMAN_USER /tmp/crontab.mailman failed"
fi
echo "rm /tmp/crontab.mailman" >> ${logdir}/main.log
rm /tmp/crontab.mailman
echo "" >> ${logdir}/main.log
echo ""
exit 0