From d1eb0a22aaf31039efe9cb9664f80ea4d9f91442 Mon Sep 17 00:00:00 2001 From: Christoph Date: Tue, 21 Feb 2017 01:41:12 +0100 Subject: [PATCH] Initial import --- .../postfixadmin.env.a.mx.oopen.de | 58 + .../postfixadmin.env.c.mx.oopen.de | 60 + ...in.env.mail.interventionistische-linke.org | 65 + .../postfixadmin.env.mx.warenform.de | 68 + .../postfixadmin.env.rage.so36.net | 65 + DOC/postfixadmin.install | 1189 +++++++++++++++++ 6 files changed, 1505 insertions(+) create mode 100644 DOC/Environments/postfixadmin.env.a.mx.oopen.de create mode 100644 DOC/Environments/postfixadmin.env.c.mx.oopen.de create mode 100644 DOC/Environments/postfixadmin.env.mail.interventionistische-linke.org create mode 100644 DOC/Environments/postfixadmin.env.mx.warenform.de create mode 100644 DOC/Environments/postfixadmin.env.rage.so36.net create mode 100644 DOC/postfixadmin.install diff --git a/DOC/Environments/postfixadmin.env.a.mx.oopen.de b/DOC/Environments/postfixadmin.env.a.mx.oopen.de new file mode 100644 index 0000000..313ebf1 --- /dev/null +++ b/DOC/Environments/postfixadmin.env.a.mx.oopen.de @@ -0,0 +1,58 @@ +## - Postfixadmin environment for server +## - +## - a.mx.oopen.de (adm.oopen.de) +## - + +## ------------------------------------- +## - a.mx.oopen.de (adm.oopen.de) + +HOSTNAME=adm.oopen.de +DOMAIN=oopen.de +ADMIN_EMAIL="admin\@oopen.de" + +APACHE_CONF_DIR=/usr/local/apache2/conf +APACHE_VHOST_DIR=/usr/local/apache2/conf/vhosts +APACHE_BASE_WEBDIR=/var/www +APACHE_LOG_DIR=/var/log/apache2 + +APACHE_USER=www-data +APACHE_GROUP=www-data + +_use_mod_php=false + +APACHE_SERVER_CERT=server.crt +APACHE_SERVER_KEY=server.key + +## - Leave empty if not needed +## - +CERT_ChainFile=sub.class2.server.ca.pem + + +## - adm.oopen.de +IPV4=83.223.86.91 +IPV6=2a01:30:0:13:2f7:50ff:fed2:cef7 + +#_pf_admin_version=2.91 +_pf_admin_version=3.0 + +#_db_type='mysql' +_db_type='pgsql' + +_db_name='postfix' +_db_user='postfix' +_db_pass='FKt4z55FxMZp' +#_db_host='localhost' +_db_host='/var/run/postgresql' + +# _encrypt=md5crypt +_encrypt=cleartext + +_spam_folder=Spam + +_autoreply_domain='autoreply.oopen.de' +vacation_user=vacation +vacation_group=vacation + +deleted_maildirs="/var/deleted-maildirs" +deleted_maildomains="/var/deleted-maildomains" + diff --git a/DOC/Environments/postfixadmin.env.c.mx.oopen.de b/DOC/Environments/postfixadmin.env.c.mx.oopen.de new file mode 100644 index 0000000..a0cbbb8 --- /dev/null +++ b/DOC/Environments/postfixadmin.env.c.mx.oopen.de @@ -0,0 +1,60 @@ +## - Postfixadmin environment for server +## - +## - c.mx.oopen.de (adm.initiativenserver.de) +## - + +## ------------------------------- +## - c.mx.oopen.de (adm.initiativenserver.de) + +HOSTNAME=adm.initiativenserver.de +DOMAIN=initiativenserver.de +ADMIN_EMAIL="admin\@initiativenserver.de" + +APACHE_CONF_DIR=/usr/local/apache2/conf +APACHE_VHOST_DIR=/usr/local/apache2/conf/vhosts +APACHE_BASE_WEBDIR=/var/www +APACHE_LOG_DIR=/var/log/apache2 + +APACHE_USER=www-data +APACHE_GROUP=www-data + +_use_mod_php=false + +APACHE_SERVER_CERT=server.crt +APACHE_SERVER_KEY=server.key + +## - Leave empty if not needed +## - +CERT_ChainFile=SSL123_CA_Bundle.pem + + +IPV4=83.223.85.101 +IPV6=2a01:30:1fff:3::101 + +_pf_admin_version=code-1676-trunk + +#_db_type='pgsql' +_db_type='mysql' +_db_name='postfix' +_db_user='postfix' +_db_pass='AeB4kohyie5rahJ7' +#_db_host='/var/run/postgresql' +_db_host='localhost' + +_mysql_rootuser=root +_mysql_rootpass=buz111 + + +# _encrypt=md5crypt +_encrypt=cleartext + +#_spam_folder=Spam +_spam_folder=Junk + +_autoreply_domain='autoreply.initiativenserver.de' +vacation_user=vacation +vacation_group=vacation + +deleted_maildirs="/var/deleted-maildirs" +deleted_maildomains="/var/deleted-maildomains" + diff --git a/DOC/Environments/postfixadmin.env.mail.interventionistische-linke.org b/DOC/Environments/postfixadmin.env.mail.interventionistische-linke.org new file mode 100644 index 0000000..38dbd9e --- /dev/null +++ b/DOC/Environments/postfixadmin.env.mail.interventionistische-linke.org @@ -0,0 +1,65 @@ +## - Postfixadmin environment for server +## - +## - adm.interventionistische-linke.org +## - + +## -------------------------------------------------------------------------- +## - mail.interventionistische-linke.org (adm.interventionistische-linke.org) + +HOSTNAME=adm.interventionistische-linke.org +DOMAIN=interventionistische-linke.org +ADMIN_EMAIL="support\@interventionistische-linke.org" + +APACHE_CONF_DIR=/usr/local/apache2/conf +APACHE_VHOST_DIR=/usr/local/apache2/conf/vhosts +APACHE_BASE_WEBDIR=/var/www +APACHE_LOG_DIR=/var/log/apache2 + +APACHE_USER=www-data +APACHE_GROUP=www-data + +_use_mod_php=false + +APACHE_SERVER_CERT=server.crt +APACHE_SERVER_KEY=server.key + +## - Leave empty if not needed +## - +CERT_ChainFile=sub.class2.server.ca.pem + +IPV4=83.223.85.215 +IPV6=2a01:30:1fff:5::215 + +_pf_admin_version=2.91 + +#_db_type='mysql' +_db_type='pgsql' + +_db_name='postfix' +_db_user='postfix' +_db_pass='NcXxt7sf7bfV' +#_db_host='localhost' +_db_host='/var/run/postgresql' + +_encrypt=md5crypt +#_encrypt=cleartext + +_spam_folder=Spam + +_autoreply_domain='autoreply.interventionistische-linke.org' +vacation_user=vacation +vacation_group=vacation + +deleted_maildirs="/data/deleted-maildirs" +deleted_maildomains="/data/deleted-maildomains" + +_welcome_email=" +Hallo, + +Deine neue E-Mail Adresse ist eingerichtet. + +- IL - Interventionistische Linke + +-- +e: support@interventionistische-linke.org" + diff --git a/DOC/Environments/postfixadmin.env.mx.warenform.de b/DOC/Environments/postfixadmin.env.mx.warenform.de new file mode 100644 index 0000000..742859e --- /dev/null +++ b/DOC/Environments/postfixadmin.env.mx.warenform.de @@ -0,0 +1,68 @@ +## - Postfixadmin environment for server +## - +## - mx.warenform.de (adm.warenform.de) +## - + +## ------------------------------------- +## - mx.warenform.de (adm.warenform.de) + +HOSTNAME=adm.warenform.de +DOMAIN=warenform.de +ADMIN_EMAIL="admin\@warenform.de" + +APACHE_CONF_DIR=/usr/local/apache2/conf +APACHE_VHOST_DIR=/usr/local/apache2/conf/vhosts +APACHE_BASE_WEBDIR=/var/www +APACHE_LOG_DIR=/var/log/apache2 + +APACHE_USER=www-data +APACHE_GROUP=www-data + +_use_mod_php=false + +APACHE_SERVER_CERT=server.crt +APACHE_SERVER_KEY=server.key + +## - Leave empty if not needed +## - +CERT_ChainFile=SSL123_CA_Bundle.pem + +IPV4=83.223.85.154 +IPV6=2a01:30:1fff:6::154 + +#_pf_admin_version=2.3.7 +_pf_admin_version=2.91 + +#_db_type='mysql' +_db_type='pgsql' + +_db_name='postfix' +_db_user='postfix' +_db_pass='CbX8vg347Vvm' +#_db_host='localhost' +_db_host='/var/run/postgresql' + +# _encrypt=md5crypt +_encrypt=cleartext + +_spam_folder=Spam + +_autoreply_domain='autoreply.warenform.de' +vacation_user=vacation +vacation_group=vacation + +deleted_maildirs="/var/deleted-maildirs" +deleted_maildomains="/var/deleted-maildomains" + +_welcome_email=" +Hallo, + +Ihre neue E-Mail Adresse ist eingerichtet. + +Das WARENFORM-Team + +-- +WARENFORM | Phone: +49 30 / 61 65 17 52 -0 +Dresdner Str. 11 | Fax: +49 30 / 61 65 17 52 -66 +D-10999 Berlin | http://www.warenform.net" + diff --git a/DOC/Environments/postfixadmin.env.rage.so36.net b/DOC/Environments/postfixadmin.env.rage.so36.net new file mode 100644 index 0000000..f8234ac --- /dev/null +++ b/DOC/Environments/postfixadmin.env.rage.so36.net @@ -0,0 +1,65 @@ +## - Postfixadmin environment for server +## - +## - rage.so36.net (adm.so36.net) +## - + +## ------------------------------- +## - rage.so36.net (adm.so36.net) + +HOSTNAME=adm.so36.net +DOMAIN=so36.net +ADMIN_EMAIL="support\@so36.net" + +APACHE_CONF_DIR=/etc/apache2 +APACHE_VHOST_DIR=/etc/apache2/sites-available +APACHE_BASE_WEBDIR=/var/www +APACHE_LOG_DIR=/var/log/apache2 + +APACHE_USER=www-data +APACHE_GROUP=www-data + +_use_mod_php=false + +APACHE_SERVER_CERT=server.crt +APACHE_SERVER_KEY=server.key + +## - Leave empty if not needed +## - +CERT_ChainFile=sub.class2.server.ca.pem + +IPV4=83.223.73.193 +IPV6=2a01:30:1fff:fd00::193 + +_pf_admin_version=2.3.7 + +#_db_type='mysql' +_db_type='pgsql' + +_db_name='postfix' +_db_user='postfix' +_db_pass='9jKqFHNGrgFb' +#_db_host='localhost' +_db_host='/var/run/postgresql' + +_encrypt=md5crypt +#_encrypt=cleartext + +_spam_folder=Spam + +_autoreply_domain='autoreply.so36.net' +vacation_user=vacation +vacation_group=vacation + +deleted_maildirs="/data/deleted-maildirs" +deleted_maildomains="/data/deleted-maildomains" + +_welcome_email=" +Hallo, + +Deine neue E-Mail Adresse ist eingerichtet. + +- so36.NET + +-- +e: support@so36.net" + diff --git a/DOC/postfixadmin.install b/DOC/postfixadmin.install new file mode 100644 index 0000000..7986b06 --- /dev/null +++ b/DOC/postfixadmin.install @@ -0,0 +1,1189 @@ +## ---------------------------- ## +## --- install postfixadmin --- ## +## ---------------------------- ## + + +## ------------------------------- +## - c.mx.oopen.de (adm.initiativenserver.de) + +. postfixadmin.env.c.mx.oopen.de + +## - Ende: c.mx.oopen.de (adm.initiativenserver.de) +## ------------------------------------------------ + +## ------------------------------- +## - a.mx.oopen.de (adm.oopen.de) + +. postfixadmin.env.a.mx.oopen.de + +## - Ende: a.mx.oopen.de (adm.oopen.de) +## ------------------------------------ + +## ------------------------------------- +## - mx.warenform.de (adm.warenform.de) + +. postfixadmin.env.mx.warenform.de + +## - Ende: mx.warenform.de (adm.warenform.de) +## ------------------------------------------ + +## ------------------------------- +## - rage.so36.net (adm.so36.net) + +. postfixadmin.env.rage.so36.net + +## - Ende: rage.so36.net (adm.so36.net) +## ------------------------------------ + +## -------------------------------------------------------------------------- +## - mail.interventionistische-linke.org (adm.interventionistische-linke.org) + +. postfixadmin.env.mail.interventionistische-linke.org + +## - Ende: mail.interventionistische-linke.org (adm.interventionistische-linke.org) +## --------------------------------------------------------------------------------------- + + +if [ "$_db_type" = "postgres" -o "$_db_type" = "postgresql" -o "$_db_type" = "pgsql" -o "$_db_type" = "psql" ];then + _db_type=pgsql +fi + + + +## - Create temp directory for php +## - +mkdir -p ${APACHE_BASE_WEBDIR}/${HOSTNAME}/{logs,sessions,tmp} +chown ${APACHE_USER}:${APACHE_GROUP} ${APACHE_BASE_WEBDIR}/${HOSTNAME}/{sessions,tmp} + +if ! $_use_mod_php ; then + mkdir -p ${APACHE_BASE_WEBDIR}/${HOSTNAME}/conf + chown root:$APACHE_USER ${APACHE_BASE_WEBDIR}/${HOSTNAME}/conf + chmod 750 ${APACHE_BASE_WEBDIR}/${HOSTNAME}/conf + + _php_major_versions=`find /usr/local/ -maxdepth 1 -mindepth 1 -type l -name "php-*" -print | cut -d "-" -f2 | sort` + for _version in $_php_major_versions ; do + cp /usr/local/php-${_version}/etc/php.ini ${APACHE_BASE_WEBDIR}/${HOSTNAME}/conf/php.ini-$_version + + chown root:$APACHE_USER ${APACHE_BASE_WEBDIR}/${HOSTNAME}/conf/php.ini-$_version + chmod 640 ${APACHE_BASE_WEBDIR}/${HOSTNAME}/conf/php.ini-$_version + + cat < ${APACHE_BASE_WEBDIR}/${HOSTNAME}/conf/fcgid-$_version +#!/bin/sh +export PHPRC="${APACHE_BASE_WEBDIR}/${HOSTNAME}/conf/" +export TMPDIR="${APACHE_BASE_WEBDIR}/${HOSTNAME}/tmp" +# PHP child process management (PHP_FCGI_CHILDREN) should +# always be disabled with mod_fcgid, which will only route one +# request at a time to application processes it has spawned; +# thus, any child processes created by PHP will not be used +# effectively. (Additionally, the PHP child processes may not +# be terminated properly.) By default, and with the environment +# variable setting PHP_FCGI_CHILDREN=0, PHP child process +# management is disabled. +PHP_FCGI_CHILDREN=0 +export PHP_FCGI_CHILDREN + +exec /usr/local/php-${_version}/bin/php-cgi +EOF + + chown root:$APACHE_USER ${APACHE_BASE_WEBDIR}/${HOSTNAME}/conf/fcgid-$_version + chmod 750 ${APACHE_BASE_WEBDIR}/${HOSTNAME}/conf/fcgid-$_version + done + + ln -s php.ini-$_version ${APACHE_BASE_WEBDIR}/${HOSTNAME}/conf/php.ini + ln -s fcgid-$_version ${APACHE_BASE_WEBDIR}/${HOSTNAME}/conf/fcgid + + cat << EOF > ${APACHE_BASE_WEBDIR}/${HOSTNAME}/conf/changes.php.ini.txt +error_log = "${APACHE_BASE_WEBDIR}/${HOSTNAME}/logs/php_errors.log" +sys_temp_dir = "${APACHE_BASE_WEBDIR}/${HOSTNAME}/tmp" +upload_tmp_dir = "${APACHE_BASE_WEBDIR}/${HOSTNAME}/tmp" +session.save_path = "${APACHE_BASE_WEBDIR}/${HOSTNAME}/sessions" +soap.wsdl_cache_dir = "${APACHE_BASE_WEBDIR}/${HOSTNAME}/tmp" +EOF + + touch ${APACHE_BASE_WEBDIR}/${HOSTNAME}/logs/php_errors.log + chown ${APACHE_USER}:${APACHE_GROUP} ${APACHE_BASE_WEBDIR}/${HOSTNAME}/logs/php_errors.log + + _php_ini_file="${APACHE_BASE_WEBDIR}/${HOSTNAME}/conf/php.ini-*" + + _key=error_log + _val="${APACHE_BASE_WEBDIR}/${HOSTNAME}/logs/php_errors.log" + if grep -e "^\s*${_key}\s*=" $_php_ini_file > /dev/null 2>&1 ; then + #sed -i "0,/^\([ \t]*${_key}[ \t]*=.*\)/ s##;\1\n${_key} = \"${_val}\"#" $_php_ini_file + perl -i -n -p -e "s#^(\s*${_key}\s*=.*)#;\1\n${_key} = ${_val}#" $_php_ini_file + _retval=$? + elif grep -e "^\s*;\s*${_key}\s*=" $_php_ini_file > /dev/null 2>&1 ; then + sed -i "0,/^\([ \t]*;[ \t]*${_key}[ \t]*=.*\)/ s##\1\n${_key} = \"${_val}\"\n#" $_php_ini_file + _retval=$? + fi + + _key="sys_temp_dir" + _val="${APACHE_BASE_WEBDIR}/${HOSTNAME}/tmp" + if grep -e "^\s*${_key}\s*=" $_php_ini_file > /dev/null 2>&1 ; then + #sed -i "0,/^\([ \t]*${_key}[ \t]*=.*\)/ s##;\1\n${_key} = \"${_val}\"#" $_php_ini_file + perl -i -n -p -e "s#^(\s*${_key}\s*=.*)#;\1\n${_key} = ${_val}#" $_php_ini_file + _retval=$? + elif grep -e "^\s*;\s*${_key}\s*=" $_php_ini_file > /dev/null 2>&1 ; then + sed -i "0,/^\([ \t]*;[ \t]*${_key}[ \t]*=.*\)/ s##\1\n${_key} = \"${_val}\"\n#" $_php_ini_file + _retval=$? + fi + + _key="upload_tmp_dir" + _val="${APACHE_BASE_WEBDIR}/${HOSTNAME}/tmp" + if grep -e "^\s*${_key}\s*=" $_php_ini_file > /dev/null 2>&1 ; then + #sed -i "0,/^\([ \t]*${_key}[ \t]*=.*\)/ s##;\1\n${_key} = \"${_val}\"#" $_php_ini_file + perl -i -n -p -e "s#^(\s*${_key}\s*=.*)#;\1\n${_key} = ${_val}#" $_php_ini_file + _retval=$? + elif grep -e "^\s*;\s*${_key}\s*=" $_php_ini_file > /dev/null 2>&1 ; then + sed -i "0,/^\([ \t]*;[ \t]*${_key}[ \t]*=.*\)/ s##\1\n${_key} = \"${_val}\"\n#" $_php_ini_file + _retval=$? + fi + + _key="session.save_path" + _val="${APACHE_BASE_WEBDIR}/${HOSTNAME}/sessions" + if grep -e "^\s*${_key}\s*=" $_php_ini_file > /dev/null 2>&1 ; then + #sed -i "0,/^\([ \t]*${_key}[ \t]*=.*\)/ s##;\1\n${_key} = \"${_val}\"#" $_php_ini_file + perl -i -n -p -e "s#^(\s*${_key}\s*=.*)#;\1\n${_key} = ${_val}#" $_php_ini_file + _retval=$? + elif grep -e "^\s*;\s*${_key}\s*=" $_php_ini_file > /dev/null 2>&1 ; then + sed -i "0,/^\([ \t]*;[ \t]*${_key}[ \t]*=.*\)/ s##\1\n${_key} = \"${_val}\"\n#" $_php_ini_file + _retval=$? + fi + + _key="soap.wsdl_cache_dir" + _val="${APACHE_BASE_WEBDIR}/${HOSTNAME}/tmp" + if grep -e "^\s*${_key}\s*=" $_php_ini_file > /dev/null 2>&1 ; then + #sed -i "0,/^\([ \t]*${_key}[ \t]*=.*\)/ s##;\1\n${_key} = \"${_val}\"#" $_php_ini_file + perl -i -n -p -e "s#^(\s*${_key}\s*=.*)#;\1\n${_key} = ${_val}#" $_php_ini_file + _retval=$? + elif grep -e "^\s*;\s*${_key}\s*=" $_php_ini_file > /dev/null 2>&1 ; then + sed -i "0,/^\([ \t]*;[ \t]*${_key}[ \t]*=.*\)/ s##\1\n${_key} = \"${_val}\"\n#" $_php_ini_file + _retval=$? + fi + +fi + +## - DocumentRoot +## - +mkdir -p ${APACHE_BASE_WEBDIR}/${HOSTNAME}/htdocs +#chown ${APACHE_USER}:$APACHE_GROUP ${APACHE_BASE_WEBDIR}/${HOSTNAME}/htdocs + + +cat < ${APACHE_VHOST_DIR}/$HOSTNAME.conf +# -- ${HOSTNAME} -- # + + + + ServerAdmin $ADMIN_EMAIL + + ServerName $HOSTNAME + + RewriteEngine on + RewriteCond %{HTTPS} !=on + RewriteRule (.*) https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L] + + CustomLog ${APACHE_LOG_DIR}/${HOSTNAME}-access.log combined + ErrorLog ${APACHE_LOG_DIR}/${HOSTNAME}-error.log + + + + + + + ServerAdmin $ADMIN_EMAIL + + ServerName $HOSTNAME + +EOF +if $_use_mod_php ; then + cat <> ${APACHE_VHOST_DIR}/$HOSTNAME.conf + + ## - its allowed to overwrite by .htaccess + ## - + php_value error_reporting "E_ALL & ~E_NOTICE" + + ## - Overwriting by .htaccess NOT allowd + php_admin_value sys_temp_dir "${APACHE_BASE_WEBDIR}/${HOSTNAME}/tmp" + php_admin_value upload_tmp_dir "${APACHE_BASE_WEBDIR}/${HOSTNAME}/tmp" + php_admin_flag log_errors on + php_admin_value error_log "${APACHE_BASE_WEBDIR}/${HOSTNAME}/logs/php_error.log" + php_admin_value session.save_path "${APACHE_BASE_WEBDIR}/${HOSTNAME}/sessions" + + DocumentRoot "${APACHE_BASE_WEBDIR}/${HOSTNAME}/htdocs/" +EOF +else + cat <> ${APACHE_VHOST_DIR}/$HOSTNAME.conf + DocumentRoot "${APACHE_BASE_WEBDIR}/${HOSTNAME}/htdocs/" + + Require all granted + FCGIWrapper ${APACHE_BASE_WEBDIR}/${HOSTNAME}/conf/fcgid .php + + SetHandler fcgid-script + + Options +ExecCGI + +EOF +fi +cat <> ${APACHE_VHOST_DIR}/$HOSTNAME.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 year + ## - + Header add Strict-Transport-Security "max-age=31536000" + + SSLCertificateFile ${APACHE_CONF_DIR}/$APACHE_SERVER_CERT + SSLCertificateKeyFile ${APACHE_CONF_DIR}/$APACHE_SERVER_KEY + $_SSLCertificateChainFile + + CustomLog ${APACHE_LOG_DIR}/${HOSTNAME}-access.log combined + ErrorLog ${APACHE_LOG_DIR}/${HOSTNAME}-error.log + + + +## ------ +## - IPv6 +## ------ + +# -- ${HOSTNAME} -- # + + + + ServerAdmin $ADMIN_EMAIL + + ServerName $HOSTNAME + + RewriteEngine on + RewriteCond %{HTTPS} !=on + RewriteRule (.*) https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L] + + CustomLog ${APACHE_LOG_DIR}/${HOSTNAME}-access.log combined + ErrorLog ${APACHE_LOG_DIR}/${HOSTNAME}-error.log + + + + + + + ServerAdmin $ADMIN_EMAIL + + ServerName $HOSTNAME + +EOF +if $_use_mod_php ; then + cat <> ${APACHE_VHOST_DIR}/$HOSTNAME.conf + ## - its allowed to overwrite by .htaccess + ## - + php_value error_reporting "E_ALL & ~E_NOTICE" + + ## - Overwriting by .htaccess NOT allowd + php_admin_value sys_temp_dir "${APACHE_BASE_WEBDIR}/${HOSTNAME}/tmp" + php_admin_value upload_tmp_dir "${APACHE_BASE_WEBDIR}/${HOSTNAME}/tmp" + php_admin_flag log_errors on + php_admin_value error_log "${APACHE_BASE_WEBDIR}/${HOSTNAME}/logs/php_error.log" + php_admin_value session.save_path "${APACHE_BASE_WEBDIR}/${HOSTNAME}/sessions" + + DocumentRoot "${APACHE_BASE_WEBDIR}/${HOSTNAME}/htdocs/" +EOF +else + cat <> ${APACHE_VHOST_DIR}/$HOSTNAME.conf + DocumentRoot "${APACHE_BASE_WEBDIR}/${HOSTNAME}/htdocs/" + + Require all granted + FCGIWrapper ${APACHE_BASE_WEBDIR}/${HOSTNAME}/conf/fcgid .php + + SetHandler fcgid-script + + Options +ExecCGI + +EOF +fi +cat <> ${APACHE_VHOST_DIR}/$HOSTNAME.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 year + ## - + Header add Strict-Transport-Security "max-age=31536000" + + SSLCertificateFile ${APACHE_CONF_DIR}/$APACHE_SERVER_CERT + SSLCertificateKeyFile ${APACHE_CONF_DIR}/$APACHE_SERVER_KEY + $_SSLCertificateChainFile + + CustomLog ${APACHE_LOG_DIR}/${HOSTNAME}-access.log combined + ErrorLog ${APACHE_LOG_DIR}/${HOSTNAME}-error.log + + + +EOF + +a2ensite $HOSTNAME + + +## - Datenbank etstellen: +## - +## - MySQL/PostgreSQL Datenbank erstellen +## - +## - + +if [ "$_db_type" = "mysql" ]; then + if ! mysql -u$_mysql_rootuser -p$_mysql_rootpass -N -s -e \ + "SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = '$_db_name'" 2>/dev/null \ + | grep $_db_name > /dev/null 2>&1 ; then + mysql -u$_mysql_rootuser -p$_mysql_rootpass -N -s -e \ + "CREATE DATABASE IF NOT EXISTS $_db_name CHARACTER SET utf8 COLLATE utf8_general_ci" + mysql -u$_mysql_rootuser -p$_mysql_rootpass -N -s -e \ + "GRANT ALL ON $_db_name.* TO '$_db_user'@'localhost' IDENTIFIED BY '$_db_pass'" + mysql -u$_mysql_rootuser -p$_mysql_rootpass -N -s -e "FLUSH PRIVILEGES" + fi +elif [ "$_db_type" = "pgsql" ]; then + count=`su - postgres -c "psql -q -A -t -l" | grep -c -e "^$_db_name"` + if [ $count -eq 0 ];then + echo "CREATE ROLE $_db_user WITH LOGIN NOCREATEDB NOCREATEROLE NOSUPERUSER ENCRYPTED PASSWORD '$_db_pass'" \ + | su - postgres -c "psql" > /dev/null + su - postgres -c "createdb -E utf8 -O $_db_user $_db_name" + fi +fi + +## - Get postfixadmin sources if not yet downloaded +## - +cd /usr/local/src/mailsystem/tarballs +if [ ! -f postfixadmin-${_pf_admin_version}.tar.gz ];then + wget http://downloads.sourceforge.net/project/postfixadmin/postfixadmin/postfixadmin-${_pf_admin_version}/postfixadmin-${_pf_admin_version}.tar.gz +fi + +cd /usr/local/src/mailsystem +if [ -d postfixadmin-${_pf_admin_version} ]; then + mv postfixadmin-${_pf_admin_version} postfixadmin-${_pf_admin_version}.`date "+%Y%m%d-%H%M"` +fi +gunzip < tarballs/postfixadmin-${_pf_admin_version}.tar.gz | tar -xf - + +## - Get postfixadmin patch if not yet downloaded +## - +## - That patch adds the capability to include the subject of the original mail in the +## - subject of the vacation message. +## - A good vacation subject could be: 'Re: $SUBJECT' +## - Also corrected log entry about "Already informed ..." to show the $orig_from, not $email +## - +## - !! Note: +## - Since Postfixadmin version 2.9.1, this patch is already included +## - +#if [ ! -f /usr/local/src/mailsystem/tarballs/vacation.pl_SUBJECT.patch ];then +# cd /usr/local/src/mailsystem/tarballs +# wget http://sourceforge.net/p/postfixadmin/patches/_discuss/thread/69a7ce85/b4e9/attachment/vacation.pl_SUBJECT.patch +# cd /usr/local/src/mailsystem +#fi + +## - Apply patch +## - +#patch -p0 /usr/local/src/mailsystem/postfixadmin-${_pf_admin_version}/VIRTUAL_VACATION/vacation.pl \ +# /usr/local/src/mailsystem/tarballs/vacation.pl_SUBJECT.patch + + +## - postfixadmin, version 2.91 is broken if database backend is PostgreSQL +## - +## - I have written a pacth, which fixes that errors +## - +patch /usr/local/src/mailsystem/postfixadmin-${_pf_admin_version}/VIRTUAL_VACATION/vacation.pl \ + /usr/local/src/mailsystem/tarballs/vacation-4.0r1.pl_PGSQL.patch + + +if [ -f /var/spool/vacation/vacation.pl ]; then + mv /var/spool/vacation/vacation.pl /var/spool/vacation/vacation.pl.`date "+%Y%m%d-%H%M"` +fi +cp /usr/local/src/mailsystem/postfixadmin-${_pf_admin_version}/VIRTUAL_VACATION/vacation.pl \ + /var/spool/vacation/vacation.pl +chown ${vacation_user}:${vacation_group} /var/spool/vacation/vacation.pl +chmod 700 /var/spool/vacation/vacation.pl + + +## - Use 'Re: $SUBJECT' as the default subject template in postfixadmin +## - +perl -i -n -p -e "s#(^\s*\\\$PALANG\['pUsersVacation_subject_text'\].*$)#\#\1\n\\\$PALANG['pUsersVacation_subject_text'] = 'Re: \\\$SUBJECT';#" /usr/local/src/mailsystem/postfixadmin-${_pf_admin_version}/languages/*.lang + + +cp -a /usr/local/src/mailsystem/postfixadmin-${_pf_admin_version} ${APACHE_BASE_WEBDIR}/$HOSTNAME + +cd ${APACHE_BASE_WEBDIR}/${HOSTNAME}/postfixadmin-${_pf_admin_version} +find -type f -print0 | xargs -0 chmod 640 +find -type f -print0 | xargs -0 chown root:$APACHE_GROUP +find -type d -print0 | xargs -0 chown root:$APACHE_GROUP +chown -R ${APACHE_USER}:$APACHE_GROUP templates_c + +mkdir ${APACHE_BASE_WEBDIR}/$HOSTNAME/logs + +cd ${APACHE_BASE_WEBDIR}/${HOSTNAME}/postfixadmin-${_pf_admin_version} + +## - configure postfixadmin +## - +## - edit file config.inc.php +## - +## - set: +## - +## - $CONF['postfix_admin_url'] = 'https://$HOSTNAME'; +## - +## - $CONF['default_language'] = 'de'; +## - $CONF['database_type'] = '$_db_type'; +## - $CONF['database_host'] = 'localhost'; +## - $CONF['database_user'] = '$_db_user'; +## - $CONF['database_password'] = '$_db_pass'; +## - $CONF['database_name'] = '$_db_name'; +## - $CONF['database_prefix'] = ''; +## - $CONF['admin_email'] = '$ADMIN_EMAIL'; +## - $CONF['encrypt'] = '$_encrypt'; +## - $CONF['default_aliases'] = array ( +## - 'abuse' => 'postmaster@$DOMAIN', +## - 'postmaster' => 'postmaster@$DOMAIN', +## - ); +## - $CONF['domain_path'] = 'YES'; +## - $CONF['domain_in_mailbox'] = 'NO'; +## - $CONF['aliases'] = '100'; +## - $CONF['mailboxes'] = '100'; +## - $CONF['maxquota'] = '0'; +## - $CONF['domain_quota_default'] = '0'; +## - $CONF['quota'] = 'YES'; +## - $CONF['domain_quota'] = 'Yes'; +## - $CONF['quota_multiplier'] = '1048576'; +## - $CONF['transport_options'] = array ( +## - 'lmtp:unix:private/dovecot-lmtp', // for virtual accounts +## - 'local', // for system accounts +## - 'relay' // for backup mx +## - ); +## - $CONF['transport_default'] = 'lmtp:unix:private/dovecot-lmtp'; +## - $CONF['vacation'] = 'YES'; +## - $CONF['vacation_domain'] = '$_autoreply_domain'; +## - +## - $CONF['vacation_choice_of_reply'] = array ( +## - 0 => 'reply_once', // Sends only Once the message during Out of Office +## - 1 => 'reply_every_mail', // Reply on every email +## - 60*60*24 => 'reply_once_per_day', // Reply if last autoreply was at least one day ago +## - 60*60*24*7 => 'reply_once_per_week' // Reply if last autoreply was at least a week ago +## - ); +## - +## - $CONF['alias_control_admin'] = 'YES'; +## - $CONF['alias_control'] = 'YES'; +## - $CONF['special_alias_control'] = 'NO'; +## - $CONF['backup'] = 'YES'; +## - $CONF['fetchmail'] = 'NO'; +## - $CONF['user_footer_link'] = "https://${HOSTNAME}/main.php"; +## - $CONF['footer_text'] = "Main Menu"; +## - $CONF['footer_link'] = "http://${HOSTNAME}/main.php"; +## - $CONF['emailcheck_resolve_domain']='NO'; +## - $CONF['show_status']='YES'; +## - $CONF['show_status_key']='YES'; +## - $CONF['show_undeliverable']='NO'; +## - $CONF['show_popimap']='NO'; +## - +## - $CONF['used_quotas'] = 'YES'; +## - $CONF['new_quota_table'] = 'YES'; +## - +## - after finished, you must also change the value of $CONF['configured'] +## - to 'true' +## - +## - $CONF['configured'] = true; +perl -i.ORIG -n -p -e "s#^(\s*\\\$CONF\['postfix_admin_url'\]\s*=.*)#//!\1\n\\\$CONF['postfix_admin_url'] = 'https://$HOSTNAME';#" \ + ${APACHE_BASE_WEBDIR}/${HOSTNAME}/postfixadmin-${_pf_admin_version}/config.inc.php +perl -i -n -p -e "s#^(\s*\\\$CONF\['default_language'\]\s*=.*)#//!\1\n\\\$CONF['default_language'] = 'de';#" \ + ${APACHE_BASE_WEBDIR}/${HOSTNAME}/postfixadmin-${_pf_admin_version}/config.inc.php +perl -i -n -p -e "s#^(\s*\\\$CONF\['database_type'\]\s*=.*)#//!\1\n\\\$CONF['database_type'] = '$_db_type';#" \ + ${APACHE_BASE_WEBDIR}/${HOSTNAME}/postfixadmin-${_pf_admin_version}/config.inc.php +perl -i -n -p -e "s#^(\s*\\\$CONF\['database_host'\]\s*=.*)#//!\1\n\\\$CONF['database_host'] = 'localhost';#" \ + ${APACHE_BASE_WEBDIR}/${HOSTNAME}/postfixadmin-${_pf_admin_version}/config.inc.php +perl -i -n -p -e "s#^(\s*\\\$CONF\['database_user'\]\s*=.*)#//!\1\n\\\$CONF['database_user'] = '$_db_user';#" \ + ${APACHE_BASE_WEBDIR}/${HOSTNAME}/postfixadmin-${_pf_admin_version}/config.inc.php +perl -i -n -p -e "s#^(\s*\\\$CONF\['database_password'\]\s*=.*)#//!\1\n\\\$CONF['database_password'] = '$_db_pass';#" \ + ${APACHE_BASE_WEBDIR}/${HOSTNAME}/postfixadmin-${_pf_admin_version}/config.inc.php +perl -i -n -p -e "s#^(\s*\\\$CONF\['database_name'\]\s*=.*)#//!\1\n\\\$CONF['database_name'] = '$_db_name';#" \ + ${APACHE_BASE_WEBDIR}/${HOSTNAME}/postfixadmin-${_pf_admin_version}/config.inc.php +perl -i -n -p -e "s#^(\s*\\\$CONF\['database_prefix'\]\s*=.*)#//!\1\n\\\$CONF['database_prefix'] = '';#" \ + ${APACHE_BASE_WEBDIR}/${HOSTNAME}/postfixadmin-${_pf_admin_version}/config.inc.php +perl -i -n -p -e "s#^(\s*\\\$CONF\['admin_email'\]\s*=.*)#//!\1\n\\\$CONF['admin_email'] = '$ADMIN_EMAIL';#" \ + ${APACHE_BASE_WEBDIR}/${HOSTNAME}/postfixadmin-${_pf_admin_version}/config.inc.php +perl -i -n -p -e "s#^(\s*\\\$CONF\['encrypt'\]\s*=.*)#//!\1\n\\\$CONF['encrypt'] = '$_encrypt';#" \ + ${APACHE_BASE_WEBDIR}/${HOSTNAME}/postfixadmin-${_pf_admin_version}/config.inc.php + + +perl -i -n -p -e "s#^(\s*\\\$CONF\['default_aliases'\]\s*=.*)#//\n//! 'default_aliases' will be overridden - see end of configfile\n//\n\1#" \ + ${APACHE_BASE_WEBDIR}/${HOSTNAME}/postfixadmin-${_pf_admin_version}/config.inc.php +echo -e "\n\n\$CONF['default_aliases'] = array (\n 'abuse' => 'postmaster@$DOMAIN',\n 'postmaster' => 'postmaster@$DOMAIN'\n);\n" >> ${APACHE_BASE_WEBDIR}/${HOSTNAME}/postfixadmin-${_pf_admin_version}/config.inc.php + +perl -i -n -p -e "s#^(\s*\\\$CONF\['domain_path'\]\s*=.*)#//!\1\n\\\$CONF['domain_path'] = 'YES';#" \ + ${APACHE_BASE_WEBDIR}/${HOSTNAME}/postfixadmin-${_pf_admin_version}/config.inc.php +perl -i -n -p -e "s#^(\s*\\\$CONF\['domain_in_mailbox'\]\s*=.*)#//!\1\n\\\$CONF['domain_in_mailbox'] = 'NO';#" \ + ${APACHE_BASE_WEBDIR}/${HOSTNAME}/postfixadmin-${_pf_admin_version}/config.inc.php +perl -i -n -p -e "s#^(\s*\\\$CONF\['aliases'\]\s*=.*)#//!\1\n\\\$CONF['aliases'] = '100';#" \ + ${APACHE_BASE_WEBDIR}/${HOSTNAME}/postfixadmin-${_pf_admin_version}/config.inc.php +perl -i -n -p -e "s#^(\s*\\\$CONF\['mailboxes'\]\s*=.*)#//!\1\n\\\$CONF['mailboxes'] = '100';#" \ + ${APACHE_BASE_WEBDIR}/${HOSTNAME}/postfixadmin-${_pf_admin_version}/config.inc.php +perl -i -n -p -e "s#^(\s*\\\$CONF\['maxquota'\]\s*=.*)#//!\1\n\\\$CONF['maxquota'] = '0';#" \ + ${APACHE_BASE_WEBDIR}/${HOSTNAME}/postfixadmin-${_pf_admin_version}/config.inc.php +perl -i -n -p -e "s#^(\s*\\\$CONF\['domain_quota_default'\]\s*=.*)#//!\1\n\\\$CONF['domain_quota_default'] = '0';#" \ + ${APACHE_BASE_WEBDIR}/${HOSTNAME}/postfixadmin-${_pf_admin_version}/config.inc.php +perl -i -n -p -e "s#^(\s*\\\$CONF\['quota'\]\s*=.*)#//!\1\n\\\$CONF['quota'] = 'YES';#" \ + ${APACHE_BASE_WEBDIR}/${HOSTNAME}/postfixadmin-${_pf_admin_version}/config.inc.php +perl -i -n -p -e "s#^(\s*\\\$CONF\['domain_quota'\]\s*=.*)#//!\1\n\\\$CONF['domain_quota'] = 'YES';#" \ + ${APACHE_BASE_WEBDIR}/${HOSTNAME}/postfixadmin-${_pf_admin_version}/config.inc.php +perl -i -n -p -e "s#^(\s*\\\$CONF\['quota_multiplier'\]\s*=.*)#//!\1\n\\\$CONF['quota_multiplier'] = '1048576';#" \ + ${APACHE_BASE_WEBDIR}/${HOSTNAME}/postfixadmin-${_pf_admin_version}/config.inc.php + + +perl -i -n -p -e "s#^(\s*\\\$CONF\['transport_options'\]\s*=.*)#//\n//! \"transport_options\" will be overridden - see end of configfile\n//\n\1#" \ + ${APACHE_BASE_WEBDIR}/${HOSTNAME}/postfixadmin-${_pf_admin_version}/config.inc.php +echo -e "\n\n\$CONF['transport_options'] = array (\n 'lmtp:unix:private/dovecot-lmtp', // for virtual accounts\n 'local', // for system accounts\n 'relay' // for backup mx\n);\n\$CONF['transport_default'] = 'lmtp:unix:private/dovecot-lmtp';\n" >> ${APACHE_BASE_WEBDIR}/${HOSTNAME}/postfixadmin-${_pf_admin_version}/config.inc.php +perl -i -n -p -e "s#^(\s*\\\$CONF\['transport_default'\]\s*=.*)#//!\1\n\\\$CONF['transport_default'] = 'lmtp:unix:private/dovecot-lmtp';#" \ + ${APACHE_BASE_WEBDIR}/${HOSTNAME}/postfixadmin-${_pf_admin_version}/config.inc.php + +perl -i -n -p -e "s#^(\s*\\\$CONF\['vacation'\]\s*=.*)#//!\1\n\\\$CONF['vacation'] = 'YES';#" \ + ${APACHE_BASE_WEBDIR}/${HOSTNAME}/postfixadmin-${_pf_admin_version}/config.inc.php +perl -i -n -p -e "s#^(\s*\\\$CONF\['vacation_domain'\]\s*=.*)#//!\1\n\\\$CONF['vacation_domain'] = '$_autoreply_domain';#" \ + ${APACHE_BASE_WEBDIR}/${HOSTNAME}/postfixadmin-${_pf_admin_version}/config.inc.php + + +perl -i -n -p -e "s#^(\s*\\\$CONF\['vacation_choice_of_reply'\]\s*=.*)#//\n//! 'vacation_choice_of_reply' will be overridden - see end of configfile\n//\n\1#" \ + ${APACHE_BASE_WEBDIR}/${HOSTNAME}/postfixadmin-${_pf_admin_version}/config.inc.php + +cat <> ${APACHE_BASE_WEBDIR}/${HOSTNAME}/postfixadmin-${_pf_admin_version}/config.inc.php + +// ReplyType options +// If you want to define additional reply options put them in array below. +// The array has the format seconds between replies => $PALANG text +// Special values for seconds are: +// 0 => only reply to the first mail while on vacation +// 1 => reply on every mail +// 60*60*24*7 => Reply if last autoreply was at least a week ago +// +//! ckubu added: +// - 60*60*24 => 'reply_once_per_day', +// ADD also "languages/de.lang": +// +// $PALANG['reply_once_per_day'] = 'Einmal pro Tag antworten'; +// +\$CONF['vacation_choice_of_reply'] = array ( + 0 => 'reply_once', // Sends only Once the message during Out of Office + 1 => 'reply_every_mail', // Reply on every email + 60*60*24 => 'reply_once_per_day', // Reply if last autoreply was at least one day ago + 60*60*24*7 => 'reply_once_per_week' // Reply if last autoreply was at least a week ago +); +EOF + +perl -i -n -p -e "s#^(\s*\\\$PALANG\['reply_every_mail'\]\s+=.*)#\1\n\\\$PALANG['reply_once_per_day'] = 'Einmal pro Tag antworten';#" \ + ${APACHE_BASE_WEBDIR}/${HOSTNAME}/postfixadmin-${_pf_admin_version}/languages/de.lang +perl -i -n -p -e "s#^(\s*\\\$PALANG\['reply_every_mail'\]\s+=.*)#\1\n\\\$PALANG['reply_once_per_day'] = 'Reply once per day';#" \ + ${APACHE_BASE_WEBDIR}/${HOSTNAME}/postfixadmin-${_pf_admin_version}/languages/en.lang + + +perl -i -n -p -e "s#^(\s*\\\$CONF\['alias_control_admin'\]\s+=.*)#//!\1\n\\\$CONF['alias_control_admin'] = 'YES';#" \ + ${APACHE_BASE_WEBDIR}/${HOSTNAME}/postfixadmin-${_pf_admin_version}/config.inc.php +perl -i -n -p -e "s#^(\s*\\\$CONF\['alias_control'\]\s*=.*)#//!\1\n\\\$CONF['alias_control'] = 'YES';#" \ + ${APACHE_BASE_WEBDIR}/${HOSTNAME}/postfixadmin-${_pf_admin_version}/config.inc.php +perl -i -n -p -e "s#^(\s*\\\$CONF\['special_alias_control'\]\s*=.*)#//!\1\n\\\$CONF['special_alias_control'] = 'NO';#" \ + ${APACHE_BASE_WEBDIR}/${HOSTNAME}/postfixadmin-${_pf_admin_version}/config.inc.php +perl -i -n -p -e "s#^(\s*\\\$CONF\['backup'\]\s*=.*)#//!\1\n\\\$CONF['backup'] = 'YES';#" \ + ${APACHE_BASE_WEBDIR}/${HOSTNAME}/postfixadmin-${_pf_admin_version}/config.inc.php +perl -i -n -p -e "s#^(\s*\\\$CONF\['fetchmail'\]\s*=.*)#//!\1\n\\\$CONF['fetchmail'] = 'NO';#" \ + ${APACHE_BASE_WEBDIR}/${HOSTNAME}/postfixadmin-${_pf_admin_version}/config.inc.php +perl -i -n -p -e "s#^(\s*\\\$CONF\['user_footer_link'\]\s+=.*)#//!\1\n\\\$CONF['user_footer_link'] = 'https://${HOSTNAME}/main.php';#" \ + ${APACHE_BASE_WEBDIR}/${HOSTNAME}/postfixadmin-${_pf_admin_version}/config.inc.php +perl -i -n -p -e "s#^(\s*\\\$CONF\['footer_text'\]\s+=.*)#//!\1\n\\\$CONF['footer_text'] = 'Main Menu';#" \ + ${APACHE_BASE_WEBDIR}/${HOSTNAME}/postfixadmin-${_pf_admin_version}/config.inc.php +perl -i -n -p -e "s#^(\s*\\\$CONF\['footer_link'\]\s+=.*)#//!\1\n\\\$CONF['footer_link'] = 'http://${HOSTNAME}/main.php';#" \ + ${APACHE_BASE_WEBDIR}/${HOSTNAME}/postfixadmin-${_pf_admin_version}/config.inc.php +perl -i -n -p -e "s#^(\s*\\\$CONF\['emailcheck_resolve_domain'\]\s*=.*)#//!\1\n\\\$CONF['emailcheck_resolve_domain'] = 'NO';#" \ + ${APACHE_BASE_WEBDIR}/${HOSTNAME}/postfixadmin-${_pf_admin_version}/config.inc.php +perl -i -n -p -e "s#^(\s*\\\$CONF\['show_status'\]\s*=.*)#//!\1\n\\\$CONF['show_status'] = 'YES';#" \ + ${APACHE_BASE_WEBDIR}/${HOSTNAME}/postfixadmin-${_pf_admin_version}/config.inc.php +perl -i -n -p -e "s#^(\s*\\\$CONF\['show_status_key'\]\s*=.*)#//!\1\n\\\$CONF['show_status_key'] = 'YES';#" \ + ${APACHE_BASE_WEBDIR}/${HOSTNAME}/postfixadmin-${_pf_admin_version}/config.inc.php +perl -i -n -p -e "s#^(\s*\\\$CONF\['show_undeliverable'\]\s*=.*)#//!\1\n\\\$CONF['show_undeliverable'] = 'NO';#" \ + ${APACHE_BASE_WEBDIR}/${HOSTNAME}/postfixadmin-${_pf_admin_version}/config.inc.php +perl -i -n -p -e "s#^(\s*\\\$CONF\['show_popimap'\]\s*=.*)#//!\1\n\\\$CONF['show_popimap'] = 'NO';#" \ + ${APACHE_BASE_WEBDIR}/${HOSTNAME}/postfixadmin-${_pf_admin_version}/config.inc.php +perl -i -n -p -e "s#^(\s*\\\$CONF\['used_quotas'\]\s*=.*)#//!\1\n\\\$CONF['used_quotas'] = 'YES';#" \ + ${APACHE_BASE_WEBDIR}/${HOSTNAME}/postfixadmin-${_pf_admin_version}/config.inc.php +perl -i -n -p -e "s#^(\s*\\\$CONF\['new_quota_table'\]\s*=.*)#//!\1\n\\\$CONF['new_quota_table'] = 'YES';#" \ + ${APACHE_BASE_WEBDIR}/${HOSTNAME}/postfixadmin-${_pf_admin_version}/config.inc.php + +## - after finished, you must alos change the value of $CONF['configured'] +## - to 'true' +## - +## - $CONF['configured'] = true; +perl -i -n -p -e "s#^(\s*\\\$CONF\['configured'\]\s*=.*)#//!\1\n\\\$CONF['configured'] = true;#" \ + ${APACHE_BASE_WEBDIR}/${HOSTNAME}/postfixadmin-${_pf_admin_version}/config.inc.php + + +## - AFTER DELETION MAILBOX +## - +## - activate script for moving a mailbox from the mailboxdirectory +## - and save it to the backupb directory /var/deleted-maildirs +## - +mkdir -p $deleted_maildirs +chown vmail:vmail $deleted_maildirs +chmod 700 $deleted_maildirs + +if [ -f /usr/local/bin/postfixadmin-mailbox-postdeletion.sh ]; then + mv /usr/local/bin/postfixadmin-mailbox-postdeletion.sh \ + /usr/local/bin/postfixadmin-mailbox-postdeletion.sh.`date "+%Y%m%d-%H%M"` +fi +cp ${APACHE_BASE_WEBDIR}/${HOSTNAME}/postfixadmin-${_pf_admin_version}/ADDITIONS/postfixadmin-mailbox-postdeletion.sh \ + /usr/local/bin/ + +chmod 755 /usr/local/bin/postfixadmin-mailbox-postdeletion.sh + +## - chnage the posdeletion scripts to your needs: +## - +## - set: +## - basedir=/var/vmail +## - trashbase=$deleted_maildirs +## - +## - trashdir="${trashbase}/$2/`date +%F_$H-%M`_${subdir}" +## - +perl -i -n -p -e "s#^(\s*)(basedir=.*)#\#\1\2\n\1basedir=/var/vmail#" \ + /usr/local/bin/postfixadmin-mailbox-postdeletion.sh +perl -i -n -p -e "s#^(\s*)(trashbase=.*)#\#\1\2\n\1trashbase=${deleted_maildirs}#" \ + /usr/local/bin/postfixadmin-mailbox-postdeletion.sh +perl -i -n -p -e "s#^(\s*)(trashdir=.*)#\#\1\2\n\1trashdir=\"\\\${trashbase}/\\\$2/\`date +%F_%H-%M\`_\\\${subdir}\"#" \ + /usr/local/bin/postfixadmin-mailbox-postdeletion.sh + +## - edit ${APACHE_BASE_WEBDIR}/${HOSTNAME}/htdocs/config.inc.php +## - +## - in section add line +## - $CONF['mailbox_postdeletion_script']='sudo -u vmail /usr/local/bin/postfixadmin-mailbox-postdeletion.sh'; +## - +perl -i -n -p -e "s#^(\s*[/*]?\s*\\\$CONF\['mailbox_postdeletion_script'\]\s*=.*)#//!\1\n\\\$CONF['mailbox_postdeletion_script'] = 'sudo -u vmail /usr/local/bin/postfixadmin-mailbox-postdeletion.sh';#" \ + ${APACHE_BASE_WEBDIR}/${HOSTNAME}/postfixadmin-${_pf_admin_version}/config.inc.php + +## - !! Notice: +## - Have a look at ${APACHE_BASE_WEBDIR}/${HOSTNAME}/postfixadmin-${_pf_admin_version}/config.inc.php +## - and see if changes affected +## - + + +## - you need also an entry in /etc/sudores +## - +## - ues visudo-command to add: +## - www-data ALL=(vmail) NOPASSWD: /usr/local/bin/postfixadmin-mailbox-postdeletion.sh +## - +visudo + + +## - AFTER DELETION MAILDOMIAN +## - +## - activate script for moving a mailbox from the mailboxdirectory +## - and save it to the backupb directory $deleted_maildomains +## - +mkdir -p $deleted_maildomains +chown vmail:vmail $deleted_maildomains +chmod 700 $deleted_maildomains + +if [ -f /usr/local/bin/postfixadmin-domain-postdeletion.sh ]; then + mv /usr/local/bin/postfixadmin-domain-postdeletion.sh \ + /usr/local/bin/postfixadmin-domain-postdeletion.sh.`date "+%Y%m%d-%H%M"` +fi +cp ${APACHE_BASE_WEBDIR}/${HOSTNAME}/postfixadmin-${_pf_admin_version}/ADDITIONS/postfixadmin-domain-postdeletion.sh \ + /usr/local/bin/ + +chmod 755 /usr/local/bin/postfixadmin-domain-postdeletion.sh + +## - chnage the posdeletion scripts to your needs: +## - +## - set: +## - basedir=/var/vmail +## - trashbase=$deleted_maildomains +## - +## - trashdir="${trashbase}/`date +%F_%H-%M`_$1" +## - +perl -i -n -p -e "s#^(\s*)(basedir=.*)#\#\1\2\n\1basedir=/var/vmail#" \ + /usr/local/bin/postfixadmin-domain-postdeletion.sh +perl -i -n -p -e "s#^(\s*)(trashbase=.*)#\#\1\2\n\1trashbase=${deleted_maildomains}#" \ + /usr/local/bin/postfixadmin-domain-postdeletion.sh +perl -i -n -p -e "s#^(\s*)(trashdir=.*)#\#\1\2\n\1trashdir=\"\\\${trashbase}/\`date +%F_%H-%M\`_\\\$1\"#" \ + /usr/local/bin/postfixadmin-domain-postdeletion.sh + +## - edit ${APACHE_BASE_WEBDIR}/${HOSTNAME}/htdocs/config.inc.php +## - +## - in section add line +## - $CONF['domain_postdeletion_script']='sudo -u vmail /usr/local/bin/postfixadmin-domain-postdeletion.sh'; +## - +perl -i -n -p -e "s#^(\s*[/*]?\s*\\\$CONF\['domain_postdeletion_script'\]\s*=.*)#//!\1\n\\\$CONF['domain_postdeletion_script'] = 'sudo -u vmail /usr/local/bin/postfixadmin-domain-postdeletion.sh';#" \ + ${APACHE_BASE_WEBDIR}/${HOSTNAME}/postfixadmin-${_pf_admin_version}/config.inc.php + +## - !! Notice: +## - Have a look at ${APACHE_BASE_WEBDIR}/${HOSTNAME}/postfixadmin-${_pf_admin_version}/config.inc.php +## - and see if changes affected +## - + + +## - you need also an entry in /etc/sudores +## - +## - ues visudo-command to add: +## - www-data ALL=(vmail) NOPASSWD: /usr/local/bin/postfixadmin-domain-postdeletion.sh +## - +visudo + + +cd ${APACHE_BASE_WEBDIR}/$HOSTNAME +if [ -h ${APACHE_BASE_WEBDIR}/${HOSTNAME}/htdocs ]; then + rm ${APACHE_BASE_WEBDIR}/${HOSTNAME}/htdocs +elif [ -d ${APACHE_BASE_WEBDIR}/${HOSTNAME}/htdocs -o -f ${APACHE_BASE_WEBDIR}/${HOSTNAME}/htdocs ]; then + mv ${APACHE_BASE_WEBDIR}/${HOSTNAME}/htdocs ${APACHE_BASE_WEBDIR}/${HOSTNAME}/htdocs.`date +%Y%m%d-%H%M` +fi +ln -s postfixadmin-${_pf_admin_version} htdocs + + +## - Configure Postfixadmin - this will also create tables in database postfix +## - +http://${HOSTNAME}/setup.php + + +## - Afterwords you have to change configuration vaiable $CONF['setup_password'] +## - Setup password: EadGl15E +## - $CONF['setup_password'] = '5ae65a138fad97191ebdb7c4ed3a1826:5ae467dac6075eed6f5573d40286a65bf1ddd554'; + +## - Now create admin account +## - +## - admin account: +## - user......: admin@warenform.net +## - password..: dbddhkpuka + +vim ${APACHE_BASE_WEBDIR}/${HOSTNAME}/htdocs/config.inc.php + +## - Using Postfixadmin, all changes (create/delete maildomains, mailboxes, +## - aliases, etc..) will result in concerning entries in the tables of the +## - specified database. +## - +## - Now you have to setup Postfix to recognize all these entries. To do so, +## - you must specify database requests (in different files) and load them +## - into Postfix configuration. In particular that are the following files: +## - +## - pgsql_relay-domain-maps.cf +## - pgsql_sender_login_maps.cf +## - pgsql_transport_maps.cf +## - pgsql_virtual_alias_domain_catchall_maps.cf +## - pgsql_virtual_alias_domain_mailbox_maps.cf +## - pgsql_virtual_alias_domain_maps.cf +## - pgsql_virtual_alias_maps.cf +## - pgsql_virtual_domains_maps.cf +## - pgsql_virtual_mailbox_limit_maps.cf +## - pgsql_virtual_mailbox_maps.cf + +if [ "$_db_type" = "pgsql" ]; then + + cat < /etc/postfix/${_db_type}_relay-domain-maps.cf +hosts = $_db_host +user = $_db_user +password = $_db_pass +dbname = $_db_name +query = SELECT domain FROM domain WHERE domain = '%s' AND backupmx = true +EOF + +elif [ "$_db_type" = "mysql" ];then + + cat < /etc/postfix/${_db_type}_relay-domain-maps.cf +hosts = $_db_host +user = $_db_user +password = $_db_pass +dbname = $_db_name +query = SELECT domain FROM domain WHERE domain = "%s" AND backupmx = 1 +EOF + +else + echo "[ FATAL ]: Unknown database type $_db_type" +fi + + +## - /etc/postfix/main.cf +## - +## - add to relay_domains: +## - proxy:$_db_type:/etc/postfix/$_db_type_relay-domain-maps.cf +## - +perl -i -n -p -e "s#\s*(relay_domains\s*=.*$)#\1\n proxy:${_db_type}:/etc/postfix/${_db_type}_relay-domain-maps.cf#" /etc/postfix/main.cf + +## --- + +if [ "$_db_type" = "pgsql" ]; then + + cat < /etc/postfix/${_db_type}_sender_login_maps.cf +hosts = $_db_host +user = $_db_user +password = $_db_pass +dbname = $_db_name +query = SELECT username AS allowedUser FROM mailbox WHERE username='%s' AND active = true UNION SELECT goto FROM alias WHERE address='%s' AND active = true +EOF + +elif [ "$_db_type" = "mysql" ];then + + cat < /etc/postfix/${_db_type}_sender_login_maps.cf +hosts = $_db_host +user = $_db_user +password = $_db_pass +dbname = $_db_name +query = SELECT username AS allowedUser FROM mailbox WHERE username="%s" AND active = 1 UNION SELECT goto FROM alias WHERE address="%s" AND active = 1 +EOF + +else + echo "[ FATAL ]: Unknown database type $_db_type" +fi + +## - /etc/postfix/main.cf +## - +## - add to smtpd_sender_login_maps: +## - proxy:$_db_type:/etc/postfix/${_db_type}_sender_login_maps.cf +## - +perl -i -n -p -e "s#\s*(smtpd_sender_login_maps\s*=.*$)#\1 proxy:${_db_type}:/etc/postfix/${_db_type}_sender_login_maps.cf#" /etc/postfix/main.cf + + +## --- + +if [ "$_db_type" = "pgsql" ]; then + + cat < /etc/postfix/${_db_type}_transport_maps.cf +hosts = $_db_host +user = $_db_user +password = $_db_pass +dbname = $_db_name +## - +#table = domain +#select_field = transport +#where_field = domain +query = SELECT transport FROM domain WHERE domain ='%s'; +EOF + +elif [ "$_db_type" = "mysql" ];then + cat < /etc/postfix/${_db_type}_transport_maps.cf +hosts = $_db_host +user = $_db_user +password = $_db_pass +dbname = $_db_name +## - +#table = domain +#select_field = transport +#where_field = domain +query = SELECT transport FROM domain WHERE domain ='%s'; +EOF + +fi + +## - /etc/postfix/main.cf +## - +## - add to transport_maps: +## - proxy:${_db_type}:/etc/postfix/${_db_type}_transport_maps.cf +## - +perl -i -n -p -e "s#\s*(transport_maps\s*=.*$)#\1\n proxy:${_db_type}:/etc/postfix/${_db_type}_transport_maps.cf#" /etc/postfix/main.cf + + +## --- + +if [ "$_db_type" = "pgsql" ]; then + + cat < /etc/postfix/${_db_type}_virtual_alias_domain_catchall_maps.cf +hosts = $_db_host +user = $_db_user +password = $_db_pass +dbname = $_db_name +query = SELECT goto FROM alias,alias_domain WHERE alias_domain.alias_domain = '%d' and alias.address = '@' || alias_domain.target_domain AND alias.active = true AND alias_domain.active = true +EOF + +elif [ "$_db_type" = "mysql" ];then + + cat < /etc/postfix/${_db_type}_virtual_alias_domain_catchall_maps.cf +hosts = $_db_host +user = $_db_user +password = $_db_pass +dbname = $_db_name +query = SELECT goto FROM alias,alias_domain WHERE alias_domain.alias_domain = '%d' and alias.address = CONCAT('@', alias_domain.target_domain) AND alias.active = 1 AND alias_domain.active='1' +EOF + +fi + + +if [ "$_db_type" = "pgsql" ]; then + + cat < /etc/postfix/${_db_type}_virtual_alias_domain_maps.cf +hosts = $_db_host +user = $_db_user +password = $_db_pass +dbname = $_db_name +query = SELECT goto FROM alias,alias_domain WHERE alias_domain.alias_domain = '%d' and alias.address = '%u' || '@' || alias_domain.target_domain AND alias.active = true AND alias_domain.active = true +EOF + +elif [ "$_db_type" = "mysql" ];then + + cat < /etc/postfix/${_db_type}_virtual_alias_domain_maps.cf +hosts = $_db_host +user = $_db_user +password = $_db_pass +dbname = $_db_name +query = SELECT goto FROM alias,alias_domain WHERE alias_domain.alias_domain = '%d' and alias.address = CONCAT('%u', '@', alias_domain.target_domain) AND alias.active = 1 AND alias_domain.active='1' +EOF + +fi + + +if [ "$_db_type" = "pgsql" ]; then + + cat < /etc/postfix/${_db_type}_virtual_alias_maps.cf +hosts = $_db_host +user = $_db_user +password = $_db_pass +dbname = $_db_name +query = SELECT goto FROM alias WHERE address='%s' AND active = true +EOF + +elif [ "$_db_type" = "mysql" ];then + + cat < /etc/postfix/${_db_type}_virtual_alias_maps.cf +hosts = $_db_host +user = $_db_user +password = $_db_pass +dbname = $_db_name +query = SELECT goto FROM alias WHERE address='%s' AND active = '1' +EOF + +fi + + +## - Edit /etc/postfix/main.cf +## - +## - add to virtual_alias_maps: +## - proxy:${_db_type}:/etc/postfix/${_db_type}_virtual_alias_maps.cf, +## - proxy:${_db_type}:/etc/postfix/${_db_type}_virtual_alias_domain_maps.cf, +## - proxy:${_db_type}:/etc/postfix/${_db_type}_virtual_alias_domain_catchall_maps.cf +## - ## - mailman +## - #hash:/var/lib/mailman/data/virtual-mailman +## - +perl -i -n -p -e "s#\s*(virtual_alias_maps\s*=.*$)#\1\n proxy:${_db_type}:/etc/postfix/${_db_type}_virtual_alias_maps.cf\n proxy:${_db_type}:/etc/postfix/${_db_type}_virtual_alias_domain_maps.cf\n proxy:${_db_type}:/etc/postfix/${_db_type}_virtual_alias_domain_catchall_maps.cf#" /etc/postfix/main.cf + + +## --- + +if [ "$_db_type" = "pgsql" ]; then + + cat < /etc/postfix/${_db_type}_virtual_mailbox_maps.cf +hosts = $_db_host +user = $_db_user +password = $_db_pass +dbname = $_db_name +query = SELECT maildir FROM mailbox WHERE username='%s' AND active = true +EOF + +elif [ "$_db_type" = "mysql" ];then + + cat < /etc/postfix/${_db_type}_virtual_mailbox_maps.cf +hosts = $_db_host +user = $_db_user +password = $_db_pass +dbname = $_db_name +query = SELECT maildir FROM mailbox WHERE username='%s' AND active = '1' +EOF + +fi + +if [ "$_db_type" = "pgsql" ]; then + + cat < /etc/postfix/${_db_type}_virtual_alias_domain_mailbox_maps.cf +hosts = $_db_host +user = $_db_user +password = $_db_pass +dbname = $_db_name +query = SELECT maildir FROM mailbox,alias_domain WHERE alias_domain.alias_domain = '%d' and mailbox.username = '%u' || '@' || alias_domain.target_domain AND mailbox.active = true AND alias_domain.active = true +EOF + +elif [ "$_db_type" = "mysql" ];then + + cat < /etc/postfix/${_db_type}_virtual_alias_domain_mailbox_maps.cf +hosts = $_db_host +user = $_db_user +password = $_db_pass +dbname = $_db_name +query = SELECT maildir FROM mailbox,alias_domain WHERE alias_domain.alias_domain = '%d' and mailbox.username = CONCAT('%u', '@', alias_domain.target_domain) AND mailbox.active = 1 AND alias_domain.active='1' +EOF + +fi + +## - for the last 2 definitions write concerning entries +## - to virtual_mailbox_maps in /etc/postfix/main.cf +## - +## - might look like this: +## - virtual_mailbox_maps = +## - proxy:${_db_type}:/etc/postfix/${_db_type}_virtual_mailbox_maps.cf, +## - proxy:${_db_type}:/etc/postfix/${_db_type}_virtual_alias_domain_mailbox_maps.cf +## - +perl -i -n -p -e "s#\s*(virtual_mailbox_maps\s*=.*$)#\1\n proxy:${_db_type}:/etc/postfix/${_db_type}_virtual_mailbox_maps.cf\n proxy:${_db_type}:/etc/postfix/${_db_type}_virtual_alias_domain_mailbox_maps.cf#" /etc/postfix/main.cf + + +## --- + +if [ "$_db_type" = "pgsql" ]; then + + cat < /etc/postfix/${_db_type}_virtual_domains_maps.cf +hosts = $_db_host +user = $_db_user +password = $_db_pass +dbname = $_db_name +query = SELECT domain FROM domain WHERE domain = '%s' AND active = true +EOF + +elif [ "$_db_type" = "mysql" ];then + + cat < /etc/postfix/${_db_type}_virtual_domains_maps.cf +hosts = $_db_host +user = $_db_user +password = $_db_pass +dbname = $_db_name +query = SELECT domain FROM domain WHERE domain='%s' AND active = '1' +EOF + +fi + +## - Edit /etc/postfix/main.cf +## - +## - Add to virtual_mailbox_domains: +## - proxy:${_db_type}:/etc/postfix/${_db_type}_virtual_domains_maps.cf +## - +perl -i -n -p -e "s#\s*(virtual_mailbox_domains\s*=.*$)#\1\n proxy:${_db_type}:/etc/postfix/${_db_type}_virtual_domains_maps.cf#" /etc/postfix/main.cf + + +## --- + +## - address-extension with delimeter "-" +## - +if [ "$_db_type" = "pgsql" ]; then + + cat < /etc/postfix/${_db_type}_virtual_alias_address_rewriting.cf +## - this address rewriting acts as address extension +## - with delimeter "-" +## - +hosts = $_db_host +user = $_db_user +password = $_db_pass +dbname = $_db_name +query = SELECT username FROM mailbox WHERE domain = '%d' AND '%u' LIKE local_part || '-%%' AND active = true ORDER BY username DESC LIMIT 1; +EOF + +elif [ "$_db_type" = "mysql" ];then + cat < /etc/postfix/${_db_type}_virtual_alias_address_rewriting.cf +hosts = $_db_host +user = $_db_user +password = $_db_pass +dbname = $_db_name +query = SELECT username FROM mailbox WHERE domain = '%d' AND '%u' LIKE CONCAT(local_part, '-%%') AND active = '1' ORDER BY username DESC LIMIT 1; +EOF + +fi + +## - Edit /etc/postfix/main.cf +## - +## - NOTICE!! +## - add this entry to virtual_alias_maps AT THE END, BUT BEFOR CATCH-ALL MAPS +## - if exists +## - +## - might look like this: +## - virtual_alias_maps = +## - proxy:${_db_type}:/etc/postfix/${_db_type}_virtual_alias_maps.cf, +## - proxy:${_db_type}:/etc/postfix/${_db_type}_virtual_alias_domain_maps.cf, +## - proxy:${_db_type}:/etc/postfix/${_db_type}_virtual_alias_address_rewriting.cf, +## - proxy:${_db_type}:/etc/postfix/${_db_type}_virtual_alias_domain_catchall_maps.cf +## - ## - mailman +## - #hash:/var/lib/mailman/data/virtual-mailman +## - +perl -i -n -p -e "s#(\s*proxy:${_db_type}:/etc/postfix/${_db_type}_virtual_alias_domain_catchall_maps.cf.*$)# proxy:${_db_type}:/etc/postfix/${_db_type}_virtual_alias_address_rewriting.cf\n\1#" /etc/postfix/main.cf + + +## --- + +## - add a cronjob for analyzing and reindexing the postfix tables +## - + +## - create a script doing tha staff +## - +mkdir -p /root/bin + +if [ "$_db_type" = "pgsql" ]; then + + cat < /root/bin/analyze_reindex_pg-databases.sh +#!/bin/bash + +curdir=\`pwd\` +cd /tmp + +psql=\`which psql\` +grep=\`which grep\` +awk=\`which awk\` + +DATABASES=\`/bin/su postgres -c "\$psql -lt" | \$grep -v -e"^\$" | \$grep -v -e "^\s*[:|]" | \$awk '{print\$1}'\` + +for db in \$DATABASES ; do + if [ "\$db" == "template0" ]; then + continue + fi + + #echo "Database...: \$db" + + TABLES=\`/bin/su postgres -c "\$psql -t -q -c \"\dt \" \$db" | awk '{print\$3}'\` + + #echo + for tbl in \$TABLES ; do + #echo -e "\tvacuum analyze table $tbl .." + /bin/su postgres -c "\$psql -q -c \"VACUUM ANALYZE \$tbl\" \$db" + [[ \$? -gt 0 ]] && echo "[ERROR]: vacuum/analyzing table \"\${tbl}\" of database \"\$db\" failed !!" + #echo -e "\treindex table \$tbl ..\n" + /bin/su postgres -c "\$psql -q -c \"REINDEX TABLE \$tbl\" \$db" + [[ \$? -gt 0 ]] && echo "[ERROR]: reindexing table \"\${tbl}\" of database \"\$db\" failed !!" + done + #echo +done + +cd \$curdir + +exit +EOF + + chmod 755 /root/bin/analyze_reindex_pg-databases.sh + + ## - add crontab entry + ## - + crontab -l > /tmp/tmp_crontab + + cat <> /tmp/tmp_crontab + +## - analyze/reindex postgres tables and backup +## - +45 02 * * * /root/bin/analyze_reindex_pg-databases.sh +EOF + + crontab /tmp/tmp_crontab + rm /tmp/tmp_crontab + +fi + + +## - !!!!!!!!!! +## - !! Notice: +## - to play with the following quota configuration for virtual mailboxes +## - you need to install the "vda"-patch +## - +cat < /etc/postfix/pgsql_virtual_mailbox_limit_maps.cf +hosts = /var/run/postgresql +user = postfix +password = FKt4z55FxMZp +dbname = postfix +query = SELECT quota FROM mailbox WHERE username='%s' AND active = true +EOF + +## - add configuration parameter virtual_mailbox_limit_maps +## - in Postfix /etc/postfix/main.cf +## - +## - add: +## - virtual_mailbox_limit_maps = proxy:pgsql:/etc/postfix/pgsql_virtual_mailbox_limit_maps.cf +## - +vim /etc/postfix/main.cf +## - !!!!!!!!!!