= stalwart-mail image::https://img.shields.io/badge/Version-0.0.3-informational?style=flat-square[Version: 0.0.3] image::https://img.shields.io/badge/Version-application-informational?style=flat-square[Type: application] image::https://img.shields.io/badge/AppVersion-0.6.0-informational?style=flat-square[AppVersion: 0.6.0] == Maintainers .Maintainers |=== | Name | Email | Url | WrenIX | | |=== = Alpha WARNING ==== We stop working on this Helm-Chart. There are still many breaking change like: * https://github.com/stalwartlabs/mail-server/issues/211[storage.fts in toml configuration has two meanings] 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 https://helm.sh/docs[documentation] to get started. Once Helm has been set up correctly, fetch the charts as follows: [source,bash] ---- helm pull oci://codeberg.org/wrenix/helm-charts/stalwart-mail ---- You can install a chart release using the following command: [source,bash] ---- 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: [source,bash] ---- helm uninstall stalwart-mail-release ---- == Values .Values |=== | Key | Type | Default | Description | affinity | object | `{}` | | autoscaling.enabled | bool | `false` | | autoscaling.maxReplicas | int | `100` | | autoscaling.minReplicas | int | `1` | | autoscaling.targetCPUUtilizationPercentage | int | `80` | | certificate.certmanager.dnsNames[0] | string | `"chart-example.local"` | | certificate.certmanager.enabled | bool | `true` | | certificate.certmanager.issuerRef.group | string | `"cert-manager.io"` | | certificate.certmanager.issuerRef.kind | string | `"ClusterIssuer"` | | certificate.certmanager.issuerRef.name | string | `"letsencrypt-prod"` | | certificate.secretName | string | `nil` | not needed if certmanager is used | config.acme.letsencrypt | object | `{"cache":"/opt/stalwart-mail/etc/acme","contact":["postmaster@%{DEFAULT_DOMAIN}%"],"directory":"https://acme-v02.api.letsencrypt.org/directory","port":443,"renew-before":"30d"}` | acme with name letsencrypt (from: common/tls.toml) | config.acme.letsencrypt.cache | string | `"/opt/stalwart-mail/etc/acme"` | acme cache (from: common/tls.toml) | config.acme.letsencrypt.contact | list | `["postmaster@%{DEFAULT_DOMAIN}%"]` | acme contact (from: common/tls.toml) | config.acme.letsencrypt.directory | string | `"https://acme-v02.api.letsencrypt.org/directory"` | acme directory (from: common/tls.toml) | config.acme.letsencrypt.port | int | `443` | acme port (from: common/tls.toml) | config.acme.letsencrypt.renew-before | string | `"30d"` | acme renew-before (from: common/tls.toml) | config.certificate.default | object | `{"cert":"file:///opt/stalwart-mail/etc/certs/tls.crt","private-key":"file:///opt/stalwart-mail/etc/certs/tls.key"}` | certificate with name default (from: common/tls.toml) | config.certificate.default.cert | string | `"file:///opt/stalwart-mail/etc/certs/tls.crt"` | certificate cert (from: common/tls.toml) | config.certificate.default.private-key | string | `"file:///opt/stalwart-mail/etc/certs/tls.key"` | certificate private-key (from: common/tls.toml) | config.directory.memory | object | `{"disable":false,"options":{"catch-all":true,"subaddressing":true},"principals":[{"description":"Superuser","mail":["postmaster@%{DEFAULT_DOMAIN}%"],"name":"admin","secret":"changeme","type":"admin"}],"type":"memory"}` | directory - with name memory (from: directory/internal.yaml) | config.directory.memory.disable | bool | `false` | overwrite me, if not wanted | config.global.shared-map.capacity | int | `10` | global shared-map capacity (from: common/server.toml) | config.global.shared-map.shard | int | `32` | global shared-map shard (from: common/server.toml) | config.global.thread-pool | string | `nil` | global thead-pool (from: common/server.toml) | config.global.tracing | object | `{"level":"info","method":"stdout"}` | global tracing (from: common/tracing.toml) | config.imap.auth.allow-plain-text | bool | `false` | imap auth allow-plain-text (from: imap/settings.toml) | config.imap.auth.max-failures | int | `3` | imap auth max-failures(from: imap/settings.toml) | config.imap.folders.name.shared | string | `"Shared Folders"` | imap folders name shared (from: imap/settings.toml) | config.imap.protocol.uidplus | bool | `false` | imap protocol uidplus (from: imap/settings.toml) | config.imap.rate-limit.concurrent | int | `6` | imap rate-limit concurrent (from: imap/settings.toml) | config.imap.rate-limit.requests | string | `"2000/1m"` | imap rate-limit requests (from: imap/settings.toml) | config.imap.request.max-size | int | `52428800` | imap request max-size (from: imap/settings.toml) | config.imap.timeout.anonymous | string | `"1m"` | imap timeout anonymous (from: imap/settings.toml) | config.imap.timeout.authenticated | string | `"30m"` | imap timeout authenticated (from: imap/settings.toml) | config.imap.timeout.idle | string | `"30m"` | imap timeout idle (from: imap/settings.toml) | config.jmap.directory | string | `"%{DEFAULT_DIRECTORY}%"` | jmap-directory (from: jmap/auth.yaml) | config.jmap.email | object | `{"max-attachment-size":50000000,"max-size":75000000,"parse":{"max-items":10}}` | jmap-email | config.jmap.event-source | object | `{"throttle":"1s"}` | jmap-event-source | config.jmap.mailbox | object | `{"max-depth":10,"max-name-length":255}` | jmap-mailbox | config.jmap.principal | object | `{"allow-lookups":true}` | jmap-principal | config.jmap.protocol | object | `{"changes":{"max-results":5000},"get":{"max-objects":500},"query":{"max-results":5000},"request":{"max-calls":16,"max-concurrent":4,"max-size":10000000},"set":{"max-objects":500},"upload":{"max-concurrent":4,"max-size":50000000,"quota":{"files":1000,"size":50000000},"ttl":"1h"}}` | jmap-protocol (from: jmap/protocol.yaml) | config.jmap.push | object | `{"attempts":{"interval":"1m","max":3},"max-total":100,"retry":{"interval":"1s"},"throttle":"1ms","timeout":{"request":"10s","verify":"1s"}}` | jmap-push (from: jmap/push.yaml) | config.jmap.rate-limit | object | `{"account":"1000/1m","anonymous":"100/1m","authentication":"10/1m","cache":{"size":1024},"use-forwarded":true}` | jmap-rate-limit (from: jmap/ratelimit.yaml) | config.jmap.session | object | `{"cache":{"size":100,"ttl":"1h"},"purge":{"frequency":"0 3 *"}}` | jmap-session (from: jmap/auth.yaml) | config.jmap.web-sockets | object | `{"heartbeat":"1m","throttle":"1s","timeout":"10m"}` | jmap-web-sockets (from: jmap/websocket.yaml) | config.macros | object | `{"default_directory":"memory","default_domain":"__DOMAIN__","default_store":"sqlite","host":"__HOST__"}` | macros (from: config.toml) | config.oauth.auth | object | `{"max-attempts":3}` | oauth - auth | config.oauth.cache | object | `{"size":128}` | oauth - cache | config.oauth.expiry | object | `{"auth-code":"10m","refresh-token":"30d","refresh-token-renew":"4d","token":"1h","user-code":"30m"}` | oauth - expiry | config.oauth.key | string | `"__OAUTH_KEY__"` | oauth - key | config.queue.hash | int | `64` | queue-hash | config.queue.outbound | object | `{"ip-strategy":"ipv4-then-ipv6","limits":{"multihomed":2,"mx":7},"next-hop":[{"if":"rcpt-domain","in-list":"%{DEFAULT_DIRECTORY}%/domains","then":"local"},{"else":false}],"timeouts":{"connect":"3m","data":"10m","ehlo":"3m","greeting":"3m","mail-from":"3m","mta-sts":"2m","rcpt-to":"3m","tls":"2m"},"tls":{"allow-invalid-certs":false,"dane":"optional","mta-sts":"optional","starttls":"require"}}` | queue-outbound | config.queue.path | string | `"/data/queue"` | queue-path | config.queue.schedule | object | `{"expire":"5d","notify":["1d","3d"],"retry":["2m","5m","10m","15m","30m","1h","2h"]}` | queue-schedule | config.report.analysis | object | `{"addresses":["dmarc@*","abuse@*","postmaster@*"],"forward":true}` | report-analysis | config.report.dkim | object | `{"from-address":"noreply-dkim@%{DEFAULT_DOMAIN}%","from-name":"Report Subsystem","send":"1/1d","sign":["rsa"],"subject":"DKIM Authentication Failure Report"}` | report-dkim | config.report.dmarc | object | `{"aggregate":{"from-address":"noreply-dmarc@%{DEFAULT_DOMAIN}%","from-name":"DMARC Report","max-size":26214400,"org-name":"%{DEFAULT_DOMAIN}%","send":"daily","sign":["rsa"]},"from-address":"noreply-dmarc@%{DEFAULT_DOMAIN}%","from-name":"Report Subsystem","send":"1/1d","sign":["rsa"],"subject":"DMARC Authentication Failure Report"}` | report-dmarc | config.report.dmarc.aggregate.max-size | int | `26214400` | default: 25 mb | config.report.dsn | object | `{"from-address":"MAILER-DAEMON@%{DEFAULT_DOMAIN}%","from-name":"Mail Delivery Subsystem","sign":["rsa"]}` | report-dsn | config.report.hash | int | `64` | report-hash | config.report.path | string | `"/data/reports"` | report-path | config.report.spf | object | `{"from-address":"noreply-spf@%{DEFAULT_DOMAIN}%","from-name":"Report Subsystem","send":"1/1d","sign":["rsa"],"subject":"SPF Authentication Failure Report"}` | report-spf | config.report.tls | object | `{"aggregate":{"from-address":"noreply-tls@%{DEFAULT_DOMAIN}%","from-name":"TLS Report","max-size":26214400,"org-name":"%{DEFAULT_DOMAIN}%","send":"daily","sign":["rsa"]}}` | report-tls | config.report.tls.aggregate.max-size | int | `26214400` | default: 25 mb | config.resolver.attempts | int | `2` | resolver-attempts | config.resolver.cache | object | `{"ipv4":1024,"ipv6":1024,"mta-sts":1024,"mx":1024,"ptr":1024,"tlsa":1024,"txt":2048}` | resolver-cache | config.resolver.concurrency | int | `2` | resolver-concurrency | config.resolver.preserve-intermediates | bool | `true` | resolver-preserve-intermediates | config.resolver.public-suffix | list | `["https://publicsuffix.org/list/public_suffix_list.dat","file:///opt/stalwart-mail/etc/spamfilter/maps/suffix_list.dat.gz"]` | resolver-public-suffix | config.resolver.timeout | string | `"5s"` | resolver-timeout | config.resolver.try-tcp-on-error | bool | `true` | resolver-try-tcp-on-error | config.resolver.type | string | `"system"` | resolver-type | config.server.hostname | string | `"%{HOST}%"` | server hostname (from: common/server.toml) | config.server.listener | object | `{"http":{"bind":["[::]:80"],"protocol":"jmap","url":"https://%{HOST}%"},"imap":{"bind":["[::]:143"],"protocol":"imap"},"imaps":{"bind":["[::]:993"],"protocol":"imap","tls":{"implicit":true}},"sieve":{"bind":["[::]:4190"],"protocol":"managesieve","tls":{"implicit":true}},"smtp":{"bind":["[::]:25"],"protocol":"smtp"},"smtp-submission":{"bind":["[::]:587"],"protocol":"smtp"},"smtps":{"bind":["[::]:465"],"protocol":"smtp","tls":{"implicit":true}}}` | server listener | config.server.listener.http | object | `{"bind":["[::]:80"],"protocol":"jmap","url":"https://%{HOST}%"}` | jmap/listener.yaml | config.server.listener.imap | object | `{"bind":["[::]:143"],"protocol":"imap"}` | server listener with name imap (from: imap/listener.toml) | config.server.listener.imaps | object | `{"bind":["[::]:993"],"protocol":"imap","tls":{"implicit":true}}` | server listener with name imaps (from: imap/listener.toml) | config.server.listener.sieve | object | `{"bind":["[::]:4190"],"protocol":"managesieve","tls":{"implicit":true}}` | server listener with name sieve (from: imap/listener.toml) | config.server.run-as.group | string | `"stalwart-mail"` | server run-as group (from: common/server.toml) | config.server.run-as.user | string | `"stalwart-mail"` | server run-as user (from: common/server.toml) | config.server.security.blocked-networks | object | `{}` | server security blocked-networks (from: common/server.toml) | config.server.security.fail2ban | string | `"100/1d"` | server security fail2ban (from: common/server.toml) | config.server.socket.backlog | int | `1024` | server socket backlog (from: common/server.toml) | config.server.socket.linger | int | `1` | server socket linger (from: common/server.toml) | config.server.socket.nodelay | bool | `true` | server socket nodelay (from: common/server.toml) | config.server.socket.recv-buffer-size | int | `65535` | server socket recv-buffer-size (from: common/server.toml) | config.server.socket.reuse-addr | bool | `true` | server socket reuse-addr (from: common/server.toml) | config.server.socket.reuse-port | bool | `false` | server socket reuse-port (from: common/server.toml) | config.server.socket.send-buffer-size | int | `65535` | server socket send-buffer-size (from: common/server.toml) | config.server.socket.tos | int | `1` | server socket tos (from: common/server.toml) | config.server.socket.ttl | int | `3600` | server socket ttl (from: common/server.toml) | config.server.tls.acme | string | `nil` | server tls acme (from: common/tls.toml) example: "letsencrypt" | config.server.tls.certificate | string | `"default"` | server tls certificate (from: common/tls.toml) | config.server.tls.ciphers | string | `nil` | server tls #ciphers (from: common/tls.toml) example: [ "TLS13_AES_256_GCM_SHA384", "TLS13_AES_128_GCM_SHA256", "TLS13_CHACHA20_POLY1305_SHA256", "TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384", "TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256", "TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256", "TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384", "TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256", "TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256"] | config.server.tls.enable | bool | `true` | server tls enable (from: common/tls.toml) | config.server.tls.ignore-client-order | bool | `true` | server tls ignore-client-order (from: common/tls.toml) | config.server.tls.implicit | bool | `false` | server tls implicit (from: common/tls.toml) | config.server.tls.protocols | string | `nil` | server tls protocols (from: common/tls.toml) example: ["TLSv1.2", "TLSv1.3"] | config.server.tls.sni | string | `nil` | server tls sni (from: common/tls.toml) example: [{subject: "", certificate: ""}] | config.server.tls.timeout | string | `"1m"` | server tls timeout (from: common/tls.toml) | config.sieve.trusted.from-addr | string | `"no-reply@%{DEFAULT_DOMAIN}%"` | sieve trusted from-addr (from: common/sieve.toml) | config.sieve.trusted.from-name | string | `"Automated Message"` | sieve trusted from-name (from: common/sieve.toml) | config.sieve.trusted.hostname | string | `"%{HOST}%"` | sieve trusted hostname (from: common/sieve.toml) | config.sieve.trusted.limits.cpu | int | `1048576` | sieve trusted limits cpu (from: common/sieve.toml) | config.sieve.trusted.limits.duplicate-expiry | string | `"7d"` | sieve trusted limits duplicate-expiry (from: common/sieve.toml) | config.sieve.trusted.limits.nested-includes | int | `5` | sieve trusted limits nested-includes (from: common/sieve.toml) | config.sieve.trusted.limits.out-messages | int | `5` | sieve trusted limits out-messages (from: common/sieve.toml) | config.sieve.trusted.limits.received-headers | int | `50` | sieve trusted limits received-headers (from: common/sieve.toml) | config.sieve.trusted.limits.redirects | int | `3` | sieve trusted limits redirects (from: common/sieve.toml) | config.sieve.trusted.no-capability-check | bool | `true` | sieve trusted no-capability-check (from: common/sieve.toml) | config.sieve.trusted.return-path | string | `""` | sieve trusted return-path (from: common/sieve.toml) | config.sieve.trusted.scripts.connect | string | `nil` | sieve trusted scripts connect (from: common/sieve.toml) | config.sieve.trusted.scripts.ehlo | string | `nil` | sieve trusted scripts ehlo (from: common/sieve.toml) | config.sieve.trusted.scripts.mail | string | `nil` | sieve trusted scripts mail (from: common/sieve.toml) | config.sieve.trusted.sign | list | `["rsa"]` | sieve trusted sign (from: common/sieve.toml) | config.sieve.untrusted.default-expiry.duplicate | string | `"7d"` | sieve untrusted default-expiry duplicate (from: common/sieve.toml) | config.sieve.untrusted.default-expiry.vacation | string | `"30d"` | sieve untrusted default-expiry vacation (from: common/sieve.toml) | config.sieve.untrusted.disable-capabilities | list | `[]` | sieve untrusted disable-capabilities (from: common/sieve.toml) | config.sieve.untrusted.limits.cpu | int | `5000` | sieve untrusted limit cpu (from: common/sieve.toml) | config.sieve.untrusted.limits.header-size | int | `1024` | sieve untrusted limit header-size (from: common/sieve.toml) | config.sieve.untrusted.limits.includes | int | `3` | sieve untrusted limit includes (from: common/sieve.toml) | config.sieve.untrusted.limits.local-variables | int | `128` | sieve untrusted limit local-variables (from: common/sieve.toml) | config.sieve.untrusted.limits.match-variables | int | `30` | sieve untrusted limit match-variables (from: common/sieve.toml) | config.sieve.untrusted.limits.max-scripts | int | `256` | sieve untrusted limit max-scripts (from: common/sieve.toml) | config.sieve.untrusted.limits.name-length | int | `512` | sieve untrusted limit name-length (from: common/sieve.toml) | config.sieve.untrusted.limits.nested-blocks | int | `15` | sieve untrusted limit nested-blocks (from: common/sieve.toml) | config.sieve.untrusted.limits.nested-foreverypart | int | `3` | sieve untrusted limit nested-foreverypart (from: common/sieve.toml) | config.sieve.untrusted.limits.nested-includes | int | `3` | sieve untrusted limit nested-includes (from: common/sieve.toml) | config.sieve.untrusted.limits.nested-tests | int | `15` | sieve untrusted limit nested-tests (from: common/sieve.toml) | config.sieve.untrusted.limits.outgoing-messages | int | `3` | sieve untrusted limit outgoing-messages (from: common/sieve.toml) | config.sieve.untrusted.limits.received-headers | int | `10` | sieve untrusted limit received-headers (from: common/sieve.toml) | config.sieve.untrusted.limits.redirects | int | `1` | sieve untrusted limit redirects (from: common/sieve.toml) | config.sieve.untrusted.limits.script-size | int | `102400` | sieve untrusted limit script-size (from: common/sieve.toml) | config.sieve.untrusted.limits.string-length | int | `4096` | sieve untrusted limit string-length (from: common/sieve.toml) | config.sieve.untrusted.limits.variable-name-length | int | `32` | sieve untrusted limit variable-name-length (from: common/sieve.toml) | config.sieve.untrusted.limits.variable-size | int | `4096` | sieve untrusted limit variable-size (from: common/sieve.toml) | config.sieve.untrusted.notification-uris | list | `["mailto"]` | sieve untrusted notification-uris (from: common/sieve.toml) | config.sieve.untrusted.protected-headers | list | `["Original-Subject","Original-From","Received","Auto-Submitted"]` | sieve untrusted protected-headers (from: common/sieve.toml) | config.sieve.untrusted.vacation.default-subject | string | `"Automated reply"` | sieve untrusted vacation default-subject (from: common/sieve.toml) | config.sieve.untrusted.vacation.subject-prefix | string | `"Auto: "` | sieve untrusted vacation subject-prefix (from: common/sieve.toml) | config.signature.rsa | object | `{"algorithm":"rsa-sha256","canonicalization":"relaxed/relaxed","domain":"%{DEFAULT_DOMAIN}%","headers":["From","To","Date","Subject","Message-ID"],"private-key":"file://opt/stalwart-mail/etc/dkim/private.key","report":true,"selector":"stalwart","set-body-length":false}` | signature-rsa | config.storage.blob | string | `"%{DEFAULT_STORE}%"` | storage blob (from: common/store.toml) | config.storage.cluster.node-id | string | `nil` | storage - cluster - node-id (from: common/store.toml) | config.storage.data | string | `"%{DEFAULT_STORE}%"` | storage data (from: common/store.toml) | config.storage.directory | string | `"%{DEFAULT_DIRECTORY}%"` | storage directory (from: common/store.toml) | config.storage.encryption.append | bool | `false` | storage encryption append (from: common/store.toml) | config.storage.encryption.enable | bool | `true` | storage encryption enable (from: common/store.toml) | config.storage.fts | string | `"%{DEFAULT_STORE}%"` | storage fts (from: common/store.toml) BROKEN / TODO see: https://github.com/stalwartlabs/mail-server/issues/211 | config.storage.fts-table-duplicated-workaround.default-language | string | `"en"` | storage - fts - default-language (from: common/store.toml) | config.storage.lookup | string | `"%{DEFAULT_STORE}%"` | storage lookup (from: common/store.toml) | config.storage.spam.header | string | `"X-Spam-Status: Yes"` | storage spam header (from: common/store.toml) | config.store.fs | object | `{"depth":2,"disable":false,"path":"/data/blobs","purge":{"frequency":"0 3 *"},"type":"fs"}` | store - with name fs | config.store.fs.disable | bool | `false` | overwrite me, if not wanted | config.store.sqlite | object | `{"disable":false,"path":"/data/index.sqlite3","purge":{"frequency":"0 3 *"},"query":{"domains":"SELECT 1 FROM emails WHERE address LIKE '%@' || ? LIMIT 1","emails":"SELECT address FROM emails WHERE name = ? AND type != 'list' ORDER BY type DESC, address ASC","expand":"SELECT p.address FROM emails AS p JOIN emails AS l ON p.name = l.name WHERE p.type = 'primary' AND l.address = ? AND l.type = 'list' ORDER BY p.address LIMIT 50","members":"SELECT member_of FROM group_members WHERE name = ?","name":"SELECT name, type, secret, description, quota FROM accounts WHERE name = ? AND active = true","recipients":"SELECT name FROM emails WHERE address = ?","verify":"SELECT address FROM emails WHERE address LIKE '%' || ? || '%' AND type = 'primary' ORDER BY address LIMIT 5"},"type":"sqlite"}` | store - with name sqlite | config.store.sqlite.disable | bool | `false` | overwrite me, if not wanted | fullnameOverride | string | `""` | | global.image.pullPolicy | string | `nil` | if set it will overwrite all pullPolicy | global.image.registry | string | `nil` | if set it will overwrite all registry entries | image.pullPolicy | string | `"IfNotPresent"` | | image.registry | string | `"docker.io"` | | image.repository | string | `"stalwartlabs/mail-server"` | | image.tag | string | `""` | Overrides the image tag whose default is the chart appVersion. | imagePullSecrets | list | `[]` | | ingress.annotations | object | `{}` | | ingress.className | string | `""` | | ingress.enabled | bool | `false` | | ingress.hosts[0].host | string | `"chart-example.local"` | | ingress.hosts[0].paths[0].path | string | `"/"` | | ingress.hosts[0].paths[0].pathType | string | `"ImplementationSpecific"` | | ingress.tls | list | `[]` | | nameOverride | string | `""` | | nodeSelector | object | `{}` | | persistence.accessMode | string | `"ReadWriteOnce"` | accessMode | persistence.annotations | object | `{}` | | persistence.enabled | bool | `true` | Enable persistence using Persistent Volume Claims ref: http://kubernetes.io/docs/user-guide/persistent-volumes/ | persistence.existingClaim | string | `nil` | A manually managed Persistent Volume and Claim Requires persistence.enabled: true If defined, PVC must be created manually before volume will be bound | persistence.hostPath | string | `nil` | Do not create an PVC, direct use hostPath in Pod | persistence.size | string | `"10Gi"` | size | persistence.storageClass | string | `nil` | Persistent 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) | podAnnotations | object | `{}` | | podLabels | object | `{}` | | podSecurityContext | object | `{}` | | replicaCount | int | `1` | | resources | object | `{}` | | securityContext | object | `{}` | | service.annotations | object | `{}` | | service.ipFamilies[0] | string | `"IPv4"` | | service.ipFamilyPolicy | string | `"SingleStack"` | other option is RequireDualStack | service.ports.http | int | `80` | | service.ports.imap | int | `143` | | service.ports.imaps | int | `993` | | service.ports.sieve | int | `4190` | | service.ports.smtp | int | `25` | | service.ports.smtp-submission | int | `587` | | service.ports.smtps | int | `465` | | service.type | string | `"ClusterIP"` | | serviceAccount.annotations | object | `{}` | | serviceAccount.automount | bool | `true` | | serviceAccount.create | bool | `false` | | serviceAccount.name | string | `""` | | tolerations | list | `[]` | | traefik.enabled | bool | `false` | | traefik.ports.http | string | `"websecure"` | | traefik.ports.imaps | string | `"imaps"` | | traefik.ports.smtps | string | `"smtps"` | | volumeMounts | list | `[]` | | volumes | list | `[]` | |=== Autogenerated from chart metadata using https://github.com/norwoodj/helm-docs[helm-docs]