stalwart-mail

stalwart-mail

stalwart-mail

Version: 0.0.18 Type: application AppVersion: 0.10.6

Helm Chart for Stalwart Mail Server - Secure & Modern All-in-One Mail Server (IMAP, JMAP, SMTP)

Maintainers

NameEmailUrl
WrenIXhttps://wrenix.eu

= Alpha

WARNING

We stop working on this Helm-Chart. There are still many breaking change like:

We hope that stalward mail-server becomes more stable.

====

Usage

Helm must be installed and setup to your kubernetes cluster to use the charts. Refer to Helm’s documentation to get started. Once Helm has been set up correctly, fetch the charts as follows:

helm pull oci://codeberg.org/wrenix/helm-charts/stalwart-mail

You can install a chart release using the following command:

helm install stalwart-mail-release oci://codeberg.org/wrenix/helm-charts/stalwart-mail --values values.yaml

To uninstall a chart release use helm’s delete command:

helm uninstall stalwart-mail-release

Values

DKIM

KeyTypeDefaultDescription
config.auth.dkim.signlist[{"if":"listener != 'smtp'","then":"['rsa', 'ed25519']"},{"else":false}]auth rule for signing with dkim
config.auth.dkim.verifystring"relaxed"verify of dkim signature (relaxed, strict, disable)

Authentification

KeyTypeDefaultDescription
config.authentication.fallback-admin.secretstring"%{env:FALLBACK_ADMIN_SECRET}%"password for fallback authentfication (use env for store in secrets of kubernetes)
config.authentication.fallback-admin.userstring"admin"username for fallback authentfication
secrets.env.FALLBACK_ADMIN_SECRETstring"supersecret"password for fallback authentfication (env)

Other Values

