| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156 |
- #!/bin/bash
- export FQDN
- export DOMAIN
- export VMAILUID
- export VMAILGID
- export VMAIL_SUBDIR
- export DBDRIVER
- export DBHOST
- export DBPORT
- export DBNAME
- export DBUSER
- export REDIS_HOST
- export REDIS_PORT
- export REDIS_PASS
- export REDIS_NUMB
- export DISABLE_CLAMAV
- export DISABLE_DNS_RESOLVER
- FQDN=${FQDN:-$(hostname --fqdn)}
- DOMAIN=${DOMAIN:-$(hostname --domain)}
- VMAILUID=${VMAILUID:-1024}
- VMAILGID=${VMAILGID:-1024}
- VMAIL_SUBDIR=${VMAIL_SUBDIR:-"mail"}
- DBDRIVER=${DBDRIVER:-mysql}
- DBHOST=${DBHOST:-mariadb}
- DBNAME=${DBNAME:-postfix}
- DBUSER=${DBUSER:-postfix}
- if [ "$DBDRIVER" = "ldap" ]; then
- DBPORT=${DBPORT:-389}
- else
- DBPORT=${DBPORT:-3306}
- fi
- REDIS_HOST=${REDIS_HOST:-redis}
- REDIS_PORT=${REDIS_PORT:-6379}
- REDIS_PASS=$([ -f "$REDIS_PASS" ] && cat "$REDIS_PASS" || echo "${REDIS_PASS:-}")
- REDIS_NUMB=${REDIS_NUMB:-0}
- DISABLE_CLAMAV=${DISABLE_CLAMAV:-false} # --
- DISABLE_DNS_RESOLVER=${DISABLE_DNS_RESOLVER:-false} # --
- if [ "$DBDRIVER" = "ldap" ]; then
- export LDAP_BIND
- export LDAP_BIND_DN
- export LDAP_BIND_PW
- LDAP_BIND=${LDAP_BIND:-true}
- LDAP_BIND_DN=${LDAP_BIND_DN:-}
- LDAP_BIND_PW=$([ -f "$LDAP_BIND_PW" ] && cat "$LDAP_BIND_PW" || echo "${LDAP_BIND_PW:-}")
- if [ "$LDAP_BIND" = true ]; then
- if [ -z "$LDAP_BIND_DN" ]; then
- echo "[ERROR] LDAP_BIND_ED must be set !"
- exit 1
- fi
- if [ -z "$LDAP_BIND_PW" ]; then
- echo "[ERROR] LDAP_BIND_PW must be set !"
- exit 1
- fi
- fi
- else
- if [ -z "$DBPASS" ]; then
- echo "[ERROR] MariaDB/PostgreSQL database password must be set !"
- exit 1
- fi
- fi
- if [ -z "$RSPAMD_PASSWORD" ]; then
- echo "[ERROR] Rspamd password must be set !"
- exit 1
- fi
- if [ -z "$FQDN" ]; then
- echo "[ERROR] The fully qualified domain name must be set !"
- exit 1
- fi
- if [ -z "$DOMAIN" ]; then
- echo "[ERROR] The domain name must be set !"
- exit 1
- fi
- # https://github.com/docker-library/redis/issues/53
- if [[ "$REDIS_PORT" =~ [^[:digit:]] ]]; then
- REDIS_PORT=6379
- fi
- # DATABASES HOSTNAME CHECKING
- # We need to set these in the hosts file before Unbound takes over for DNS
- # ---------------------------------------------------------------------------------------------
- # Check mariadb/postgres hostname
- grep -q "${DBHOST}" /etc/hosts
- if [ $? -ne 0 ]; then
- echo "[INFO] MariaDB/PostgreSQL hostname not found in /etc/hosts"
- IP=$(dig A ${DBHOST} +short +search)
- if [ -n "$IP" ]; then
- echo "[INFO] Container IP found, adding a new record in /etc/hosts"
- echo "${IP} ${DBHOST}" >> /etc/hosts
- else
- echo "[ERROR] Container IP not found with embedded DNS server... Abort !"
- echo "[ERROR] Check your DBHOST environment variable"
- exit 1
- fi
- else
- echo "[INFO] MariaDB/PostgreSQL hostname found in /etc/hosts"
- fi
- # Check redis hostname
- grep -q "${REDIS_HOST}" /etc/hosts
- if [ $? -ne 0 ]; then
- echo "[INFO] Redis hostname not found in /etc/hosts"
- IP=$(dig A ${REDIS_HOST} +short +search)
- if [ -n "$IP" ]; then
- echo "[INFO] Container IP found, adding a new record in /etc/hosts"
- echo "${IP} ${REDIS_HOST}" >> /etc/hosts
- else
- echo "[ERROR] Container IP not found with embedded DNS server... Abort !"
- echo "[ERROR] Check your REDIS_HOST environment variable"
- exit 1
- fi
- else
- echo "[INFO] Redis hostname found in /etc/hosts"
- fi
- # SETUP CONFIG FILES
- # ---------------------------------------------------------------------------------------------
- certs_helper.sh update_certs
- # Make sure that configuration is only run once
- if [ ! -f "/etc/configuration_built" ]; then
- touch "/etc/configuration_built"
- setup.sh
- fi
- # Unrecoverable errors detection
- if [ -f "/etc/setup-error" ]; then
- echo "[ERROR] One or more unrecoverable errors have occurred during initial setup. See above to find the cause."
- exit 1
- fi
- # LAUNCH ALL SERVICES
- # ---------------------------------------------------------------------------------------------
- echo "[INFO] Starting services"
- exec s6-svscan /services
|