diff --git a/.editorconfig b/.editorconfig index cb13e936..69b8beab 100644 --- a/.editorconfig +++ b/.editorconfig @@ -1,7 +1,7 @@ -# ––––––––––––––––––––––––––––––––––––––––––––––– -# ––– General ––––––––––––––––––––––––––––––––––– -# ––– https://editorconfig.org –––––––––––––––––– -# ––––––––––––––––––––––––––––––––––––––––––––––– +# ----------------------------------------------- +# --- General ----------------------------------- +# --- https://editorconfig.org ------------------ +# ----------------------------------------------- root = true @@ -12,9 +12,9 @@ indent_style = space insert_final_newline = true trim_trailing_whitespace = true -# ––––––––––––––––––––––––––––––––––––––––––––––– -# ––– Specific –––––––––––––––––––––––––––––––––– -# ––––––––––––––––––––––––––––––––––––––––––––––– +# ----------------------------------------------- +# --- Specific ---------------------------------- +# ----------------------------------------------- [*.{yaml,yml,sh,bats}] indent_size = 2 @@ -26,9 +26,9 @@ indent_size = 4 [*.md] trim_trailing_whitespace = false -# ––––––––––––––––––––––––––––––––––––––––––––––– -# ––– Git Submodules –––––––––––––––––––––––––––– -# ––––––––––––––––––––––––––––––––––––––––––––––– +# ----------------------------------------------- +# --- Git Submodules ---------------------------- +# ----------------------------------------------- [{test/bats/**,test/test_helper/**,target/docker-configomat/**}] indent_style = none diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index d7abdfcc..76839cbc 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -129,11 +129,11 @@ SCRIPT='name_of_this_script.sh' function __log_err { - printf "\n––– \e[1m\e[31mUNCHECKED ERROR\e[0m\n%s\n%s\n%s\n%s\n\n" \ - " – script = ${SCRIPT:-${0}}" \ - " – function = ${1} / ${2}" \ - " – line = ${3}" \ - " – exit code = ${4}" 1>&2 + printf "\n--- \e[1m\e[31mUNCHECKED ERROR\e[0m\n%s\n%s\n%s\n%s\n\n" \ + " - script = ${SCRIPT:-${0}}" \ + " - function = ${1} / ${2}" \ + " - line = ${3}" \ + " - exit code = ${4}" 1>&2 } diff --git a/Dockerfile b/Dockerfile index 15f005a9..5f35c4e7 100644 --- a/Dockerfile +++ b/Dockerfile @@ -34,16 +34,16 @@ ENV VIRUSMAILS_DELETE_DELAY=7 SHELL ["/bin/bash", "-o", "pipefail", "-c"] -# ––––––––––––––––––––––––––––––––––––––––––––––– -# ––– Install Basic Software –––––––––––––––––––– -# ––––––––––––––––––––––––––––––––––––––––––––––– +# ----------------------------------------------- +# --- Install Basic Software -------------------- +# ----------------------------------------------- RUN \ apt-get -qq update && \ - apt-get -y install apt-utils &>/dev/null && \ - apt-get -y dist-upgrade >/dev/null && \ - apt-get -y install postfix >/dev/null && \ - apt-get -y --no-install-recommends install \ + apt-get -y -qq install apt-utils && \ + apt-get -y -qq dist-upgrade && \ + apt-get -y -q install postfix && \ + apt-get -y -q --no-install-recommends install \ # A - D altermime amavisd-new apt-transport-https arj binutils bzip2 bsd-mailx \ ca-certificates cabextract clamav clamav-daemon cpio curl \ @@ -62,28 +62,28 @@ RUN \ unrar-free unzip whois xz-utils && \ # Fail2Ban gpg --keyserver ${FAIL2BAN_GPG_PUBLIC_KEY_SERVER} \ - --recv-keys ${FAIL2BAN_GPG_PUBLIC_KEY_ID} &>/dev/null && \ + --recv-keys ${FAIL2BAN_GPG_PUBLIC_KEY_ID} 2>&1 && \ curl -Lkso fail2ban.deb ${FAIL2BAN_DEB_URL} && \ curl -Lkso fail2ban.deb.asc ${FAIL2BAN_DEB_ASC_URL} && \ FINGERPRINT="$(LANG=C gpg --verify \ fail2ban.deb.asc fail2ban.deb 2>&1 \ | sed -n 's#Primary key fingerprint: \(.*\)#\1#p')" && \ if [[ -z ${FINGERPRINT} ]]; then \ - echo "ERROR: Invalid GPG signature!" 2>&1; exit 1; fi && \ + echo "ERROR: Invalid GPG signature!" >&2; exit 1; fi && \ if [[ ${FINGERPRINT} != "${FAIL2BAN_GPG_FINGERPRINT}" ]]; then \ - echo "ERROR: Wrong GPG fingerprint!" 2>&1; exit 1; fi && \ - dpkg -i fail2ban.deb &>/dev/null && \ + echo "ERROR: Wrong GPG fingerprint!" >&2; exit 1; fi && \ + dpkg -i fail2ban.deb 2>&1 && \ rm fail2ban.deb fail2ban.deb.asc && \ # cleanup - apt-get -qq autoremove &>/dev/null && \ + apt-get -qq autoremove && \ apt-get -qq autoclean && \ apt-get -qq clean && \ rm -rf /var/lib/apt/lists/* && \ - c_rehash &>/dev/null + c_rehash 2>&1 -# ––––––––––––––––––––––––––––––––––––––––––––––– -# ––– ClamAV & FeshClam ––––––––––––––––––––––––– -# ––––––––––––––––––––––––––––––––––––––––––––––– +# ----------------------------------------------- +# --- ClamAV & FeshClam ------------------------- +# ----------------------------------------------- RUN \ echo '0 */6 * * * clamav /usr/bin/freshclam --quiet' >/etc/cron.d/clamav-freshclam && \ @@ -94,9 +94,9 @@ RUN \ chown -R clamav:root /var/run/clamav && \ rm -rf /var/log/clamav/ -# ––––––––––––––––––––––––––––––––––––––––––––––– -# ––– Dovecot & MkCert –––––––––––––––––––––––––– -# ––––––––––––––––––––––––––––––––––––––––––––––– +# ----------------------------------------------- +# --- Dovecot & MkCert -------------------------- +# ----------------------------------------------- COPY target/dovecot/auth-passwdfile.inc target/dovecot/??-*.conf /etc/dovecot/conf.d/ COPY target/dovecot/sieve/ /etc/dovecot/sieve/ @@ -119,13 +119,13 @@ RUN \ sed -i 's/RANDFILE.*//g' /usr/share/dovecot/dovecot-openssl.cnf && \ mkdir /etc/dovecot/ssl && \ chmod 755 /etc/dovecot/ssl && \ - ./mkcert.sh 2>&1 >/dev/null && \ + ./mkcert.sh 2>&1 && \ mkdir -p /usr/lib/dovecot/sieve-pipe /usr/lib/dovecot/sieve-filter /usr/lib/dovecot/sieve-global && \ chmod 755 -R /usr/lib/dovecot/sieve-pipe /usr/lib/dovecot/sieve-filter /usr/lib/dovecot/sieve-global -# ––––––––––––––––––––––––––––––––––––––––––––––– -# ––– LDAP & SpamAssassin's Cron –––––––––––––––– -# ––––––––––––––––––––––––––––––––––––––––––––––– +# ----------------------------------------------- +# --- LDAP & SpamAssassin's Cron ---------------- +# ----------------------------------------------- COPY target/dovecot/dovecot-ldap.conf.ext /etc/dovecot COPY \ @@ -141,9 +141,9 @@ RUN \ sed -i -r 's/^(CRON)=0/\1=1/g' /etc/default/spamassassin && \ sed -i -r 's/^\$INIT restart/supervisorctl restart amavis/g' /etc/spamassassin/sa-update-hooks.d/amavisd-new -# ––––––––––––––––––––––––––––––––––––––––––––––– -# ––– Scripts & Miscellaneous ––––––––––––––––––– -# ––––––––––––––––––––––––––––––––––––––––––––––– +# ----------------------------------------------- +# --- Scripts & Miscellaneous ------------------- +# ----------------------------------------------- COPY \ ./target/bin/* \ @@ -165,9 +165,9 @@ RUN \ rm /etc/postsrsd.secret && \ rm /etc/cron.daily/00logwatch -# ––––––––––––––––––––––––––––––––––––––––––––––– -# ––– PostSRSD, Postgrey & Amavis ––––––––––––––– -# ––––––––––––––––––––––––––––––––––––––––––––––– +# ----------------------------------------------- +# --- PostSRSD, Postgrey & Amavis --------------- +# ----------------------------------------------- COPY target/postsrsd/postsrsd /etc/default/postsrsd COPY target/postgrey/postgrey /etc/default/postgrey @@ -180,23 +180,23 @@ RUN \ COPY target/amavis/conf.d/* /etc/amavis/conf.d/ RUN \ sed -i -r 's/#(@| \\%)bypass/\1bypass/g' /etc/amavis/conf.d/15-content_filter_mode && \ - adduser clamav amavis >/dev/null && \ - adduser amavis clamav >/dev/null && \ + adduser clamav amavis && \ + adduser amavis clamav && \ # no syslog user in Debian compared to Ubuntu - adduser --system syslog >/dev/null && \ - useradd -u 5000 -d /home/docker -s /bin/bash -p "$(echo docker | openssl passwd -1 -stdin)" docker >/dev/null && \ + adduser --system syslog && \ + useradd -u 5000 -d /home/docker -s /bin/bash -p "$(echo docker | openssl passwd -1 -stdin)" docker && \ echo "0 4 * * * /usr/local/bin/virus-wiper" | crontab - && \ chmod 644 /etc/amavis/conf.d/* # overcomplication necessary for CI RUN \ for _ in {1..10}; do su - amavis -c "razor-admin -create" ; sleep 3 ; \ - if su - amavis -c "razor-admin -register" &>/dev/null; then { EC=0 ; break ; } ; \ + if su - amavis -c "razor-admin -register" ; then { EC=0 ; break ; } ; \ else EC=${?} ; fi ; done ; (exit ${EC}) -# ––––––––––––––––––––––––––––––––––––––––––––––– -# ––– Fail2Ban, DKIM & DMARC –––––––––––––––––––– -# ––––––––––––––––––––––––––––––––––––––––––––––– +# ----------------------------------------------- +# --- Fail2Ban, DKIM & DMARC -------------------- +# ----------------------------------------------- COPY target/fail2ban/jail.local /etc/fail2ban/jail.local RUN \ @@ -217,9 +217,9 @@ RUN \ update-alternatives --set iptables /usr/sbin/iptables-legacy && \ update-alternatives --set ip6tables /usr/sbin/ip6tables-legacy -# ––––––––––––––––––––––––––––––––––––––––––––––– -# ––– Fetchmail, Postfix & Let'sEncrypt ––––––––– -# ––––––––––––––––––––––––––––––––––––––––––––––– +# ----------------------------------------------- +# --- Fetchmail, Postfix & Let'sEncrypt --------- +# ----------------------------------------------- COPY target/fetchmail/fetchmailrc /etc/fetchmailrc_general COPY target/postfix/main.cf target/postfix/master.cf /etc/postfix/ @@ -236,9 +236,9 @@ RUN \ mkdir /var/run/fetchmail && chown fetchmail /var/run/fetchmail && \ curl -s https://letsencrypt.org/certs/lets-encrypt-x3-cross-signed.pem >/etc/ssl/certs/lets-encrypt-x3-cross-signed.pem -# ––––––––––––––––––––––––––––––––––––––––––––––– -# ––– Logs –––––––––––––––––––––––––––––––––––––– -# ––––––––––––––––––––––––––––––––––––––––––––––– +# ----------------------------------------------- +# --- Logs -------------------------------------- +# ----------------------------------------------- RUN \ sed -i -r "/^#?compress/c\compress\ncopytruncate" /etc/logrotate.conf && \ @@ -266,9 +266,9 @@ RUN \ # prevent email when /sbin/init or init system is not existing sed -i -e 's|invoke-rc.d rsyslog rotate > /dev/null|/usr/bin/supervisorctl signal hup rsyslog >/dev/null|g' /usr/lib/rsyslog/rsyslog-rotate -# ––––––––––––––––––––––––––––––––––––––––––––––– -# ––– Supervisord & Start ––––––––––––––––––––––– -# ––––––––––––––––––––––––––––––––––––––––––––––– +# ----------------------------------------------- +# --- Supervisord & Start ----------------------- +# ----------------------------------------------- COPY target/supervisor/supervisord.conf /etc/supervisor/supervisord.conf COPY target/supervisor/conf.d/* /etc/supervisor/conf.d/ diff --git a/Makefile b/Makefile index fce1d93a..1570855c 100644 --- a/Makefile +++ b/Makefile @@ -6,9 +6,9 @@ VCS_VER = $(shell git describe --tags --contains --always) export CDIR = $(shell pwd) -# ––––––––––––––––––––––––––––––––––––––––––––––– -# ––– Generic Build Targets ––––––––––––––––––––– -# ––––––––––––––––––––––––––––––––––––––––––––––– +# ----------------------------------------------- +# --- Generic Build Targets --------------------- +# ----------------------------------------------- all: lint build backup generate-accounts tests clean @@ -28,9 +28,9 @@ clean: -@ for container in $$(docker ps -a | grep -E "mail|ldap_for_mail|mail_overri.*|hadolint|eclint|shellcheck" | cut -f 1-1 -d ' '); do docker rm -f $$container; done -@ sudo rm -rf test/onedir test/alias test/quota test/relay test/config/dovecot-lmtp/userdb test/config/key* test/config/opendkim/keys/domain.tld/ test/config/opendkim/keys/example.com/ test/config/opendkim/keys/localdomain2.com/ test/config/postfix-aliases.cf test/config/postfix-receive-access.cf test/config/postfix-receive-access.cfe test/config/dovecot-quotas.cf test/config/postfix-send-access.cf test/config/postfix-send-access.cfe test/config/relay-hosts/chksum test/config/relay-hosts/postfix-aliases.cf test/config/dhparams.pem test/config/dovecot-lmtp/dh.pem test/config/relay-hosts/dovecot-quotas.cf test/config/user-patches.sh test/alias/config/postfix-virtual.cf test/quota/config/dovecot-quotas.cf test/quota/config/postfix-accounts.cf test/relay/config/postfix-relaymap.cf test/relay/config/postfix-sasl-password.cf test/duplicate_configs/ -# ––––––––––––––––––––––––––––––––––––––––––––––– -# ––– Tests ––––––––––––––––––––––––––––––––––––– -# ––––––––––––––––––––––––––––––––––––––––––––––– +# ----------------------------------------------- +# --- Tests ------------------------------------- +# ----------------------------------------------- generate-accounts: @ docker run --rm -e MAIL_USER=user1@localhost.localdomain -e MAIL_PASS=mypassword -t $(NAME) /bin/sh -c 'echo "$$MAIL_USER|$$(doveadm pw -s SHA512-CRYPT -u $$MAIL_USER -p $$MAIL_PASS)"' > test/config/postfix-accounts.cf diff --git a/docs/content/contributing/coding-style.md b/docs/content/contributing/coding-style.md index 762c5daa..ee9234f8 100644 --- a/docs/content/contributing/coding-style.md +++ b/docs/content/contributing/coding-style.md @@ -93,11 +93,11 @@ SCRIPT='name_of_this_script.sh' function __log_err { - printf "\n––– \e[1m\e[31mUNCHECKED ERROR\e[0m\n%s\n%s\n%s\n%s\n\n" \ - " – script = ${SCRIPT:-${0}}" \ - " – function = ${1} / ${2}" \ - " – line = ${3}" \ - " – exit code = ${4}" 1>&2 + printf "\n--- \e[1m\e[31mUNCHECKED ERROR\e[0m\n%s\n%s\n%s\n%s\n\n" \ + " - script = ${SCRIPT:-${0}}" \ + " - function = ${1} / ${2}" \ + " - line = ${3}" \ + " - exit code = ${4}" 1>&2 } diff --git a/mailserver.env b/mailserver.env index ac9fc7ed..2e9fd635 100644 --- a/mailserver.env +++ b/mailserver.env @@ -1,13 +1,13 @@ -# ––––––––––––––––––––––––––––––––––––––––––––––– -# ––– Mailserver Environment Variables –––––––––– -# ––––––––––––––––––––––––––––––––––––––––––––––– +# ----------------------------------------------- +# --- Mailserver Environment Variables ---------- +# ----------------------------------------------- # DOCUMENTATION FOR THESE VARIABLES IS FOUND UNDER # https://docker-mailserver.github.io/docker-mailserver/edge/config/environment/ -# ––––––––––––––––––––––––––––––––––––––––––––––– -# ––– General Section ––––––––––––––––––––––––––– -# ––––––––––––––––––––––––––––––––––––––––––––––– +# ----------------------------------------------- +# --- General Section --------------------------- +# ----------------------------------------------- # empty => uses the `hostname` command to get the mail server's canonical hostname # => Specify a fully-qualified domainname to serve mail for. This is used for many of the config features so if you can't set your hostname (e.g. you're in a container platform that doesn't let you) specify it in this environment variable. @@ -227,9 +227,9 @@ REPORT_INTERVAL=daily # Note: More details in http://www.postfix.org/postconf.5.html#inet_protocols POSTFIX_INET_PROTOCOLS=all -# ––––––––––––––––––––––––––––––––––––––––––––––– -# ––– SpamAssassin Section –––––––––––––––––––––– -# ––––––––––––––––––––––––––––––––––––––––––––––– +# ----------------------------------------------- +# --- SpamAssassin Section ---------------------- +# ----------------------------------------------- ENABLE_SPAMASSASSIN=0 @@ -251,18 +251,18 @@ SA_KILL=6.31 # add tag to subject if spam detected SA_SPAM_SUBJECT=***SPAM***** -# ––––––––––––––––––––––––––––––––––––––––––––––– -# ––– Fetchmail Section ––––––––––––––––––––––––– -# ––––––––––––––––––––––––––––––––––––––––––––––– +# ----------------------------------------------- +# --- Fetchmail Section ------------------------- +# ----------------------------------------------- ENABLE_FETCHMAIL=0 # The interval to fetch mail in seconds FETCHMAIL_POLL=300 -# ––––––––––––––––––––––––––––––––––––––––––––––– -# ––– LDAP Section –––––––––––––––––––––––––––––– -# ––––––––––––––––––––––––––––––––––––––––––––––– +# ----------------------------------------------- +# --- LDAP Section ------------------------------ +# ----------------------------------------------- # A second container for the ldap service is necessary (i.e. https://github.com/osixia/docker-openldap) # For preparing the ldap server to use in combination with this container this article may be helpful: http://acidx.net/wordpress/2014/06/installing-a-mailserver-with-postfix-dovecot-sasl-ldap-roundcube/ @@ -308,9 +308,9 @@ LDAP_QUERY_FILTER_ALIAS= # => Specify how ldap should be asked for domains LDAP_QUERY_FILTER_DOMAIN= -# ––––––––––––––––––––––––––––––––––––––––––––––– -# ––– Dovecot Section ––––––––––––––––––––––––––– -# ––––––––––––––––––––––––––––––––––––––––––––––– +# ----------------------------------------------- +# --- Dovecot Section --------------------------- +# ----------------------------------------------- # empty => no # yes => LDAP over TLS enabled for Dovecot @@ -331,9 +331,9 @@ DOVECOT_MAILBOX_FORMAT=maildir # https://wiki.dovecot.org/AuthDatabase/LDAP/AuthBinds DOVECOT_AUTH_BIND= -# ––––––––––––––––––––––––––––––––––––––––––––––– -# ––– Postgrey Section –––––––––––––––––––––––––– -# ––––––––––––––––––––––––––––––––––––––––––––––– +# ----------------------------------------------- +# --- Postgrey Section -------------------------- +# ----------------------------------------------- ENABLE_POSTGREY=0 # greylist for N seconds @@ -345,9 +345,9 @@ POSTGREY_TEXT=Delayed by Postgrey # whitelist host after N successful deliveries (N=0 to disable whitelisting) POSTGREY_AUTO_WHITELIST_CLIENTS=5 -# ––––––––––––––––––––––––––––––––––––––––––––––– -# ––– SASL Section –––––––––––––––––––––––––––––– -# ––––––––––––––––––––––––––––––––––––––––––––––– +# ----------------------------------------------- +# --- SASL Section ------------------------------ +# ----------------------------------------------- ENABLE_SASLAUTHD=0 @@ -424,9 +424,9 @@ SASLAUTHD_LDAP_AUTH_METHOD= # Any value => Fills the `ldap_mech` option SASLAUTHD_LDAP_MECH= -# ––––––––––––––––––––––––––––––––––––––––––––––– -# ––– SRS Section ––––––––––––––––––––––––––––––– -# ––––––––––––––––––––––––––––––––––––––––––––––– +# ----------------------------------------------- +# --- SRS Section ------------------------------- +# ----------------------------------------------- # envelope_sender => Rewrite only envelope sender address (default) # header_sender => Rewrite only header sender (not recommended) @@ -447,9 +447,9 @@ SRS_EXCLUDE_DOMAINS= # rotate and expire keys SRS_SECRET= -# ––––––––––––––––––––––––––––––––––––––––––––––– -# ––– Default Relay Host Section –––––––––––––––– -# ––––––––––––––––––––––––––––––––––––––––––––––– +# ----------------------------------------------- +# --- Default Relay Host Section ---------------- +# ----------------------------------------------- # Setup relaying all mail through a default relay host # @@ -457,9 +457,9 @@ SRS_SECRET= # default host and optional port to relay all mail through DEFAULT_RELAY_HOST= -# ––––––––––––––––––––––––––––––––––––––––––––––– -# ––– Multi-Domain Relay Section –––––––––––––––– -# ––––––––––––––––––––––––––––––––––––––––––––––– +# ----------------------------------------------- +# --- Multi-Domain Relay Section ---------------- +# ----------------------------------------------- # Setup relaying for multiple domains based on the domain name of the sender # optionally uses usernames and passwords in postfix-sasl-password.cf and relay host mappings in postfix-relaymap.cf diff --git a/setup.sh b/setup.sh index 3b8752d9..0cffd32c 100755 --- a/setup.sh +++ b/setup.sh @@ -22,11 +22,11 @@ trap '__log_err "${FUNCNAME[0]:-?}" "${BASH_COMMAND:-?}" "${LINENO:-?}" "${?:-?} function __log_err { - printf "\n––– ${BOLD}${RED}UNCHECKED ERROR${RESET}\n%s\n%s\n%s\n%s\n\n" \ - " – script = ${SCRIPT:-${0}}" \ - " – function = ${1} / ${2}" \ - " – line = ${3}" \ - " – exit code = ${4}" >&2 + printf "\n--- ${BOLD}${RED}UNCHECKED ERROR${RESET}\n%s\n%s\n%s\n%s\n\n" \ + " - script = ${SCRIPT:-${0}}" \ + " - function = ${1} / ${2}" \ + " - line = ${3}" \ + " - exit code = ${4}" >&2 printf "Make sure you use a version of this script that matches the version / tag of docker-mailserver. Please read the diff --git a/target/scripts/check-for-changes.sh b/target/scripts/check-for-changes.sh index ef49fbbc..f36137e1 100755 --- a/target/scripts/check-for-changes.sh +++ b/target/scripts/check-for-changes.sh @@ -6,7 +6,7 @@ LOG_DATE=$(date +"%Y-%m-%d %H:%M:%S ") _notify 'task' "${LOG_DATE} Start check-for-changes script." -# ? ––––––––––––––––––––––––––––––––––––––––––––– Checks +# ? --------------------------------------------- Checks cd /tmp/docker-mailserver || exit 1 @@ -24,7 +24,7 @@ then exit 0 fi -# ? ––––––––––––––––––––––––––––––––––––––––––––– Actual script begins +# ? --------------------------------------------- Actual script begins # determine postmaster address, duplicated from start-mailserver.sh # this script previously didn't work when POSTMASTER_ADDRESS was empty diff --git a/target/scripts/helper-functions.sh b/target/scripts/helper-functions.sh index 7b05870f..6a8cbf9f 100755 --- a/target/scripts/helper-functions.sh +++ b/target/scripts/helper-functions.sh @@ -2,7 +2,7 @@ DMS_DEBUG="${DMS_DEBUG:=0}" -# ? ––––––––––––––––––––––––––––––––––––––––––––– BIN HELPER +# ? --------------------------------------------- BIN HELPER function errex { @@ -15,7 +15,7 @@ function escape echo "${1//./\\.}" } -# ? ––––––––––––––––––––––––––––––––––––––––––––– IP & CIDR +# ? --------------------------------------------- IP & CIDR function _mask_ip_digit { @@ -57,7 +57,7 @@ function _sanitize_ipv4_to_subnet_cidr } export -f _sanitize_ipv4_to_subnet_cidr -# ? ––––––––––––––––––––––––––––––––––––––––––––– ACME +# ? --------------------------------------------- ACME function _extract_certs_from_acme { @@ -106,7 +106,7 @@ for key, value in acme.items(): } export -f _extract_certs_from_acme -# ? ––––––––––––––––––––––––––––––––––––––––––––– Notifications +# ? --------------------------------------------- Notifications function _notify { @@ -132,7 +132,7 @@ function _notify } export -f _notify -# ? ––––––––––––––––––––––––––––––––––––––––––––– Relay Host Map +# ? --------------------------------------------- Relay Host Map # setup /etc/postfix/relayhost_map # -- @@ -170,7 +170,7 @@ function _populate_relayhost_map } export -f _populate_relayhost_map -# ? ––––––––––––––––––––––––––––––––––––––––––––– File Checksums +# ? --------------------------------------------- File Checksums # file storing the checksums of the monitored files. # shellcheck disable=SC2034 diff --git a/target/scripts/start-mailserver.sh b/target/scripts/start-mailserver.sh index 5cc028cb..0a4c3903 100755 --- a/target/scripts/start-mailserver.sh +++ b/target/scripts/start-mailserver.sh @@ -10,11 +10,11 @@ unset DAEMONS_START HOSTNAME DOMAINNAME CHKSUM_FILE declare -A VARS declare -a FUNCS_SETUP FUNCS_FIX FUNCS_CHECK FUNCS_MISC DAEMONS_START -# –––––––––––––––––––––––––––––––––––––––––––––––––––––––––––– +# ------------------------------------------------------------ # ? << -# –– +# -- # ? >> Setup of default and global values / variables -# –––––––––––––––––––––––––––––––––––––––––––––––––––––––––––– +# ------------------------------------------------------------ VARS[AMAVIS_LOGLEVEL]="${AMAVIS_LOGLEVEL:=0}" VARS[DEFAULT_RELAY_HOST]="${DEFAULT_RELAY_HOST:=}" @@ -71,11 +71,11 @@ HOSTNAME="$(hostname -f)" DOMAINNAME="$(hostname -d)" CHKSUM_FILE=/tmp/docker-mailserver-config-chksum -# –––––––––––––––––––––––––––––––––––––––––––––––––––––––––––– +# ------------------------------------------------------------ # ? << Setup of default and global values / variables -# –– +# -- # ? >> Registering functions -# –––––––––––––––––––––––––––––––––––––––––––––––––––––––––––– +# ------------------------------------------------------------ function register_functions { @@ -223,16 +223,16 @@ function _defunc exit 1 } -# –––––––––––––––––––––––––––––––––––––––––––––––––––––––––––– +# ------------------------------------------------------------ # ? << Registering functions -# –– +# -- # ? >> Sourcing all stacks # 1. Checks # 2. Setup # 3. Fixes # 4. Miscellaneous # 5. Daemons -# –––––––––––––––––––––––––––––––––––––––––––––––––––––––––––– +# ------------------------------------------------------------ # shellcheck source=./startup/check-stack.sh . /usr/local/bin/check-stack.sh @@ -249,11 +249,11 @@ function _defunc # shellcheck source=./startup/daemons-stack.sh . /usr/local/bin/daemons-stack.sh -# –––––––––––––––––––––––––––––––––––––––––––––––––––––––––––– +# ------------------------------------------------------------ # ? << Sourcing all stacks -# –– +# -- # ? >> Executing all stacks -# –––––––––––––––––––––––––––––––––––––––––––––––––––––––––––– +# ------------------------------------------------------------ _notify 'tasklog' "Welcome to docker-mailserver $(