| apiVersion: v1 |
| kind: ConfigMap |
| metadata: |
| name: maddy |
| namespace: {{ .Release.Namespace }} |
| data: |
| maddy.conf: | |
| $(hostname) = mx1.lekva.me |
| $(primary_domain) = lekva.me |
| $(local_domains) = lekva.me shve.li |
| |
| tls file /etc/maddy/certs/tls.crt /etc/maddy/certs/tls.key |
| |
| auth.external authsmtp { |
| helper /usr/bin/auth-smtp |
| perdomain yes |
| domains $(local_domains) |
| } |
| |
| hostname $(hostname) |
| |
| msgpipeline local_routing { |
| destination lekva.me { |
| deliver_to &lekvame |
| } |
| destination shve.li { |
| deliver_to &shveli |
| } |
| default_destination { |
| reject 550 5.1.1 "User doesn't exist" |
| } |
| } |
| |
| smtp tcp://0.0.0.0:25 { |
| io_debug true |
| debug true |
| |
| insecure_auth no |
| |
| defer_sender_reject yes |
| |
| limits { |
| # Up to 20 msgs/sec across max. 10 SMTP connections. |
| all rate 20 1s |
| all concurrency 10 |
| } |
| |
| dmarc yes |
| check { |
| require_mx_record |
| dkim |
| spf |
| } |
| |
| source $(local_domains) { |
| reject 501 5.1.8 "Use Submission for outgoing SMTP" |
| } |
| default_source { |
| destination $(local_domains) { |
| deliver_to &local_routing |
| } |
| default_destination { |
| reject 550 5.1.1 "User doesn't exist" |
| } |
| } |
| } |
| |
| submission tls://0.0.0.0:465 tcp://0.0.0.0:587 { |
| io_debug true |
| debug true |
| |
| auth &authsmtp |
| insecure_auth yes |
| |
| defer_sender_reject yes |
| |
| source $(local_domains) { |
| destination $(local_domains) { |
| deliver_to &local_routing |
| } |
| default_destination { |
| modify { |
| dkim $(primary_domain) $(local_domains) default |
| } |
| deliver_to &remote_queue |
| } |
| } |
| default_source { |
| reject 501 5.1.8 "Non-local sender domain" |
| } |
| } |
| |
| target.smtp lekvame { |
| debug true |
| hostname mx1.lekva.me |
| attempt_starttls false |
| require_tls no |
| auth off |
| targets tcp://maddy.app-maddy.svc.cluster.local:25 |
| } |
| |
| target.smtp shveli { |
| debug true |
| hostname mail.shve.li |
| attempt_starttls false |
| require_tls no |
| auth off |
| targets tcp://maddy.shveli-app-maddy.svc.cluster.local:25 |
| } |
| |
| target.queue remote_queue { |
| target &outbound_delivery |
| |
| autogenerated_msg_domain $(primary_domain) |
| bounce { |
| destination postmaster $(local_domains) { |
| deliver_to &local_routing |
| } |
| default_destination { |
| reject 550 5.0.0 "Refusing to send DSNs to non-local addresses" |
| } |
| } |
| } |
| |
| target.remote outbound_delivery { |
| limits { |
| # Up to 20 msgs/sec across max. 10 SMTP connections |
| # for each recipient domain. |
| destination rate 20 1s |
| destination concurrency 10 |
| } |
| mx_auth { |
| dane |
| mtasts { |
| cache fs |
| fs_dir mtasts_cache/ |
| } |
| local_policy { |
| min_tls_level encrypted |
| min_mx_level none |
| } |
| } |
| } |
| --- |
| apiVersion: apps/v1 |
| kind: Deployment |
| metadata: |
| name: maddy |
| namespace: {{ .Release.Namespace }} |
| spec: |
| selector: |
| matchLabels: |
| app: maddy |
| replicas: 1 |
| template: |
| metadata: |
| labels: |
| app: maddy |
| spec: |
| # hostAliases: |
| # - ip: "10.43.66.220" |
| # hostnames: |
| # - "mx1.lekva.me" |
| volumes: |
| - name: config |
| configMap: |
| name: maddy |
| - name: certs |
| secret: |
| secretName: cert-mx1.lekva.me |
| - name: data |
| persistentVolumeClaim: |
| claimName: data |
| containers: |
| - name: maddy |
| image: giolekva/maddy-auth-smtp:v0.4.4 |
| imagePullPolicy: Always |
| ports: |
| - name: imap |
| containerPort: 143 |
| protocol: TCP |
| - name: imaps |
| containerPort: 993 |
| protocol: TCP |
| - name: smtp |
| containerPort: 25 |
| protocol: TCP |
| - name: smtps |
| containerPort: 465 |
| protocol: TCP |
| - name: submission |
| containerPort: 587 |
| protocol: TCP |
| command: |
| - maddy |
| - -config |
| - /etc/maddy/config/maddy.conf |
| volumeMounts: |
| - name: config |
| mountPath: /etc/maddy/config |
| - name: certs |
| mountPath: /etc/maddy/certs |
| - name: data |
| mountPath: /var/lib/maddy |
| --- |
| apiVersion: v1 |
| kind: Service |
| metadata: |
| name: maddy |
| namespace: {{ .Release.Namespace }} |
| spec: |
| type: LoadBalancer |
| externalTrafficPolicy: Local |
| selector: |
| app: maddy |
| ports: |
| - name: imap |
| port: 143 |
| protocol: TCP |
| - name: imaps |
| port: 993 |
| protocol: TCP |
| - name: smtp |
| port: 25 |
| protocol: TCP |
| - name: smtps |
| port: 465 |
| protocol: TCP |
| - name: submission |
| port: 587 |
| protocol: TCP |
| --- |
| apiVersion: v1 |
| kind: PersistentVolumeClaim |
| metadata: |
| name: data |
| namespace: {{ .Release.Namespace }} |
| spec: |
| accessModes: |
| - ReadWriteOnce |
| resources: |
| requests: |
| storage: 100Gi |