Docker Mailserver
Deployment via FluxCD
Ports via PROXY Protocol mit Traefik
https://github.com/docker-mailserver/docker-mailserver-helm/blob/master/charts/docker-mailserver/README.md#ports https://docker-mailserver.github.io/docker-mailserver/latest/config/advanced/kubernetes/#traefik
PROXY Protocol erzeugt die Mail Ports +10000, die man via Traefik Ingress durchreichen kann.
-
Man braucht keinen weiteren LoadBalancer
-
Die original IP des Clients bleibt erhalten
HelmChart values
-
Nichts zu ändern, da es aktuell die default Werte sind
service:
type: "ClusterIP"
proxyProtocol:
enabled: true
trustedNetworks: "10.0.0.0/8 192.168.0.0/16 172.16.0.0/16"
Traefik
-
Entrypoints für jeden Service hinzügen
Traefik Helm values:
smtp:
port: 25
expose:
default: true
exposedPort: 25
protocol: TCP
submissions:
port: 465
expose:
default: true
exposedPort: 465
protocol: TCP
submission:
port: 587
expose:
default: true
exposedPort: 587
protocol: TCP
imap:
port: 143
expose:
default: true
exposedPort: 143
protocol: TCP
imaps:
port: 993
expose:
default: true
exposedPort: 993
protocol: TCP
Im mail-Namespace entsprechende IngressRouteTCP Objekte anlegen
---
apiVersion: traefik.io/v1alpha1
kind: IngressRouteTCP
metadata:
name: smtp
spec:
entryPoints: [ smtp ]
routes:
- match: HostSNI(`*`)
services:
- name: docker-mailserver
namespace: mail
port: smtp-proxy
proxyProtocol:
version: 2
---
apiVersion: traefik.io/v1alpha1
kind: IngressRouteTCP
metadata:
name: submissions
spec:
entryPoints: [ submissions ]
routes:
- match: HostSNI(`*`)
services:
- name: docker-mailserver
namespace: mail
port: subs-proxy
proxyProtocol:
version: 2
---
apiVersion: traefik.io/v1alpha1
kind: IngressRouteTCP
metadata:
name: submission
spec:
entryPoints: [ submission ]
routes:
- match: HostSNI(`*`)
services:
- name: docker-mailserver
namespace: mail
port: sub-proxy
proxyProtocol:
version: 2
---
apiVersion: traefik.io/v1alpha1
kind: IngressRouteTCP
metadata:
name: imap
spec:
entryPoints: [ imap ]
routes:
- match: HostSNI(`*`)
services:
- name: docker-mailserver
namespace: mail
port: imap-proxy
proxyProtocol:
version: 2
---
apiVersion: traefik.io/v1alpha1
kind: IngressRouteTCP
metadata:
name: imaps
spec:
entryPoints: [ imaps ]
routes:
- match: HostSNI(`*`)
services:
- name: docker-mailserver
namespace: mail
port: imaps-proxy
proxyProtocol:
version: 2
Initiale Einrichtung
Nach erstem Deployment muss der erste Benutzer erstellt werden. Der Pod startet sich bis dahin alle 120 Sekunden neu.
kubectl -n mail exec -it deployments/docker-mailserver -- setup email add admin@tamay.cloud
DKIM
DKIM Konfiguration
kubectl -n mail exec -it deployments/docker-mailserver -- setup config dkim keysize 2048 domain 'tamay.cloud'
Bei mehreren Domains:
kubectl -n mail exec -it deployments/docker-mailserver -- setup config dkim keysize 2048 domain 'tamay.cloud,tamay.io,bittlingmaier.family'
Wenn RSPAMD aktiviert ist, muss OpenDKIM deaktiviert sein
ENABLE_RSPAMD=1
ENABLE_OPENDKIM=0
DNS Konfiguration
Ausgabe bei der DKIM Erzeugung im DNS hinzufügen:
mail._domainkey.tamay.cloud. IN TXT "v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAoAh3Gmlg20iqdZrvIuD/RMRw4CJlZgYRzNrHnib2gsdwS581n5xx/TCQ4WS69NkcOVLtHbyI6uqMj030jCBCCi52jZSsPlaB/q0fUiZgMbAqV3aHv+NqcXG7cdO3LGePMORqi+jP87CzC9/H31qvFUbMbLKpoHZUObrpbwPRFnUddqm77XUdGoEDxu28BydTRj8n2O/krvtDUd1ks5VkG1xo1V6G+HCRXqZ3kQN3ZLI2JXL92eMBeQQK0HsylylwkCyUWp6uwlsSZ6z+2eAd6p/C7xW8fmFQNqkZxfdSXM1c7fQuFCWqNUzG24FEV5L4xDG1bwprLFe7SLoei/PkUQIDAQAB"
DMARC:
-
Bei mehreren Domains entsprechend setzen
-
Cloudflare Mail ist je Domain unterschiedlich, kann unter
Email/DMARC-Managementeingerichtet werden
_dmarc.tamay.cloud. IN TXT "v=DMARC1; p=quarantine; sp=quarantine; fo=0; adkim=r; aspf=r; pct=100; rf=afrf; ri=86400; rua=mailto:5b5d373275684ca6a9e1576571091766@dmarc-reports.cloudflare.net,mailto:dmarc.report@tamay.cloud; ruf=mailto:dmarc.report@tamay.cloud"
SPF:
tamay.cloud. IN TXT "v=spf1 mx ip4:92.60.36.251 ~all"
Set ENABLE_POLICYD_SPF=0 to opt-out of the default SPF service. Advised when Rspamd is configured to handle SPF instead.
Catch-all Adresse hinzufügen
kubectl -n mail exec -it deployments/docker-mailserver -- sh -c 'echo @tamay.cloud admin@tamay.cloud > /tmp/docker-mailserver/postfix-virtual.cf'
RSPAMD
ENABLE_RSPAMD=1
# ClamAV is compatible with Rspamd. Optionally enable it for anti-virus support:
ENABLE_CLAMAV=1
# Rspamd replaces the functionality of all these anti-spam services, disable them:
ENABLE_OPENDKIM=0
ENABLE_OPENDMARC=0
ENABLE_POLICYD_SPF=0
ENABLE_AMAVIS=0
ENABLE_SPAMASSASSIN=0
# Provided you've set `RSPAMD_GREYLISTING=1`, also disable Postgrey:
ENABLE_POSTGREY=0