Sign inSign up

bambucha/exim-relay

By bambucha

Updated almost 9 years ago

Exim relay Docker image based on Alpine Linux and support DKIM

Image
2

100K+

bambucha/exim-relay repository overview

Exim Relay Docker Image

GitHub Tag Layers License Automated Build Docker Pulls

Exim relay Docker image based on Alpine Linux and support DKIM.

Docker Run

Create docker volume for dkim keys:

docker volume create --name=smtp-dkim

Create docker container:

docker run \
    -d \
    --name smtp \
    --restart=always \
    -u exim \
    -p 25:25 \
    -v smtp-dkim:/dkim \
    -h mail.example.com \
    -e DKIM_DOMAINS=example.com \
    bambucha/exim-relay

Docker Compose

version: "2"
services:
  smtp:
    restart: always
    image: bambucha/exim-relay
    user: exim
    ports:
      - "25:25"
    volumes:
      - smtp-dkim:/dkim
    hostname: mail.example.com
    environment:
      - RELAY_FROM_HOSTS=10.0.0.0/8:172.16.0.0/12:192.168.0.0/16
      - DKIM_KEY_SIZE=1024
      - DKIM_SELECTOR=dkim
      - DKIM_SIGN_HEADERS=Date:From:To:Subject:Message-ID
      - DKIM_DOMAINS=example.com
volumes:
  smtp-dkim:
    driver: local

Reverse PTR

Create Reverse PTR DNS record:

1.0.168.192.in-addr.arpa. 300 IN PTR mail.example.com.

SPF

Create SPF DNS record:

example.com. 300 IN TXT "v=spf1 a mx -all"

DKIM

Get dkim public key with docker exec:

docker exec -it smtp cat /dkim/example.com.pub

or get dkim public key with docker-compose exec:

docker-compose exec smtp cat /dkim/example.com.pub

or get dkim public key from docker volume:

sudo cat /var/lib/docker/volumes/smtp-dkim/_data/example.com.pub

Create DKIM DNS record:

dkim._domainkey.example.com. 300 IN TXT "v=DKIM1; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCqGPU5V6weixC6zPq+muZ2q0F7VkAfIV37ZjmZIK0Y0Kiz7ZiBIOjcVS958ncFnyqleSroqPV7ftgAykbxkIX/Rnq58VkxsCk7vO0nav0/cF0VlTP7/Pxe2PO4BYRW53rWUI6iOi7Y49q/1zWgcEa+fqc8FUqFvDebKtkeQy84BwIDAQAB"

Debug

Print a count of the messages in the queue:

docker exec -it smtp exim -bpc

Print a listing of the messages in the queue (time queued, size, message-id, sender, recipient):

docker exec -it smtp exim -bp

Remove all frozen messages:

docker exec -it smtp exim -bpu | grep frozen | awk {'print $3'} | xargs exim -Mrm

Test how exim will route a given address:

docker exec -it smtp exim -bt [email protected]
[email protected]
  router = dnslookup, transport = remote_smtp
  host gmail-smtp-in.l.google.com      [64.233.164.27] MX=5
  host alt1.gmail-smtp-in.l.google.com [64.233.187.27] MX=10
  host alt2.gmail-smtp-in.l.google.com [173.194.72.27] MX=20
  host alt3.gmail-smtp-in.l.google.com [74.125.25.27]  MX=30
  host alt4.gmail-smtp-in.l.google.com [74.125.198.27] MX=40

Display all of Exim's configuration settings:

docker exec -it smtp exim -bP

View a message's headers:

docker exec -it smtp exim -Mvh <message-id>

View a message's body:

docker exec -it smtp exim -Mvb <message-id>

View a message's logs:

docker exec -it smtp exim -Mar <message-id>

Remove a message from the queue:

docker exec -it smtp exim -Mrm <message-id> [ <message-id> ... ]

Send a message:

echo "Test message" | mailx -v -r "[email protected]" -s "Test subject" -S smtp="localhost:25" [email protected]

License

The MIT License

Tag summary

Content type

Image

Digest

Size

5 MB

Last updated

almost 9 years ago

docker pull bambucha/exim-relay