Merge branch 'master' of gitea.hottis.de:wn/exim-docker
This commit is contained in:
commit
419b775dcb
3
.gitignore
vendored
3
.gitignore
vendored
@ -1,2 +1,5 @@
|
|||||||
*~
|
*~
|
||||||
.*~
|
.*~
|
||||||
|
ENV
|
||||||
|
ENV.test
|
||||||
|
tmp/
|
||||||
|
@ -7,12 +7,14 @@ LABEL ImageName="quay.io/wollud1969/exim-docker"
|
|||||||
ENV LOCALMAILNAME=""
|
ENV LOCALMAILNAME=""
|
||||||
# smarthost to send mail to
|
# smarthost to send mail to
|
||||||
ENV SMARTHOST=""
|
ENV SMARTHOST=""
|
||||||
|
ENV SMARTHOST_USER=""
|
||||||
|
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 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
|
COPY start.sh /etc/exim
|
||||||
|
|
||||||
WORKDIR /etc/exim
|
WORKDIR /etc/exim
|
||||||
@ -20,6 +22,7 @@ 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" ]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
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 \
|
||||||
|
68
exim.conf.m4
Normal file
68
exim.conf.m4
Normal file
@ -0,0 +1,68 @@
|
|||||||
|
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 ----------------------------------------------------------------
|
||||||
|
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
|
||||||
|
')
|
@ -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
|
|
||||||
|
|
@ -8,9 +8,10 @@ option to send mail from other containers without the need to configure the smar
|
|||||||
Four environment variables are used to configure the container:
|
Four environment variables are used to configure the container:
|
||||||
|
|
||||||
* `SMARTHOST`: The is the name of the smarthost. exim within this container will send all mail to this smarthost for further delivery. Make sure the smarthost accepts mail from this container without authentication.
|
* `SMARTHOST`: The is the name of the smarthost. exim within this container will send all mail to this smarthost for further delivery. Make sure the smarthost accepts mail from this container without authentication.
|
||||||
* `LOCALMAILNAME`: The domain name which shall be used as the domain part of the sender address in every outgoing mail.
|
* `SMARTHOST_USER`: Login for smarthost. If no authentication is required, skip it.
|
||||||
|
* `SMARTHOST_PASS`: Password for smarthost.
|
||||||
|
* `LOCALMAILNAME`: The domain name which shall be used as the domain part of the sender address in every outgoing mail. If not required, skip it.
|
||||||
* `RELAYNETS`: Networks exim in this container accepts for relaying. Separate multiple networks by semicolon.
|
* `RELAYNETS`: Networks exim in this container accepts for relaying. Separate multiple networks by semicolon.
|
||||||
* `ROOT`: Addresses to forward root mail to. Separate multiple addresses by space.
|
|
||||||
|
|
||||||
|
|
||||||
## Deployment
|
## Deployment
|
||||||
@ -23,7 +24,7 @@ Typically, don't expose the smtp port of this container to the default network o
|
|||||||
```
|
```
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
IMAGE=quay.io/wollud1969/exim-docker:0.0.9
|
IMAGE=quay.io/wollud1969/exim-docker:0.2.2
|
||||||
MAILER_NETWORK=mailer-network
|
MAILER_NETWORK=mailer-network
|
||||||
|
|
||||||
docker network create $MAILER_NETWORK || echo "mailer-network already exists"
|
docker network create $MAILER_NETWORK || echo "mailer-network already exists"
|
||||||
@ -37,7 +38,6 @@ docker run \
|
|||||||
-e SMARTHOST=smarthost.example.com \
|
-e SMARTHOST=smarthost.example.com \
|
||||||
-e LOCALMAILNAME=krohne.com \
|
-e LOCALMAILNAME=krohne.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 \
|
||||||
@ -54,3 +54,4 @@ docker network connect mailer-network name_of_other_container
|
|||||||
|
|
||||||
Now you can use the name of the mailer container, here `mailer` as smarthost name in that other container.
|
Now you can use the name of the mailer container, here `mailer` as smarthost name in that other container.
|
||||||
|
|
||||||
|
|
||||||
|
13
start.sh
13
start.sh
@ -1,13 +1,4 @@
|
|||||||
#!/bin/bash
|
#!/bin/sh
|
||||||
|
|
||||||
rm exim.conf
|
m4 exim.conf.m4 > exim.conf && exim -bd -q15m -v
|
||||||
|
|
||||||
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
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user