mirror of
https://github.com/devilbox/docker-php-fpm.git
synced 2025-12-18 23:11:14 +00:00
122 lines
3.4 KiB
Bash
Executable File
122 lines
3.4 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
set -e
|
|
set -u
|
|
set -o pipefail
|
|
|
|
|
|
############################################################
|
|
# Functions
|
|
############################################################
|
|
|
|
###
|
|
### Setup Postfix for catch-all
|
|
###
|
|
set_postfix() {
|
|
local env_varname="${1}"
|
|
local username="${2}"
|
|
local groupname="${3}"
|
|
local php_ini_dir="${4}"
|
|
local php_mail_log="${5}"
|
|
local docker_logs="${6}"
|
|
local debug="${7}"
|
|
|
|
local php_ini_file="${php_ini_dir}/devilbox-runtime-sendmail.ini"
|
|
local enable_mail=
|
|
|
|
# Verify env value
|
|
if ! env_set "${env_varname}"; then
|
|
log "info" "\$${env_varname} not set." "${debug}"
|
|
log "info" "Postfix will not be started." "${debug}"
|
|
echo "" > "${php_ini_file}"
|
|
return
|
|
fi
|
|
|
|
# Retrieve env value
|
|
enable_mail="$( env_get "${env_varname}" )"
|
|
|
|
# Enable postfix
|
|
if [ "${enable_mail}" = "1" ] || [ "${enable_mail}" = "2" ]; then
|
|
|
|
if [ "${enable_mail}" = "1" ]; then
|
|
log "info" "\$${env_varname} set to 1. Enabling postfix" "${debug}"
|
|
else
|
|
log "info" "\$${env_varname} set to 2. Enabling postfix catch-all" "${debug}"
|
|
fi
|
|
|
|
# Configure PHP
|
|
{
|
|
echo "[mail function]";
|
|
echo "sendmail_path = $( command -v sendmail ) -t -i";
|
|
echo ";mail.force_extra_parameters =";
|
|
echo "mail.add_x_header = On";
|
|
echo "mail.log = ${php_mail_log}";
|
|
} > "${php_ini_file}"
|
|
|
|
# PHP mail function logs to file
|
|
if [ "${docker_logs}" != "1" ]; then
|
|
# Fix PHP mail log file dir/file and permissions
|
|
if [ ! -d "$( dirname "${php_mail_log}" )" ]; then
|
|
run "mkdir -p $( dirname "${php_mail_log}" )" "${debug}"
|
|
fi
|
|
if [ ! -f "${php_mail_log}" ]; then
|
|
run "touch ${php_mail_log}" "${debug}"
|
|
fi
|
|
run "chown ${username}:${groupname} $( dirname "${php_mail_log}" )" "${debug}"
|
|
run "chown ${username}:${groupname} ${php_mail_log}" "${debug}"
|
|
run "chmod 0644 ${php_mail_log}" "${debug}"
|
|
fi
|
|
|
|
# Add Mail dir/file if it does not exist
|
|
if [ ! -d "/var/mail" ]; then
|
|
run "mkdir /var/mail" "${debug}"
|
|
fi
|
|
if [ ! -f "/var/mail/${username}" ]; then
|
|
run "touch /var/mail/${username}" "${debug}"
|
|
fi
|
|
|
|
# Fix mail dir/file permissions after mount
|
|
run "chmod 0644 /var/mail/${username}" "${debug}"
|
|
run "chown ${username}:${groupname} /var/mail" "${debug}"
|
|
run "chown ${username}:${groupname} /var/mail/${username}" "${debug}"
|
|
|
|
# warning: specify "strict_mailbox_ownership = no" to ignore mailbox ownership mismatch
|
|
run "postconf -e 'strict_mailbox_ownership=no'" "${debug}"
|
|
|
|
# Postfix configuration
|
|
run "postconf -e 'inet_protocols=ipv4'" "${debug}"
|
|
|
|
# Postfix catch-all
|
|
if [ "${enable_mail}" = "2" ]; then
|
|
run "postconf -e 'virtual_alias_maps=pcre:/etc/postfix/virtual'" "${debug}"
|
|
run "echo '/.*@.*/ ${username}' >> /etc/postfix/virtual" "${debug}"
|
|
run "newaliases" "${debug}"
|
|
fi
|
|
|
|
elif [ "${enable_mail}" = "0" ]; then
|
|
log "info" "\$${env_varname} set to 0. Disabling postfix" "${debug}"
|
|
|
|
else
|
|
log "err" "Invalid value for \$${env_varname}. Can only be 0, 1 or 2. Prodived: ${enable_mail}" "${debug}"
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
|
|
############################################################
|
|
# Sanity Checks
|
|
############################################################
|
|
|
|
if ! command -v sendmail >/dev/null 2>&1; then
|
|
log "err" "sendmail not found, but required." "1"
|
|
exit 1
|
|
fi
|
|
if ! command -v postconf >/dev/null 2>&1; then
|
|
log "err" "postconf not found, but required." "1"
|
|
exit 1
|
|
fi
|
|
if ! command -v newaliases >/dev/null 2>&1; then
|
|
log "err" "newaliases not found, but required." "1"
|
|
exit 1
|
|
fi
|