Zpět na domů

Postfix DKIM Docker: nastavení serveru pouze pro odesílání

Průvodce nasazením pouze odesílacího Postfixu s DKIM v Docker kontejneru na Ubuntu 22.04. Pokrývá instalaci Dockeru, Certbotu, DNS záznamy SPF/DKIM, rDNS a testování doručitelnosti. Vhodný pro middle/senior vývojáře.

Docker Postfix s DKIM: úplný průvodce pro vývojáře
Advertisement 728x90

# Nasazení Postfixu pouze pro odesílání s DKIM v Dockeru na Ubuntu

Na Ubuntu 22.04 s 1 GB RAM a 1 vCPU se spustí kontejner boky/postfix s OpenDKIM a TLS. Server odesílá e-maily pouze s autentizací nebo z localhostu na port 587. Automatická generace DKIM klíčů, montování certifikátů Let's Encrypt. Požadavky: doména v Cloudflare, VPS s otevřeným portem 25 u poskytovatele.

Příprava serveru

Aktualizujte balíčky:

apt update && apt upgrade -y

Odstraňte staré Docker balíčky:

Google AdInline article slot
for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done

Nainstalujte oficiální Docker:

apt update
apt install ca-certificates curl
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
chmod a+r /etc/apt/keyrings/docker.asc
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
apt update && apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

Nainstalujte Certbot:

apt install certbot

Přidejte A záznam do Cloudflare: mail → IP VPS, proxy vypnuto. Vydajte certifikát:

Google AdInline article slot
certbot certonly --standalone -d mail.yourdomain.com

Vytvořte hook pro restart kontejneru při obnově:

nano /etc/letsencrypt/renewal-hooks/post/restart-postfix.sh

Obsah:

#!/bin/bash
docker restart postfix

Udělejte spustitelným: chmod +x /etc/letsencrypt/renewal-hooks/post/restart-postfix.sh.

Google AdInline article slot

Vytvoření uživatele a docker-compose

Vytvořte neprivilegovaného uživatele:

useradd -m emailuser -G docker -s /bin/bash
passwd emailuser
su emailuser

Vytvořte docker-compose.yml:

services:
  postfix:
    image: boky/postfix
    container_name: postfix
    restart: unless-stopped
    ports:
      - "587:587"
    volumes:
      - ./dkim:/etc/opendkim/keys
      - /etc/letsencrypt/live/mail.yourdomain.com/fullchain.pem:/etc/opendkim/keys/mail.crt:ro
      - /etc/letsencrypt/live/mail.yourdomain.com/privkey.pem:/etc/opendkim/keys/mail.key:ro
    environment:
      HOSTNAME: mail.yourdomain.com
      DOMAIN: yourdomain.com
      DKIM_SELECTOR: mail
      DKIM_DOMAINS: yourdomain.com
      DKIM_KEY_LENGTH: 2048
      ENABLE_DKIM: 1
      ENABLE_TLS: 1
      TLS_KEY: /etc/opendkim/keys/mail.key
      TLS_CERT: /etc/opendkim/keys/mail.crt
      SMTP_USER: [email protected]|password
      RELAY_NETWORKS: 127.0.0.1/32
      FORCE_HELO: 1
      LOG_TO_STDOUT: 1
      ALLOWED_SENDER_DOMAINS: mail.yourdomain.com
      DKIM_AUTOGENERATE: "true"

Spusťte: docker compose up -d. Po generaci klíčů odstraňte DKIM_AUTOGENERATE.

Konfigurace DNS

V ./dkim najděte .txt soubor s veřejným klíčem. Vyjměte řetězec ve tvaru:

v=DKIM1; h=sha256; k=rsa; s=email; p=MNOGO_SIMVOLOV

(spojte části klíče bez závorek/uvozovek). Přidejte TXT do Cloudflare:

  • Name: mail._domainkey
  • Content: řetězec klíče

SPF záznam pro doménu:

  • Name: yourdomain.com
  • Content: v=spf1 a mx ip4:YOUR_VPS_IP -all

rDNS a port 25

Obraťte se na poskytovatele:

  • Otevřete odchozí port 25.
  • Nastavte rDNS pro mail.yourdomain.com → IP VPS.

Testování

Zkontrolujte na mail-tester.com nebo appmaildev.com. Vstupte do kontejneru:

docker exec -it postfix bash
echo -e "Subject: DKIM Test\n\nThis is a test message" | sendmail -f [email protected] [email protected]

Očekávaný výsledek: 10/10 na testerech, e-maily v inboxu Gmail.

  • DKIM: automatická generace 2048-bit klíčů.
  • SPF: omezení odesílání podle IP.
  • TLS: Let's Encrypt s autoobnovou.
  • Auth: SMTP_USER pro relay.

Co je důležité

  • Kontejner boky/postfix obsahuje Postfix + OpenDKIM připravené k použití.
  • Montujte volumes pro klíče a certifikáty s :ro pro bezpečnost.
  • RELAY_NETWORKS=127.0.0.1/32 blokuje externí odesílání bez autentizace.
  • Po generaci DKIM vypněte AUTOGENERATE.
  • rDNS je klíčové pro doručitelnost u velkých poskytovatelů.

— Editorial Team

Advertisement 728x90

Číst dál