fix(stalwart): move config responsibility to deployment

This commit is contained in:
Tommy 2024-06-24 14:30:39 +02:00
parent 7c0e2cbdb1
commit f0c673f5ae
No known key found for this signature in database
4 changed files with 3 additions and 196 deletions

View file

@ -2,7 +2,7 @@ apiVersion: v2
name: stalwart-mail name: stalwart-mail
description: Stalwart is a JMAP, IMAP4 and SMTP server description: Stalwart is a JMAP, IMAP4 and SMTP server
version: 0.1.5 version: 0.1.5
appVersion: 0.8.0 appVersion: 0.8.1
maintainers: maintainers:
- name: Tommy Skaug - name: Tommy Skaug
email: tommy@skaug.me email: tommy@skaug.me

View file

@ -1,179 +0,0 @@
---
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ include "stalwart-mail.fullname" . }}
namespace: {{ .Release.Namespace | quote }}
labels:
{{- include "stalwart-mail.labels" . | nindent 4 }}
data:
stalwart-mail.conf: |
[server.listener."smtp"]
bind = ["[::]:25"]
protocol = "smtp"
tls.implicit = true
[queue.outbound]
next-hop = [ { if = "is_local_domain('', rcpt_domain)", then = "'relay'" },
{ else = false } ]
[remote."relay"]
address = "relay.example.org"
port = 25
protocol = "smtp"
[remote."relay".tls]
implicit = false
allow-invalid-certs = false
[server.listener."submissions"]
bind = ["[::]:465"]
protocol = "smtp"
tls.implicit = true
[server.listener."imaptls"]
bind = ["[::]:993"]
protocol = "imap"
tls.implicit = true
[server.listener."management"]
bind = ["[::]:8080"]
protocol = "http"
[server.http]
use-x-forwarded = true
hsts = false
[certificate."default"]
cert = "%{env:STALWART_TLS_CERT}%"
private-key = "%{env:STALWART_TLS_KEY}%"
[store."postgresql"]
type = "postgresql"
host = "%{env:STALWART_POSTGRES_HOST}%"
port = 5432
database = "%{env:STALWART_POSTGRES_DATABASE}%"
user = "%{env:STALWART_POSTGRES_USERNAME}%"
password = "%{env:STALWART_POSTGRES_PASSWORD}%"
timeout = "15s"
enable = true
allow-invalid-certs = false
[storage]
data = "postgresql"
fts = "postgresql"
blob = "postgresql"
lookup = "postgresql"
directory = "ldap"
[store."postgresql".tls]
enable = false
allow-invalid-certs = false
[store."postgresql".pool]
max-connections = 10
[storage.full-text]
default-language = "en"
[tracer."stdout"]
type = "stdout"
level = "info"
ansi = false
enable = true
[tracer.otel]
type = "open-telemetry"
transport = "http"
endpoint = "{{ .Values.tracer.http.endpoint }}"
level = "info"
enable = true
[authentication.fallback-admin]
user = "admin"
secret = "%{env:STALWART_ADMIN_SECRET}%"
[directory."ldap"]
type = "ldap"
url = "{{ .Values.ldap.url }}"
base-dn = "{{ .Values.ldap.baseDN }}"
timeout = "30s"
[directory."ldap".bind]
dn = "{{ .Values.ldap.bindDN }}"
secret = "%{env:STALWART_LDAP_BIND_SECRET}%"
[directory."ldap".bind.auth]
enable = true
dn = "cn=?,{{ .Values.ldap.baseDN }}"
[directory."ldap".tls]
enable = false
allow-invalid-certs = false
[directory."ldap".filter]
name = "{{ .Values.ldap.filter.name }}"
email = "{{ .Values.ldap.filter.email }}"
verify = "{{ .Values.ldap.filter.verify }}"
expand = "{{ .Values.ldap.filter.expand }}"
domains = "{{ .Values.ldap.filter.domains }}"
[directory."ldap".attributes]
name = "uid"
class = "objectclass"
description = ["cn"]
secret = "userPassword"
email = "mail"
groups = ["memberOf"]
[auth.iprev]
verify = [ { if = "listener = 'smtp'", then = "strict" },
{ else = "disable" } ]
[auth.dmarc]
verify = "disable"
# [ { if = "listener = 'smtp'", then = "strict" }, { else = "disable" } ]
[auth.arc]
seal = "'ed'"
verify = "strict"
[signature."ed25519"]
private-key = "%{env:STALWART_DKIM_ED_KEY}%"
domain = "{{ .Values.config.domain }}"
selector = "_default"
headers = ["From", "To", "Date", "Subject", "Message-ID"]
algorithm = "ed25519-sha256"
canonicalization = "simple/simple"
set-body-length = true
report = true
[auth.dkim]
verify = "relaxed"
sign = [ { if = "sender_domain = '{{ .Values.config.domain }}'", then = "'ed25519'" },
{ else = false } ]
[report.analysis]
addresses = ["dmarc@*", "abuse@*"]
forward = true
store = "365d"
# [report.dkim]
# from-name = "'Report Subsystem'"
# from-address = "'noreply-dkim@{{ .Values.config.domain }}'"
# subject = "'DKIM Authentication Failure Report'"
# sign = ["ed"]
# send = "1/1d"
[oauth]
key = "%{env:STALWART_OAUTH_KEY}%"
[oauth.expiry]
user-code = "30m"
auth-code = "10m"
token = "1h"
refresh-token = "30d"
refresh-token-renew = "4d"
[authentication]
fail2ban = "100/1s"

View file

@ -95,4 +95,4 @@ spec:
claimName: {{ include "stalwart-mail.fullname" . }} claimName: {{ include "stalwart-mail.fullname" . }}
- name: stalwart-conf - name: stalwart-conf
configMap: configMap:
name: {{ include "stalwart-mail.fullname" . }} name: {{ .Values.existingConfigMap }}

View file

@ -1,26 +1,12 @@
config: config:
domain: 252.no domain: 252.no
ldap:
url: ldap://lldap.security.svc.cluster.local:389
baseDN: "ou=people,dc=home,dc=arpa"
bindDN: "cn=admin,ou=people,dc=home,dc=arpa"
filter:
name: "(&(objectClass=person)(uid=?))"
email: "(&(objectClass=person)(|(mail=?)(mailAlias=?)))"
verify: "(&(objectClass=person)(|(mail=*?*)(mailAlias=*?*)))"
expand: "(&(objectClass=person)(|(mail=*?*)(mailAlias=*?*)))"
domains: "(&(objectClass=person)(|(mail=*@?)(mailAlias=*@?)))"
existingSecret: stalwart-mail-secret existingSecret: stalwart-mail-secret
existingConfigMap: stalwart-mail-config
tlsSecret: stalwart-mail-tls tlsSecret: stalwart-mail-tls
replicaCount: 1 replicaCount: 1
tracer:
http:
endpoint: http://tempo-distributor.monitoring.svc.cluster.local:4318
initContainers: initContainers:
dbInit: dbInit:
image: image: