Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/devture/exim-relay
🐳 A lightweight non-root Docker image for an Exim mail relay, based on Alpine Linux.
https://github.com/devture/exim-relay
docker-image email exim
Last synced: about 2 hours ago
JSON representation
🐳 A lightweight non-root Docker image for an Exim mail relay, based on Alpine Linux.
- Host: GitHub
- URL: https://github.com/devture/exim-relay
- Owner: devture
- License: apache-2.0
- Created: 2019-01-27T15:44:59.000Z (almost 6 years ago)
- Default Branch: master
- Last Pushed: 2024-08-08T08:05:19.000Z (3 months ago)
- Last Synced: 2024-08-09T10:26:18.169Z (3 months ago)
- Topics: docker-image, email, exim
- Language: Makefile
- Homepage:
- Size: 38.1 KB
- Stars: 35
- Watchers: 8
- Forks: 34
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Docker Exim Relay Image
[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) [![GitHub Tag](https://img.shields.io/github/tag/devture/exim-relay.svg)](https://hub.docker.com/r/devture/exim-relay/) [![Docker Pulls](https://img.shields.io/docker/pulls/devture/exim-relay.svg)](https://hub.docker.com/r/devture/exim-relay/)
A lightweight Docker image for an [Exim](https://www.exim.org/) mail relay, based on the official Alpine image.
For extra security, the container runs as exim (`uid=100` and `gid=101`), not root.
This is a fork of [Industrie&Co](https://github.com/industrieco)'s wonderful (but seemingly unmaintained) [industrieco/docker-exim-relay](https://github.com/industrieco/docker-exim-relay) image.
The following changes have been done on top of it:- based on a newer Alpine release (and thus, newer exim)
- removing Received headers for mail received by exim (helps email deliverability)
## Docker
### Default setup
This will allow relay from all private address ranges and will relay directly to the internet receiving mail servers
```
docker run \
--user=100:101 \
--name smtp \
--restart always \
-e HOSTNAME=my.host.name \
-d \
-p 25:8025 \
docker.io/devture/exim-relay:SOME_TAGGED_RELEASE
```**Note**: we advise setting the hostname using a `HOSTNAME` environment variable, instead of `--hostname`. Since Docker 20.10, the latter has the side-effect of making other services on the same Docker network resolve said hostname to the in-container IP address of the mailer container. If you'd rather this hostname resolves to the actual public IP address, avoid using `--hostname`.
### Smarthost setup
To send forward outgoing email to a smart relay host
```
docker run \
--user=100:101 \
--name smtp \
--restart always \
-d \
-p 25:8025 \
-e HOSTNAME=my.host.name \
-e SMARTHOST=some.relayhost.name::587 \
-e SMTP_USERNAME=someuser \
-e SMTP_PASSWORD=password \
docker.io/devture/exim-relay:SOME_TAGGED_RELEASE
```### DKIM setup
To sign outgoing email with DKIM
```
docker run \
--user=100:101 \
--name smtp \
--restart always \
-d \
-p 25:8025 \
-e HOSTNAME=my.host.name \
-e SMARTHOST=some.relayhost.name::587 \
-e SMTP_USERNAME=someuser \
-e SMTP_PASSWORD=password \
--mount type=bind,src=/PATH/TO/THE/PRIVATE/KEY.pem,dst=/etc/exim/dkim.pem,ro \
docker.io/devture/exim-relay:SOME_TAGGED_RELEASE
```## Docker Compose
```
version: "3.7"services:
smtp:
image: docker.io/devture/exim-relay:SOME_TAGGED_RELEASE
user: 100:101
restart: always
ports:
- "25:8025"
environment:
HOSTNAME: my.host.name
SMARTHOST: some.relayhost.name::587
SMTP_USERNAME: someuser
SMTP_PASSWORD: password
```## Other Variables
###### HOSTNAME
* The hostname that is sent as part of the `HELO` message.
###### LOCAL_DOMAINS
* List (colon separated) of domains that are delivered to the local machine
* Defaults to the hostname of the local machine
* Set blank to have no mail delivered locally###### RELAY_FROM_HOSTS
* A list (colon separated) of subnets to allow relay from
* Set to "\*" to allow any host to relay - use this with RELAY_TO_DOMAINS to allow any client to relay to a list of domains
* Defaults to private address ranges: 10.0.0.0/8:172.16.0.0/12:192.168.0.0/16###### RELAY_TO_DOMAINS
* A list (colon separated) of domains to allow relay to
* Defaults to "\*" to allow relaying to all domains
* Setting both RELAY_FROM_HOSTS and RELAY_TO_DOMAINS to "\*" will make this an open relay
* Setting both RELAY_FROM_HOSTS and RELAY_TO_DOMAINS to other values will limit which clients can send and who they can send to###### RELAY_TO_USERS
* A whitelist (colon separated) of recipient email addresses to allow relay to
* This list is processed in addition to the domains in RELAY_TO_DOMAINS
* Use this for more precise whitelisting of relayable mail
* Defaults to "" which doesn't whitelist any addresses###### DISABLE_SENDER_VERIFICATION
If the environment variable is set, sender address verification will be disabled.
###### SMARTHOST
* A relay host to forward all non-local email through
###### SMTP_USERNAME
* The username for authentication to the smarthost
###### SMTP_PASSWORD
* The password for authentication to the smarthost - leave this blank to disable authenticaion
## Docker Secrets
The smarthost password can also be supplied via docker swarm secrets / rancher secrets. Create a secret called SMTP_PASSWORD and don't use the SMTP_PASSWORD environment variable
## Debugging
The logs are sent to /dev/stdout and /dev/stderr and can be viewed via docker logs
```shell
docker logs smtp
``````shell
docker logs -f smtp
```Exim commands can be run to check the status of the mail server as well
```shell
docker exec -ti smtp exim -bp
```