Skip to content

feat(new): add docker-mailserver helm chart v5.1.1 - #102

Merged
ashish1099 merged 1 commit into
masterfrom
feat/docker-mailserver
Jul 23, 2026
Merged

feat(new): add docker-mailserver helm chart v5.1.1#102
ashish1099 merged 1 commit into
masterfrom
feat/docker-mailserver

Conversation

@MAVRICK-1

@MAVRICK-1 MAVRICK-1 commented Jul 17, 2026

Copy link
Copy Markdown
Member

Adds the docker-mailserver Helm chart (IMAP + bundled Postfix for outbound mail) with sane in-cluster defaults, plus an optional Cilium egress gateway for a stable outbound IP so SPF passes.

Also includes two things found while running this in production:

  • tls.enforceOutbound (default off) - lets you require TLS on outbound mail instead of Postfix's default opportunistic behavior, for anyone who wants stricter delivery.
  • service.exposePlaintextImap (default false) - stops plaintext IMAP (port 143) from being exposed externally alongside TLS IMAPS (993). This was flagged by an external security report against a real deployment using this chart - plaintext IMAP had no business being reachable from outside. Only TLS IMAPS is exposed now unless you explicitly opt in.

@MAVRICK-1
MAVRICK-1 force-pushed the feat/docker-mailserver branch from cabf8f1 to 3604320 Compare July 18, 2026 19:10
Adds the docker-mailserver chart (IMAP + bundled Postfix for outbound
mail), with sane in-cluster defaults, plus an optional Cilium egress
gateway template for a stable outbound IP (SPF alignment) - since
docker-mailserver bundles its own Postfix, this is the one place mail
actually leaves the cluster for a deployment using this chart, not a
separate relay chart.

Also patches the vendored subchart's service.yaml to support
externalIPs - the upstream template never read that value at all, so
it was being silently ignored.

Egress policy's pod-selector label key is configurable
(egressGateway.podSelectorLabelKey, defaults to 'release' - this
chart's actual convention). Getting this wrong means the policy
silently matches nothing; confirmed happening in production, causing
a real SPF failure until caught and fixed.

Adds tls.enforceOutbound (default off) for anyone who wants to require
TLS on outbound delivery instead of Postfix's default opportunistic
behaviour.

Adds service.exposePlaintextImap (default false) - plaintext IMAP
(143) was included in the Service unconditionally whenever IMAP is
enabled, alongside TLS IMAPS (993), meaning it was reachable from
outside the cluster on any deployment using a LoadBalancer/NodePort
service. Flagged by an external security report against a real
deployment using this chart. Only IMAPS is exposed now unless you
explicitly opt in.

Signed-off-by: Rishi <rishi@obmondo.com>
@MAVRICK-1
MAVRICK-1 force-pushed the feat/docker-mailserver branch from 3604320 to 7f68d44 Compare July 22, 2026 05:24
@ashish1099
ashish1099 merged commit ddf5ebe into master Jul 23, 2026
7 checks passed
@ashish1099
ashish1099 deleted the feat/docker-mailserver branch July 23, 2026 16:39
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants