18 Commits
0.2.4 ... 0.4.3

Author SHA1 Message Date
cd9adb1423 fix base image tag
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/tag/woodpecker Pipeline was successful
2026-01-15 12:50:09 +01:00
2cce315ca3 fix ci script
Some checks failed
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/tag/woodpecker Pipeline failed
2026-01-15 12:44:18 +01:00
1c06333c79 alpine image updated
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
2026-01-15 12:39:22 +01:00
7afcbc2bf1 merged
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/tag/woodpecker Pipeline was successful
2025-03-17 20:26:48 +01:00
f1b14d5974 scan only for tags 2025-03-17 20:25:33 +01:00
edd8a42e2d disable vex warning of trivy
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/tag/woodpecker Pipeline was successful
2025-02-28 21:37:29 +01:00
fe0bd0470c Merge branch 'master' of gitea.hottis.de:wn/exim-docker
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/tag/woodpecker Pipeline was successful
2025-02-28 21:28:26 +01:00
1d92622f21 fix acl definition 2025-02-28 21:28:20 +01:00
16e35505d6 Merge branch 'master' of gitea.hottis.de:wn/exim-docker
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
2025-02-28 21:15:29 +01:00
5819107340 add tool 2025-02-28 21:14:33 +01:00
f08937111e Merge branch 'master' of gitea.hottis.de:wn/exim-docker
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/tag/woodpecker Pipeline was successful
2025-02-28 21:03:46 +01:00
dbb79dd567 fix Dockerfile 2025-02-28 21:03:38 +01:00
e1d0f95a72 adjust docu
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
2025-02-28 20:15:24 +01:00
a2b000a05b adjust example
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
2025-02-28 20:12:13 +01:00
8fbca20ffe add sbom stuff
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/tag/woodpecker Pipeline was successful
2025-02-28 20:07:59 +01:00
0fc12e5f3c update alpine base image
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/tag/woodpecker Pipeline was successful
2025-02-28 20:05:13 +01:00
8502fbd9a1 fix concerning whitelist handling
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
2025-02-28 20:03:53 +01:00
7adb4c1fde whitelist
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
2025-02-28 20:01:44 +01:00
6 changed files with 87 additions and 13 deletions

View File

@@ -12,13 +12,8 @@ steps:
from_secret: container_registry_password from_secret: container_registry_password
dockerfile: Dockerfile dockerfile: Dockerfile
when: when:
- event: [push, tag] - event: tag
scan_image:
image: aquasec/trivy
commands:
- trivy image $FORGE_NAME/$CI_REPO:$CI_COMMIT_SHA --quiet --exit-code 1
when:
- event: [push, tag]
build: build:
image: plugins/kaniko image: plugins/kaniko
settings: settings:
@@ -33,4 +28,4 @@ steps:
from_secret: quay_password from_secret: quay_password
dockerfile: Dockerfile dockerfile: Dockerfile
when: when:
- event: [tag] - event: tag

View File

@@ -1,4 +1,4 @@
FROM alpine:3.21.0 FROM alpine:3.23.2
LABEL Maintainer="Wolfgang Hottgenroth <woho@hottis.de>" LABEL Maintainer="Wolfgang Hottgenroth <woho@hottis.de>"
LABEL ImageName="quay.io/wollud1969/exim-docker" LABEL ImageName="quay.io/wollud1969/exim-docker"
@@ -11,6 +11,9 @@ ENV SMARTHOST_USER=""
ENV SMARTHOST_PASS="" 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="127.0.0.1/32" ENV RELAYNETS="127.0.0.1/32"
# whitelist of recipient domains, colon-separated, if empty all no restrictions
ENV WHITELISTED_RECIPIENTS=""
RUN apk add --no-cache exim m4 RUN apk add --no-cache exim m4
@@ -22,7 +25,6 @@ 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" ]

View File

@@ -2,6 +2,7 @@ apiVersion: apps/v1
kind: Deployment kind: Deployment
metadata: metadata:
name: smtp name: smtp
namespace: system
labels: labels:
app: smtp app: smtp
annotations: annotations:
@@ -18,7 +19,7 @@ spec:
spec: spec:
containers: containers:
- name: smtp - name: smtp
image: quay.io/wollud1969/exim-docker:0.2.1 image: quay.io/wollud1969/exim-docker:0.3.4
envFrom: envFrom:
- secretRef: - secretRef:
name: smtp-secrets name: smtp-secrets
@@ -30,6 +31,7 @@ apiVersion: v1
kind: Service kind: Service
metadata: metadata:
name: smtp name: smtp
namespace: system
spec: spec:
type: ClusterIP type: ClusterIP
selector: selector:

