diff --git a/.env.example b/.env.example index afdcf0b..0548626 100644 --- a/.env.example +++ b/.env.example @@ -27,4 +27,4 @@ #ALWAYS_ADD_MISSING_HEADERS=yes # Optional: This will rewrite the from address overwriting it with the specified address for all email being relayed. -#OVERWRITE_FROM="Your Name" \ No newline at end of file +#OVERWRITE_FROM="Your Name" diff --git a/Dockerfile b/Dockerfile index db5c34f..cc9e1d4 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,14 +1,13 @@ #Dockerfile for a Postfix email relay service -FROM centos:7 +FROM alpine:3.13 MAINTAINER Juan Luis Baptiste juan.baptiste@gmail.com -RUN yum install -y epel-release && yum update -y && \ - yum install -y cyrus-sasl cyrus-sasl-plain cyrus-sasl-md5 mailx \ - perl supervisor postfix rsyslog \ - && rm -rf /var/cache/yum/* \ - && yum clean all -RUN sed -i -e "s/^nodaemon=false/nodaemon=true/" /etc/supervisord.conf -RUN sed -i -e 's/inet_interfaces = localhost/inet_interfaces = all/g' /etc/postfix/main.cf +RUN apk update && \ + apk add bash gawk cyrus-sasl cyrus-sasl-login cyrus-sasl-crammd5 mailx \ + perl supervisor postfix rsyslog && \ + rm -rf /var/cache/apk/* && \ + mkdir -p /var/log/supervisor/ /var/run/supervisor/ && \ + sed -i -e 's/inet_interfaces = localhost/inet_interfaces = all/g' /etc/postfix/main.cf COPY etc/ /etc/ COPY run.sh / diff --git a/docker-compose.override.yml b/docker-compose.override.yml index 0d35098..ea1e56f 100644 --- a/docker-compose.override.yml +++ b/docker-compose.override.yml @@ -1,6 +1,7 @@ version: '2' services: postfix: + image: juanluisbaptiste/postfix:dev build: context: . dockerfile: Dockerfile diff --git a/etc/supervisord.conf b/etc/supervisord.conf index 78f4ac6..c7c96c7 100644 --- a/etc/supervisord.conf +++ b/etc/supervisord.conf @@ -22,7 +22,7 @@ nodaemon=true ; (start in foreground if true;default false) minfds=1024 ; (min. avail startup file descriptors;default 1024) minprocs=200 ; (min. avail process descriptors;default 200) ;umask=022 ; (process file creation umask;default 022) -;user=chrism ; (default is current user, required if root) +user=root ; (default is current user, required if root) ;identifier=supervisor ; (supervisord identifier, default is 'supervisor') ;directory=/tmp ; (default is not to cd during start) ;nocleanup=true ; (don't clean up tempfiles at start;default false) diff --git a/run.sh b/run.sh index 9d69fbe..659cb27 100644 --- a/run.sh +++ b/run.sh @@ -5,7 +5,7 @@ function add_config_value() { local key=${1} local value=${2} - local config_file=${3:-/etc/postfix/main.cf} + # local config_file=${3:-/etc/postfix/main.cf} [ "${key}" == "" ] && echo "ERROR: No key set !!" && exit 1 [ "${value}" == "" ] && echo "ERROR: No value set !!" && exit 1 @@ -24,7 +24,7 @@ if [ -n "${SMTP_PASSWORD_FILE}" ]; then [ -f "${SMTP_PASSWORD_FILE}" ] && read S SMTP_PORT="${SMTP_PORT:-587}" #Get the domain from the server host name -DOMAIN=`echo ${SERVER_HOSTNAME} |awk -F. '{$1="";OFS="." ; print $0}' | sed 's/^.//'` +DOMAIN=`echo ${SERVER_HOSTNAME} | awk 'BEGIN{FS=OFS="."}{print $(NF-1),$NF}'` # Set needed config options add_config_value "myhostname" ${SERVER_HOSTNAME} @@ -34,7 +34,7 @@ add_config_value "myorigin" '$mydomain' add_config_value "relayhost" "[${SMTP_SERVER}]:${SMTP_PORT}" add_config_value "smtp_use_tls" "yes" add_config_value "smtp_sasl_auth_enable" "yes" -add_config_value "smtp_sasl_password_maps" "hash:/etc/postfix/sasl_passwd" +add_config_value "smtp_sasl_password_maps" "lmdb:/etc/postfix/sasl_passwd" add_config_value "smtp_sasl_security_options" "noanonymous" add_config_value "always_add_missing_headers" "${ALWAYS_ADD_MISSING_HEADERS:-no}" @@ -53,7 +53,7 @@ if [ ! -f /etc/postfix/sasl_passwd ]; then fi fi -#Set header tag +#Set header tag if [ ! -z "${SMTP_HEADER_TAG}" ]; then postconf -e "header_checks = regexp:/etc/postfix/header_tag" echo -e "/^MIME-Version:/i PREPEND RelayTag: $SMTP_HEADER_TAG\n/^Content-Transfer-Encoding:/i PREPEND RelayTag: $SMTP_HEADER_TAG" > /etc/postfix/header_tag @@ -86,4 +86,4 @@ fi # starting services rm -f /var/spool/postfix/pid/master.pid -exec supervisord +exec supervisord -c /etc/supervisord.conf