KeyTypeDefaultDescription
affinityobject{}
autoscaling.enabledboolfalse
autoscaling.maxReplicasint100
autoscaling.minReplicasint1
autoscaling.targetCPUUtilizationPercentageint80
certificate.certmanager.dnsNames[0]string"chart-example.local"
certificate.certmanager.enabledbooltrue
certificate.certmanager.issuerRef.groupstring"cert-manager.io"
certificate.certmanager.issuerRef.kindstring"ClusterIssuer"
certificate.certmanager.issuerRef.namestring"letsencrypt-prod"
certificate.secretNamestringnilnot needed if certmanager is used
config.directory.internal.storestring"rocksdb"
config.directory.internal.typestring"internal"
config.metrics.prometheus.auth.secretstring"%{env:METRICS_SECRET}%"
config.metrics.prometheus.auth.usernamestring"%{env:METRICS_USERNAME}%"
config.metrics.prometheus.enablebooltrue
config.server.listener.http.bind[0]string"[::]:80"
config.server.listener.http.protocolstring"http"
config.server.listener.https.bind[0]string"[::]:443"
config.server.listener.https.protocolstring"http"
config.server.listener.https.tls.implicitbooltrue
config.server.listener.imap.bind[0]string"[::]:143"
config.server.listener.imap.protocolstring"imap"
config.server.listener.imaptls.bind[0]string"[::]:993"
config.server.listener.imaptls.protocolstring"imap"
config.server.listener.imaptls.tls.implicitbooltrue
config.server.listener.pop3.bind[0]string"[::]:110"
config.server.listener.pop3.protocolstring"pop3"
config.server.listener.pop3s.bind[0]string"[::]:995"
config.server.listener.pop3s.protocolstring"pop3"
config.server.listener.pop3s.tls.implicitbooltrue
config.server.listener.sieve.bind[0]string"[::]:4190"
config.server.listener.sieve.protocolstring"managesieve"
config.server.listener.smtp.bind[0]string"[::]:25"
config.server.listener.smtp.protocolstring"smtp"
config.server.listener.submission.bind[0]string"[::]:587"
config.server.listener.submission.protocolstring"smtp"
config.server.listener.submissions.bind[0]string"[::]:465"
config.server.listener.submissions.protocolstring"smtp"
config.server.listener.submissions.tls.implicitbooltrue
config.storage.blobstring"rocksdb"
config.storage.datastring"rocksdb"
config.storage.directorystring"internal"
config.storage.ftsstring"rocksdb"
config.storage.lookupstring"rocksdb"
config.store.rocksdb.compressionstring"lz4"
config.store.rocksdb.pathstring"/data"
config.store.rocksdb.typestring"rocksdb"
config.tracer.otel.enableboolfalse
config.tracer.otel.endpointstring"https://127.0.0.1/otel"
config.tracer.otel.headerslist[]headers for usage with http (e.g. ‘Authorization: <place_auth_here>’)
config.tracer.otel.levelstring"info"
config.tracer.otel.transportstring"grpc"grpc or http
config.tracer.otel.typestring"open-telemetry"
config.tracer.stdout.ansiboolfalse
config.tracer.stdout.enablebooltrue
config.tracer.stdout.levelstring"info"
config.tracer.stdout.typestring"stdout"
envlist[]
fullnameOverridestring""
global.image.pullPolicystringnilif set it will overwrite all pullPolicy
global.image.registrystringnilif set it will overwrite all registry entries
image.pullPolicystring"IfNotPresent"
image.registrystring"docker.io"
image.repositorystring"stalwartlabs/mail-server"
image.tagstring""Overrides the image tag whose default is the chart appVersion.
imagePullSecretslist[]
ingress.annotationsobject{}
ingress.classNamestring""
ingress.enabledboolfalse
ingress.hosts[0].hoststring"chart-example.local"
ingress.hosts[0].paths[0].pathstring"/"
ingress.hosts[0].paths[0].pathTypestring"ImplementationSpecific"
ingress.tlslist[]
livenessProbe.httpGet.pathstring"/healthz/live"
livenessProbe.httpGet.portstring"http"
nameOverridestring""
nodeSelectorobject{}
persistence.accessModestring"ReadWriteOnce"accessMode
persistence.annotationsobject{}
persistence.enabledbooltrueEnable persistence using Persistent Volume Claims ref: http://kubernetes.io/docs/user-guide/persistent-volumes/
persistence.existingClaimstringnilA manually managed Persistent Volume and Claim Requires persistence.enabled: true If defined, PVC must be created manually before volume will be bound
persistence.hostPathstringnilDo not create an PVC, direct use hostPath in Pod
persistence.sizestring"10Gi"size
persistence.storageClassstringnilPersistent Volume Storage Class If defined, storageClassName: If set to “-”, storageClassName: “”, which disables dynamic provisioning If undefined (the default) or set to null, no storageClassName spec is set, choosing the default provisioner. (gp2 on AWS, standard on GKE, AWS & OpenStack)
podAnnotationsobject{}
podLabelsobject{}
podSecurityContextobject{}
prometheus.servicemonitor.enabledboolfalse
prometheus.servicemonitor.labelsobject{}
readinessProbe.httpGet.pathstring"/healthz/ready"
readinessProbe.httpGet.portstring"http"
replicaCountint1
resourcesobject{}
secrets.env.METRICS_SECRETstring"scrape_metrics_password"
secrets.env.METRICS_USERNAMEstring"scrape_metrics_user"
securityContextobject{}
service.annotationsobject{}
service.ipFamilies[0]string"IPv4"
service.ipFamilyPolicystring"SingleStack"other option is RequireDualStack
service.ports.httpint80
service.ports.httpsint443
service.ports.imapint143
service.ports.imaptlsint993
service.ports.pop3int110
service.ports.pop3sint995
service.ports.sieveint4190
service.ports.smtpint25
service.ports.submissionint587
service.ports.submissionsint465
service.typestring"ClusterIP"
serviceAccount.annotationsobject{}
serviceAccount.automountbooltrue
serviceAccount.createboolfalse
serviceAccount.namestring""
tolerationslist[]
traefik.enabledboolfalse
traefik.ports.https.entrypointstring"websecure"
traefik.ports.https.matchstringnil
traefik.ports.https.passthroughTLSbooltrue
traefik.ports.https.proxyProtocolbooltrue
traefik.ports.imaptls.entrypointstring"imaps"
traefik.ports.imaptls.matchstringnil
traefik.ports.imaptls.passthroughTLSbooltrue
traefik.ports.imaptls.proxyProtocolbooltrue
traefik.ports.pop3s.entrypointstring"pop3s"
traefik.ports.pop3s.matchstringnil
traefik.ports.pop3s.passthroughTLSbooltrue
traefik.ports.pop3s.proxyProtocolbooltrue
traefik.ports.sieve.entrypointstring"sieve"
traefik.ports.sieve.matchstringnil
traefik.ports.sieve.passthroughTLSbooltrue
traefik.ports.sieve.proxyProtocolbooltrue
traefik.ports.smtp.entrypointstring"smtp"
traefik.ports.smtp.matchstringnil
traefik.ports.smtp.proxyProtocolbooltrue
traefik.ports.submissions.entrypointstring"smtps"
traefik.ports.submissions.matchstringnil
traefik.ports.submissions.passthroughTLSbooltrue
traefik.ports.submissions.proxyProtocolbooltrue
volumeMountslist[]
volumeslist[]

Autogenerated from chart metadata using helm-docs