diff --git a/Dockerfile b/Dockerfile index dd2a4e1..b579b07 100644 --- a/Dockerfile +++ b/Dockerfile @@ -10,11 +10,11 @@ ENV SMARTHOST="" ENV SMARTHOST_USER="" ENV SMARTHOST_PASS="" # ip addresses or networks to allow for relaying, separate multiple ones by semicolon -ENV RELAYNETS="" +ENV RELAYNETS="127.0.0.1/32" -RUN apk add --no-cache exim bash +RUN apk add --no-cache exim m4 -COPY exim.conf.tmpl /etc/exim +COPY exim.conf.m4 /etc/exim COPY start.sh /etc/exim WORKDIR /etc/exim @@ -22,6 +22,7 @@ WORKDIR /etc/exim EXPOSE 25 CMD [ "./start.sh" ] +#CMD [ "/usr/bin/m4 exim.conf.m4 > exim.conf && /usr/sbin/exim -bd -q15m -v" ] diff --git a/ENV b/ENV new file mode 100644 index 0000000..d7d2562 --- /dev/null +++ b/ENV @@ -0,0 +1,9 @@ +export HOSTNAME=`hostname` +export LOCALMAILNAME="hottis.de" +#export LOCALMAILNAME="" +export SMARTHOST=smtprelaypool.ispgateway.de +#export SMARTHOST="" +export SMARTHOST_USER=pseudosmarthostuser@hottis.de +#export SMARTHOST_USER="_" +export SMARTHOST_PASS="Chaediek3Chaer7u" +export RELAYNETS="0.0.0.0/0" diff --git a/exim.conf.m4 b/exim.conf.m4 new file mode 100644 index 0000000..6bfa381 --- /dev/null +++ b/exim.conf.m4 @@ -0,0 +1,64 @@ +dnl values +define(`HOSTNAME', esyscmd(`echo -n $HOSTNAME'))dnl +define(`LOCALMAILNAME', esyscmd(`echo -n $LOCALMAILNAME'))dnl +define(`SMARTHOST', esyscmd(`echo -n $SMARTHOST'))dnl +define(`SMARTHOST_USER', esyscmd(`echo -n $SMARTHOST_USER'))dnl +define(`SMARTHOST_PASS', esyscmd(`echo -n $SMARTHOST_PASS'))dnl +define(`RELAYNETS', esyscmd(`echo -n $RELAYNETS'))dnl + +ifelse(SMARTHOST, `', ` +errprint(`Error: SMARTHOST not set') +m4exit(1) +') + +ifelse(HOSTNAME, `', ` +errprint(`Error: HOSTNAME not set') +m4exit(1) +') + +dnl template for exim.conf + +primary_hostname = HOSTNAME + +acl_smtp_rcpt = acl_check_rcpt + +begin routers +smarthost_route: + driver = manualroute + domains = * + transport = smarthost_smtp + route_list = * SMARTHOST + +begin transports +smarthost_smtp: + driver = smtp + port = 25 + multi_domain +ifelse(SMARTHOST_USER, `', `', `dnl + hosts_require_auth = * +') + +ifelse(SMARTHOST_USER, `', `', ` +begin authenticators +plain: + driver = plaintext + public_name = PLAIN + client_send = ^SMARTHOST_USER^SMARTHOST_PASS + +login: + driver = plaintext + public_name = LOGIN + client_send = : SMARTHOST_USER : SMARTHOST_PASS +') + +begin acl +acl_check_rcpt: + accept + hosts = RELAYNETS + deny + message = "Relaying denied" + +ifelse(LOCALMAILNAME, `', `', ` +begin rewrite +*@* ${1}@LOCALMAILNAME Ffrs +') diff --git a/exim.conf.tmpl b/exim.conf.tmpl deleted file mode 100644 index e655174..0000000 --- a/exim.conf.tmpl +++ /dev/null @@ -1,40 +0,0 @@ -primary_hostname = %HOSTNAME% -qualify_domain = %LOCALMAILNAME% - -acl_smtp_rcpt = acl_check_rcpt - -begin routers -smarthost_route: - driver = manualroute - domains = * - transport = smarthost_smtp - route_list = * %SMARTHOST% - -begin transports -smarthost_smtp: - driver = smtp - port = 25 - multi_domain - hosts_require_auth = * - -begin authenticators -plain: - driver = plaintext - public_name = PLAIN - client_send = ^%SMARTHOST_USER%^%SMARTHOST_PASS% - -login: - driver = plaintext - public_name = LOGIN - client_send = : %SMARTHOST_USER% : %SMARTHOST_PASS% - -begin acl -acl_check_rcpt: - accept - hosts = %RELAYNETS% - deny - message = "Relaying denied" - -begin rewrite -*@* ${1}@${qualify_domain} Ffrs - diff --git a/start.sh b/start.sh index f4e671f..83f891a 100755 --- a/start.sh +++ b/start.sh @@ -1,15 +1,4 @@ -#!/bin/bash +#!/bin/sh -rm exim.conf - -cat exim.conf.tmpl \ - | sed -e 's/%HOSTNAME%/'$HOSTNAME'/' \ - -e 's#%RELAYNETS%#'$RELAYNETS'#' \ - -e 's/%LOCALMAILNAME%/'$LOCALMAILNAME'/' \ - -e 's/%SMARTHOST%/'$SMARTHOST'/' \ - -e 's/%SMARTHOST_USER%/'$SMARTHOST_USER'/' \ - -e 's/%SMARTHOST_PASS%/'$SMARTHOST_PASS'/' \ - > exim.conf - -exim -bd -q15m -v +m4 exim.conf.m4 > exim.conf && exim -bd -q15m -v