oneuptime/Haraka
2023-07-17 20:06:01 +01:00
..
.dockerignore
.gitignore
Dockerfile.tpl add static nodejs version 2023-02-05 14:17:56 +00:00
haraka.sh
README.md

SMTP Server Container for OneUptime

This is a simple SMTP server which is used to send bulk emails. This can be used to send email alerts to subscribers and team.

This will not work on your local machine because email sending is blocked by ISP. You need to run these on the server and test.

Run a OneUptime Haraka Docker Container

Setup Private Key (Optional)

# Unix machine


# generate private key

openssl genrsa -out private 2048

# Encode it to base64 and export it

export DKIM_PRIVATE_KEY=$(cat private | base64)

If you already have a private key, you can point the export command to it, and export as base64 encoded

Setup DKIM on DNS TXT Record (Optional)

# Unix machine

# private should point to the private key generated previously

chmod 0400 private
openssl rsa -in private -out public -pubout

# value of DKIM dns record

echo "v=DKIM1;p=$(grep -v '^-' public | tr -d '\n')"

When setting up the DKIM dns txt record (recommended), the selector should be oneuptime._domainkey then the value should be the output of the echo command

Setup DMARC and SPF DNS TXT Record (Optional)

To setup dmarc for the smtp server, you need to create a new dns record with the following values

Type Name Content
TXT _dmarc v=DMARC1; p=reject; adkim=s; aspf=r; rua=mailto:youremail; ruf=mailto:youremail; pct=100

For SPF dns record, you need to setup with appropriate values, if the ip of the smtp mail server is static, you can add that to the spf ip list

Setup tls Keys (Optional)

# Unix machine


# generate tls_cert.pem and tls_key.pem files with there keys
# this command will open a prompt for you to fill in your details

openssl req -x509 -nodes -days 2190 -newkey rsa:2048 -keyout tls_key.pem -out tls_cert.pem

# Encode your tls to base64 and export it

export TLS_KEY=$(cat tls_key.pem | base64)
export TLS_CERT=$(cat tls_cert.pem | base64)

If you already have tls_key and tls_cert for your domain, you can point the export command to the tls files to generate base64 encoded value

Build Docker Container

docker build --build-arg PORT="2525" . -t haraka:latest

Run Haraka SMTP Server

docker run -p 2525:2525 -e SMTP_USER="user@oneuptime.com" -e SMTP_PASSWORD="oneuptime" -e DOMAIN="oneuptime.com" -e DKIM_PRIVATE_KEY=$DKIM_PRIVATE_KEY -e TLS_CERT=$TLS_CERT -e TLS_KEY=$TLS_KEY  haraka:latest

The following envs are optional DKIM_PRIVATE_KEY, TLS_CERT, TLS_KEY and DOMAIN

Test

# Install swaks on Linux machine

sudo apt-get update
sudo apt-get install swaks -y

# MacOS

brew install swaks

# Test

swaks --to jude@oneuptime.com --from support@oneuptime.com --server localhost \
  --port 2525 --auth-user user@oneuptime.com --auth-password oneuptime

Check the logs for running container and see if you get a mail in your inbox.