10 Commits

Author SHA1 Message Date
ee5ec605c6 disable starttls
All checks were successful
ci/woodpecker/tag/woodpecker Pipeline was successful
ci/woodpecker/push/woodpecker Pipeline was successful
2024-12-21 13:37:17 +01:00
3c855b055d disable starttls
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/tag/woodpecker Pipeline was successful
2024-12-21 13:35:41 +01:00
d7ed6afe41 k8s snippets
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
2024-12-21 13:32:23 +01:00
b57cc949d3 ignore
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
2024-12-21 13:31:11 +01:00
013c0c0859 fixed
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/tag/woodpecker Pipeline was successful
2024-12-21 13:00:15 +01:00
8464bf1f41 use m4 for config generation
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
2024-12-21 12:46:39 +01:00
0bf33c582f auth added
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
2024-12-20 23:56:43 +01:00
04ad6017e6 image name in dockerfile
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
2024-12-20 23:02:46 +01:00
f205858c30 alpine approach completed
All checks were successful
ci/woodpecker/tag/woodpecker Pipeline was successful
ci/woodpecker/push/woodpecker Pipeline was successful
2024-12-11 11:32:47 +01:00
9f65b7690e alpine approach
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
2024-12-11 10:55:34 +01:00
10 changed files with 138 additions and 62 deletions

2
.gitignore vendored
View File

@ -1,2 +1,4 @@
*~
.*~
ENV
ENV.test

View File

@ -1,33 +1,28 @@
FROM debian:bookworm
FROM alpine:3.21.0
LABEL Maintainer="Wolfgang Hottgenroth <woho@hottis.de>"
LABEL ImageName=""
LABEL ImageName="quay.io/wollud1969/exim-docker"
# domain to be used in sender address of sent mails
ENV LOCALMAILNAME=""
# smarthost to send mail to
ENV SMARTHOST=""
# recipient addresses for root aliases, separate multiple addresses by space
ENV ROOT=""
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 \
apt update && \
apt upgrade -y --autoremove && \
apt install -y exim4-daemon-light ca-certificates curl && \
rm -rf /var/lib/apt/lists/*
RUN apk add --no-cache exim m4
COPY update-exim4.conf.tmpl /etc/exim4/
COPY aliases.tmpl /etc/exim4/
COPY adjust-config.sh /etc/exim4/
COPY start.sh /etc/exim4/
COPY exim.conf.m4 /etc/exim
COPY start.sh /etc/exim
WORKDIR /etc/exim4
WORKDIR /etc/exim
EXPOSE 25
CMD [ "./start.sh" ]
#CMD [ "/usr/bin/m4 exim.conf.m4 > exim.conf && /usr/sbin/exim -bd -q15m -v" ]

View File

@ -1,15 +0,0 @@
#!/bin/bash
cat update-exim4.conf.tmpl \
| sed -e 's/%HOSTNAME%/'$HOSTNAME'/' \
-e 's#%RELAYNETS%#'$RELAYNETS'#' \
-e 's/%LOCALMAILNAME%/'$LOCALMAILNAME'/' \
-e 's/%SMARTHOST%/'$SMARTHOST'/' \
> update-exim4.conf.conf
cat aliases.tmpl \
| sed -e 's/%ROOT%/'"$ROOT"'/' \
> ../aliases && \
newaliases
/usr/sbin/update-exim4.conf -v

View File

@ -1,14 +0,0 @@
mailer-daemon: postmaster
postmaster: root
nobody: root
hostmaster: root
usenet: root
news: root
webmaster: root
www: root
ftp: root
abuse: root
noc: root
security: root
root: %ROOT%

16
examples/deploy.sh Executable file
View File

@ -0,0 +1,16 @@
#!/bin/bash
kubectl create secret generic smtp-secrets \
--dry-run=client \
-o yaml \
--save-config \
--from-literal=SMARTHOST="smtprelaypool.ispgateway.de" \
--from-literal=SMARTHOST_USER="pseudosmarthostuser@hottis.de" \
--from-literal=SMARTHOST_PASS="$SMARTHOST_PASSWORD" \
--from-literal=RELAY_NETWORKS=":10.0.0.0/8" | \
kubectl apply -n system -f -
kubectl apply -n system -f deploy.yml

42
examples/deploy.yml Normal file
View File

@ -0,0 +1,42 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: smtp
labels:
app: smtp
annotations:
secret.reloader.stakater.com/reload: smtp-secrets
spec:
replicas: 1
selector:
matchLabels:
app: smtp
template:
metadata:
labels:
app: smtp
spec:
containers:
- name: smtp
image: quay.io/wollud1969/exim-docker:0.2.1
envFrom:
- secretRef:
name: smtp-secrets
ports:
- containerPort: 25
protocol: TCP
---
apiVersion: v1
kind: Service
metadata:
name: smtp
spec:
type: ClusterIP
selector:
app: smtp
ports:
- name: smtp
protocol: TCP
port: 25
targetPort: 25

View File

@ -18,7 +18,6 @@ docker run \
-e SMARTHOST=smarthost.example.com \
-e LOCALMAILNAME=example.com \
-e RELAYNETS=$RELAYNETS \
-e ROOT=root@example.com \
--network $MAILER_NETWORK \
--name mailer \
--restart always \

66
exim.conf.m4 Normal file
View File

@ -0,0 +1,66 @@
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
tls_advertise_hosts =
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,5 +1,4 @@
#!/bin/bash
#!/bin/sh
./adjust-config.sh
exim -bd -q15m
m4 exim.conf.m4 > exim.conf && exim -bd -q15m -v

View File

@ -1,14 +0,0 @@
dc_eximconfig_configtype='satellite'
dc_other_hostnames='%HOSTNAME%'
dc_local_interfaces='0.0.0.0'
dc_readhost='%LOCALMAILNAME%'
dc_relay_domains=''
dc_minimaldns='false'
dc_relay_nets='%RELAYNETS%'
dc_smarthost='%SMARTHOST%'
CFILEMODE='644'
dc_use_split_config='false'
dc_hide_mailname='true'
dc_mailname_in_oh='true'
dc_localdelivery='mail_spool'