Skip to content

Latest commit

 

History

40 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Postfix relay running in Kubernetes

This repository has an example of a postfix relay running in Kubernetes using a helm chart.

Build Docker image

You can build the Docker image locally

# For local build
docker build -t eldada.jfrog.io/docker/postfix-relay:0.9 Docker/

# Multi arch build and push
docker buildx build --platform linux/amd64,linux/arm64 -t eldada.jfrog.io/docker/postfix-relay:0.9 Docker/p --push

Run locally with Docker

Run the postfix relay locally for testing

# Need to set SMTP connection details
export SMTP="[smtp.mailgun.org]:587"
export USERNAME_TEST=<your smtp username>
export PASSWORD_TEST=<your smtp password>

# Optional custom configuration to add/override in /etc/postfix/main.cf (delimited by a ";")
export POSTFIX_CUSTOM_CONFIG="key1 = value1;key2 = value2;key3 = value3"

# Set list of allowed networks
export TX_SMTP_RELAY_NETWORKS='10.0.0.0/8,127.0.0.0/8,172.17.0.0/16,192.0.0.0/8'

docker run --rm -d --name postfix-relay -p 2525:25 \
	-e TX_SMTP_RELAY_HOST="${SMTP}" \
	-e TX_SMTP_RELAY_MYHOSTNAME=my.local \
	-e TX_SMTP_RELAY_USERNAME=${USERNAME_TEST} \
	-e TX_SMTP_RELAY_PASSWORD=${PASSWORD_TEST} \
	-e TX_SMTP_RELAY_NETWORKS=${TX_SMTP_RELAY_NETWORKS} \
	-e POSTFIX_CUSTOM_CONFIG="${POSTFIX_CUSTOM_CONFIG}" \
	eldada.jfrog.io/docker/postfix-relay:0.9

Test sending mail

  1. Connect to running container on port 2525
telnet localhost 2525
  1. Edit the following with your details and paste in your terminal
helo localhost
mail from: noreply@yourhost.com
rcpt to: you@your.co
data
Subject: Subject here...
The true story of swans singing Pink Floyd. 
.
quit
  1. You should see the following
220 tx-smtp-relay.yourhost.com ESMTP Postfix
helo localhost
250 tx-smtp-relay.yourhost.com
mail from: noreply@yourhost.com
250 2.1.0 Ok
rcpt to: you@your.co
250 2.1.5 Ok
data
354 End data with <CR><LF>.<CR><LF>
Subject: Subject here...
The true story of swans singing Pink Floyd. 
.
250 2.0.0 Ok: queued as 982FF53C
quit
221 2.0.0 Bye
Connection closed by foreign host
  1. Check the inbox of you@your.co and see you got the email.

Deploy Helm Chart

The Helm Chart in helm/postfix directory can be used to deploy the postfix-relay into your Kubernetes cluster.

Create a custom-values.yaml with the configuration details

smtp:
  relayHost: "[smtp.mailgun.org]:587"
  relayMyhostname: <your smtp hostname>
  relayUsername: <your smtp username>
  relayPassword: <your smtp password>
  relayNetworks: '10.0.0.0/8,127.0.0.0/8,172.17.0.0/16,192.0.0.0/8'

Deploy postfix

helm upgrade --install postfix-relay helm/postfix -f custom-values.yaml

Postfix Metrics exporter

An optional postfix-exporter sidecar can be deployed for exposing postfix metrics. This is using the work from https://github.com/kumina/postfix_exporter.

To enable the exporter sidecar, update your custom-values.yaml file and add

# Enable the postfix-exporter sidecar
exporter:
  enabled: true

# Enable a ServiceMonitor object for Prometheus scraping
serviceMonitor:
  enabled: true

Deploy postfix

helm upgrade --install postfix-relay helm/postfix -f custom-values.yaml

Thanks

The work in this repository is based on

About

Run postfix in a Docker container and in Kubernetes with helm

Topics

Resources

Stars

39 stars

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages