7 Commits
0.1.0 ... 0.2.1

Author SHA1 Message Date
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
8 changed files with 135 additions and 44 deletions

2
.gitignore vendored
View File

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

View File

@ -1,18 +1,20 @@
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=""
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
@ -20,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" ]

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.0
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_host =
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,28 +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
begin acl
acl_check_rcpt:
accept
hosts = %RELAYNETS%
deny
message = "Relaying denied"
begin rewrite
*@* ${1}@${qualify_domain} Ffrs

View File

@ -1,13 +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'/' \
> exim.conf
exim -bd -q15m -v
m4 exim.conf.m4 > exim.conf && exim -bd -q15m -v