use m4 for config generation
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful

This commit is contained in:
Wolfgang Hottgenroth 2024-12-21 12:46:39 +01:00
parent 0bf33c582f
commit 8464bf1f41
5 changed files with 79 additions and 56 deletions

View File

@ -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" ]

9
ENV Normal file
View File

@ -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"

64
exim.conf.m4 Normal file
View File

@ -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
')

View File

@ -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

View File

@ -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