View File

@@ -5,6 +5,8 @@ define(`SMARTHOST', esyscmd(`echo -n $SMARTHOST'))dnl
define(`SMARTHOST_USER', esyscmd(`echo -n $SMARTHOST_USER'))dnl define(`SMARTHOST_USER', esyscmd(`echo -n $SMARTHOST_USER'))dnl
define(`SMARTHOST_PASS', esyscmd(`echo -n $SMARTHOST_PASS'))dnl define(`SMARTHOST_PASS', esyscmd(`echo -n $SMARTHOST_PASS'))dnl
define(`RELAYNETS', esyscmd(`echo -n $RELAYNETS'))dnl define(`RELAYNETS', esyscmd(`echo -n $RELAYNETS'))dnl
define(`WHITELISTED_RECIPIENTS', esyscmd(`echo -n $WHITELISTED_RECIPIENTS'))dnl
ifelse(SMARTHOST, `', ` ifelse(SMARTHOST, `', `
errprint(`Error: SMARTHOST not set') errprint(`Error: SMARTHOST not set')
@@ -59,8 +61,11 @@ begin acl
acl_check_rcpt: acl_check_rcpt:
accept accept
hosts = RELAYNETS hosts = RELAYNETS
ifelse(WHITELISTED_RECIPIENTS, `', `', `
domains = WHITELISTED_RECIPIENTS
')
deny deny
message = "Relaying denied" message = "550 5.7.1 Relaying denied"
ifelse(LOCALMAILNAME, `', `', ` ifelse(LOCALMAILNAME, `', `', `
begin rewrite begin rewrite

View File

@@ -12,6 +12,7 @@ Four environment variables are used to configure the container:
* `SMARTHOST_PASS`: Password for smarthost. * `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. * `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.
* `WHITELISTED_RECIPIENT`: Colon-separated list of whitelisted recipient domains, if empty no recipient restrictions will be applied
## Deployment ## Deployment
@@ -24,7 +25,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.2.2 IMAGE=quay.io/wollud1969/exim-docker:0.3.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"
@@ -38,6 +39,7 @@ 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 WHITELISTED_RECIPIENT="example-recipients.com" \
--network $MAILER_NETWORK \ --network $MAILER_NETWORK \
--name mailer \ --name mailer \
--restart always \ --restart always \

68
tools/smtp-dialog.exp Executable file
View File

@@ -0,0 +1,68 @@
#!/usr/bin/expect
package require base64
# SMTP-Server und Port definieren
set smtp_server "172.16.3.33"
set smtp_port "25"
set timeout 25
# Absender, Empfänger und Nachricht
set sender $env(SMTP_SENDER)
set recipient $env(SMTP_RECIPIENT)
set message "Subject: Test Email\r\n\r\nThis is a test email sent via an expect script."
set smtp_user $env(SMTP_USER)
set smtp_pass $env(SMTP_PASS)
set smtp_user_64 [base64::encode $smtp_user]
set smtp_pass_64 [base64::encode $smtp_pass]
# Verbindung herstellen
spawn nc -C $smtp_server $smtp_port
# Begrüßung vom Server erwarten
expect "220 *"
# HELO/EHLO senden
send "EHLO baikonur\n"
expect "250 *"
if {[info exists smtp_user] && $smtp_user ne ""} {
send "AUTH LOGIN\n"
expect "334 VXNlcm5hbWU6"
send "$smtp_user_64\n"
expect "334 UGFzc3dvcmQ6"
send "$smtp_pass_64\n"
expect "235 2.7.0 Authentication successful"
} else {
puts "skip authentication"
}
# Absender definieren
send "MAIL FROM:<$sender>\n"
expect "250 *"
# Empfänger definieren
send "RCPT TO:<$recipient>\n"
expect "250 *"
# Datenübertragung starten
send "DATA\n"
expect "354 *"
# Nachricht senden und Übertragung abschließen
send "$message\n.\n"
expect "250 *"
# Verbindung schließen
send "QUIT\n"
expect "221 *"
# Beenden
interact