Compare commits
10 Commits
0.0.10
...
stable_bef
Author | SHA1 | Date | |
---|---|---|---|
ee5ec605c6 | |||
3c855b055d | |||
d7ed6afe41 | |||
b57cc949d3 | |||
013c0c0859 | |||
8464bf1f41 | |||
0bf33c582f | |||
04ad6017e6
|
|||
f205858c30 | |||
9f65b7690e
|
2
.gitignore
vendored
2
.gitignore
vendored
@ -1,2 +1,4 @@
|
|||||||
*~
|
*~
|
||||||
.*~
|
.*~
|
||||||
|
ENV
|
||||||
|
ENV.test
|
||||||
|
25
Dockerfile
25
Dockerfile
@ -1,33 +1,28 @@
|
|||||||
FROM debian:bookworm
|
FROM alpine:3.21.0
|
||||||
|
|
||||||
LABEL Maintainer="Wolfgang Hottgenroth <woho@hottis.de>"
|
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
|
# domain to be used in sender address of sent mails
|
||||||
ENV LOCALMAILNAME=""
|
ENV LOCALMAILNAME=""
|
||||||
# smarthost to send mail to
|
# smarthost to send mail to
|
||||||
ENV SMARTHOST=""
|
ENV SMARTHOST=""
|
||||||
# recipient addresses for root aliases, separate multiple addresses by space
|
ENV SMARTHOST_USER=""
|
||||||
ENV ROOT=""
|
ENV SMARTHOST_PASS=""
|
||||||
# ip addresses or networks to allow for relaying, separate multiple ones by semicolon
|
# ip addresses or networks to allow for relaying, separate multiple ones by semicolon
|
||||||
ENV RELAYNETS=""
|
ENV RELAYNETS="127.0.0.1/32"
|
||||||
|
|
||||||
RUN \
|
RUN apk add --no-cache exim m4
|
||||||
apt update && \
|
|
||||||
apt upgrade -y --autoremove && \
|
|
||||||
apt install -y exim4-daemon-light ca-certificates curl && \
|
|
||||||
rm -rf /var/lib/apt/lists/*
|
|
||||||
|
|
||||||
COPY update-exim4.conf.tmpl /etc/exim4/
|
COPY exim.conf.m4 /etc/exim
|
||||||
COPY aliases.tmpl /etc/exim4/
|
COPY start.sh /etc/exim
|
||||||
COPY adjust-config.sh /etc/exim4/
|
|
||||||
COPY start.sh /etc/exim4/
|
|
||||||
|
|
||||||
WORKDIR /etc/exim4
|
WORKDIR /etc/exim
|
||||||
|
|
||||||
EXPOSE 25
|
EXPOSE 25
|
||||||
|
|
||||||
CMD [ "./start.sh" ]
|
CMD [ "./start.sh" ]
|
||||||
|
#CMD [ "/usr/bin/m4 exim.conf.m4 > exim.conf && /usr/sbin/exim -bd -q15m -v" ]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -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
|
|
||||||
|
|
14
aliases.tmpl
14
aliases.tmpl
@ -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
16
examples/deploy.sh
Executable 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
42
examples/deploy.yml
Normal 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
|
||||||
|
|
@ -18,7 +18,6 @@ docker run \
|
|||||||
-e SMARTHOST=smarthost.example.com \
|
-e SMARTHOST=smarthost.example.com \
|
||||||
-e LOCALMAILNAME=example.com \
|
-e LOCALMAILNAME=example.com \
|
||||||
-e RELAYNETS=$RELAYNETS \
|
-e RELAYNETS=$RELAYNETS \
|
||||||
-e ROOT=root@example.com \
|
|
||||||
--network $MAILER_NETWORK \
|
--network $MAILER_NETWORK \
|
||||||
--name mailer \
|
--name mailer \
|
||||||
--restart always \
|
--restart always \
|
||||||
|
66
exim.conf.m4
Normal file
66
exim.conf.m4
Normal 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
|
||||||
|
')
|
5
start.sh
5
start.sh
@ -1,5 +1,4 @@
|
|||||||
#!/bin/bash
|
#!/bin/sh
|
||||||
|
|
||||||
./adjust-config.sh
|
m4 exim.conf.m4 > exim.conf && exim -bd -q15m -v
|
||||||
exim -bd -q15m
|
|
||||||
|
|
||||||
|
@ -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'
|
|
||||||
|
|
Reference in New Issue
Block a user