diff --git a/target/scripts/check-for-changes.sh b/target/scripts/check-for-changes.sh index c526915e..a938ab08 100755 --- a/target/scripts/check-for-changes.sh +++ b/target/scripts/check-for-changes.sh @@ -22,17 +22,6 @@ _log_with_date 'debug' 'Starting changedetector' # to be properly set. _obtain_hostname_and_domainname -if ! cd /tmp/docker-mailserver &>/dev/null -then - _exit_with_error "Could not change into '/tmp/docker-mailserver/' directory" 0 -fi - -# check postfix-accounts.cf exist else break -if [[ ! -f postfix-accounts.cf ]] -then - _exit_with_error "'/tmp/docker-mailserver/postfix-accounts.cf' is missing" 0 -fi - # verify checksum file exists; must be prepared by start-mailserver.sh if [[ ! -f ${CHKSUM_FILE} ]] then diff --git a/target/scripts/helpers/aliases.sh b/target/scripts/helpers/aliases.sh index dc0c2359..330fa45b 100644 --- a/target/scripts/helpers/aliases.sh +++ b/target/scripts/helpers/aliases.sh @@ -61,13 +61,8 @@ function _handle_postfix_aliases_config echo "root: ${POSTMASTER_ADDRESS}" >/etc/aliases - if [[ -f /tmp/docker-mailserver/postfix-aliases.cf ]] - then - cat /tmp/docker-mailserver/postfix-aliases.cf >>/etc/aliases - else - _log 'trace' "'/tmp/docker-mailserver/postfix-aliases.cf' is not provided, it will be auto created." - : >/tmp/docker-mailserver/postfix-aliases.cf - fi + local DATABASE_ALIASES='/tmp/docker-mailserver/postfix-aliases.cf' + [[ -f ${DATABASE_ALIASES} ]] && cat "${DATABASE_ALIASES}" >>/etc/aliases postalias /etc/aliases } diff --git a/target/scripts/helpers/change-detection.sh b/target/scripts/helpers/change-detection.sh index 9c433e4d..9df22364 100644 --- a/target/scripts/helpers/change-detection.sh +++ b/target/scripts/helpers/change-detection.sh @@ -4,7 +4,7 @@ # - check-for-changes.sh # - test/test_helper/common.bash:wait_for_changes_to_be_detected_in_container() # - test/test_helper.bats -# - start-mailserver.sh --> setup-stack.sh (to initialize the CHKSUM_FILE state) +# - start-mailserver.sh --> setup-stack.sh:_setup (to initialize the CHKSUM_FILE state) # Global checksum file used to track when monitored files have changed in content: # shellcheck disable=SC2034 @@ -16,38 +16,36 @@ function _prepare_for_change_detection { _log 'debug' 'Setting up configuration checksum file' - if [[ -d /tmp/docker-mailserver ]] - then - _log 'trace' "Creating '${CHKSUM_FILE}'" - _monitored_files_checksums >"${CHKSUM_FILE}" - else - # We could just skip the file, but perhaps config can be added later? - # If so it must be processed by the check for changes script - _log 'trace' "Creating empty '${CHKSUM_FILE}' (no config)" - touch "${CHKSUM_FILE}" - fi + _log 'trace' "Creating '${CHKSUM_FILE}'" + _monitored_files_checksums >"${CHKSUM_FILE}" } # Returns a list of changed files, each line is a value pair of: # function _monitored_files_checksums { - local DMS_DIR=/tmp/docker-mailserver - [[ -d ${DMS_DIR} ]] || return 1 - # If a wildcard path pattern (or an empty ENV) would yield an invalid path # or no results, `shopt -s nullglob` prevents it from being added. shopt -s nullglob declare -a STAGING_FILES CHANGED_FILES - STAGING_FILES=( - "${DMS_DIR}/postfix-accounts.cf" - "${DMS_DIR}/postfix-virtual.cf" - "${DMS_DIR}/postfix-aliases.cf" - "${DMS_DIR}/dovecot-quotas.cf" - "${DMS_DIR}/dovecot-masters.cf" - ) + # Supported user provided configs: + local DMS_DIR=/tmp/docker-mailserver + if [[ -d ${DMS_DIR} ]] + then + STAGING_FILES+=( + "${DMS_DIR}/postfix-accounts.cf" + "${DMS_DIR}/postfix-virtual.cf" + "${DMS_DIR}/postfix-regexp.cf" + "${DMS_DIR}/postfix-aliases.cf" + "${DMS_DIR}/postfix-relaymap.cf" + "${DMS_DIR}/postfix-sasl-password.cf" + "${DMS_DIR}/dovecot-quotas.cf" + "${DMS_DIR}/dovecot-masters.cf" + ) + fi + # SSL certs: if [[ ${SSL_TYPE:-} == 'manual' ]] then # When using "manual" as the SSL type, @@ -69,10 +67,11 @@ function _monitored_files_checksums ) fi + # If the file actually exists, add to CHANGED_FILES + # and generate a content hash entry: for FILE in "${STAGING_FILES[@]}" do [[ -f "${FILE}" ]] && CHANGED_FILES+=("${FILE}") done - sha512sum -- "${CHANGED_FILES[@]}" }